Каков наилучший способ передать «строку данных» из одного консольного приложения C # в другое консольное приложение C #? - PullRequest
3 голосов
/ 07 октября 2008

У меня есть консольное приложение C # «App1», которое считывает строку данных из таблицы в БД SQL Server 2005. Я хочу, чтобы App1 передавал все данные в этой строке в App2, другое консольное приложение C #. Каков наилучший способ сделать это?

Моя первая (наивная) попытка была сделать это:

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"? Кроме того, порядок элементов будет жестко задан в принимающем приложении (приложение 2).

Так, каков лучший способ сделать это? Было бы целесообразно передать строку xml в App2 через командную строку?

Ура!

Ответы [ 3 ]

3 голосов
/ 07 октября 2008

Один из подходов заключается в сериализации строки в XML и ее использовании, за исключением того, что DataRow (без конструктора по умолчанию) нельзя сериализовать. Вместо этого вам нужно создать новую таблицу данных и добавить в нее эту строку.

Тогда вы можете просто сериализовать всю DataTable в XML и передать ее другому приложению, либо в качестве аргумента командной строки, либо сохранив XML в файл и передав имя файла.

Сериализация DataTable в XML довольно тривиальна благодаря методу DataTable.WriteXml .

1 голос
/ 07 октября 2008

Вы можете использовать сериализованный DataSet, чтобы легко переносить данные из одного места в другое без необходимости написания большого количества пользовательского кода, поскольку DataSet по умолчанию уже предоставляет необходимые методы (например, .WriteXML будет сериализовать DataSet в XML и записать в файл). Ваше другое приложение может затем опросить соответствующий каталог для новых файлов.

1 голос
/ 07 октября 2008

Подход с разделением пробелами хорош, если вы используете Process.Start - вам просто нужно обернуть элементы, содержащие пробелы, в кавычки - как в командной строке: cd "c: \ program files"

Если данные более сложны, чем несколько значений, то могут помочь такие подходы IPC, как удаленное взаимодействие, сокеты, WCF и т. Д. Или проще: запишите данные (возможно, в формате xml) в файл, и второе приложение загрузит данные из файла.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...