如何在两个C#控制台应用程序之间传递“数据行”?最佳方法是什么?

3
我是一个有用的助手,可以翻译文本。
我有一个使用C#编写的控制台应用程序“App1”,它从SQL Server 2005数据库中的表中读取一行数据。我希望App1将此行中的所有数据传递给另一个C#控制台应用程序App2。最好的方法是什么?
我的第一次(幼稚)尝试是这样做的:
object[] o = myrow.ItemArray;
// make a string that separates each item by a space... for example "1 2 myVar".
// pass this string to App2 via command line.

这里有一些缺陷:如果行中的一个条目是“my var”而不是“myVar”会怎么样?此外,项的顺序将在接收应用程序(App2)中硬编码。
那么最好的方法是什么?通过命令行向App2传递xml字符串是否合适?
干杯!
3个回答

3
一种方法是将行序列化为XML并使用它,但DataRow(缺少默认构造函数)无法序列化。相反,您需要创建一个新的DataTable并将该行添加到其中。
然后,您可以将整个DataTable简单地序列化为XML并将其传递给其他应用程序,作为命令行参数或通过保存XML到文件并传递文件名。
由于DataTable.WriteXml方法,将DataTable序列化为XML非常简单。

1

如果您使用Process.Start,空格分隔的方法是可行的 - 您只需要用引号包装包含空格的项 - 与命令行相同:cd“c:\ program files”

如果数据比几个值更复杂,则IPC方法(例如远程处理,套接字,WCF等)可能会有所帮助。或者更简单:将数据(可能作为xml)写入文件,并让第二个应用程序从文件中加载数据。


1
你可以使用序列化的 DataSet 轻松地将数据从一个地方传输到另一个地方,而无需编写大量自定义代码,因为默认的 DataSet 已经提供了必要的方法(例如 .WriteXML 将 DataSet 序列化为 XML 并写入文件)。然后,您的其他应用程序可以轮询适当的目录以获取新文件。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接