将“数据行”从一个 C# 控制台应用传递到另一个 C# 控制台应用的最佳方法是什么?

本文关键字:应用 控制台 是什么 方法 最佳 另一个 一个 数据行 数据 | 更新日期: 2023-09-27 17:47:21

我有一个 C# 控制台应用程序"App1",它从 SQL Server 2005 DB 中的表中读取一行数据。 我希望 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) 中硬编码。

那么最好的方法是什么呢? 通过命令行将 xml 字符串传递给 App2 是否合适?

干杯!

将“数据行”从一个 C# 控制台应用传递到另一个 C# 控制台应用的最佳方法是什么?

一种方法是将行序列化为 XML 并使用它,但 DataRow(缺少默认构造函数)无法序列化。相反,您必须创建一个新的 DataTable 并将该行添加到其中。

然后,只需将整个 DataTable 序列化为 XML,并将其传递给其他应用程序,无论是作为命令行参数,还是通过将 XML 保存到文件并传递文件名。

将DataTable序列化为XML非常简单,这要归功于DataTable.WriteXml方法。

如果您使用的是 Process.Start - 您只需要用引号包装包含空格的项目 - 与命令行相同:cd "c:''program files"

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

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