Простая сеть TCP с C # - PullRequest
       22

Простая сеть TCP с C #

1 голос
/ 04 декабря 2009

Есть ли простой способ отправки объектов между приложениями с использованием C #? Объекты не всегда будут одинаковыми, будут (например) классы «Запрос» и «Ответ», и каждая сторона соединения будет иметь своего рода оператор переключения, который решает, какой объект был принят.

Есть ли простой способ добиться чего-то подобного в C # без необходимости использования библиотек 3-й детали?

Ответы [ 6 ]

4 голосов
/ 04 декабря 2009

WCF может работать здесь, вам просто нужно настроить интерфейс, описывающий объекты, которые вы собираетесь передать. Вот хорошее руководство по использованию WCF для межпроцессного взаимодействия .

3 голосов
/ 04 декабря 2009

Самый простой способ сделать это через необработанное TCP-соединение - это создать DLL, на которую ссылаются приложения по обе стороны соединения. Поместите все свои классы связи в эту DLL и пометьте каждый тип как Serializable. Это позволяет использовать объекты для двоичной сериализации и, следовательно, легко преобразовать их в byte[], который может быть передан напрямую через TCP-соединение.

Если у вас есть немного больше гибкости, вы можете рассмотреть что-то более высокого уровня, например, Remoting Services или WCF

2 голосов
/ 04 декабря 2009

Если вам не нужно отправлять полный двоичный объект (с логическими инструкциями), вы можете сериализовать классы запросов и ответов в XML и отправлять текст поверх потоков.

2 голосов
/ 04 декабря 2009

.NET remoting делает более или менее то, что вы хотите, и вы можете использовать свои классы интерфейса в качестве классов, которые выполняют «оператор switch»

http://msdn.microsoft.com/en-us/library/kwdt6w2k(VS.71).aspx

1 голос
/ 04 декабря 2009

Определение «простой» также зависит от ваших требований. Встроенные функции (например, WCF) не будут классифицироваться как сторонние библиотеки и, следовательно, обеспечивают простой способ безопасной отправки объектов между приложениями C #. WCF может автоматически генерировать для вас прокси-серверы, поэтому все, что вам нужно сделать, это определить ваши контракты на передачу данных и предоставить вам доступ к вашим услугам. Вы можете добавить ссылку на сервис в Visual Studio и методы доступны.

Я повторюсь, это действительно зависит от того, что вы хотите сделать, чтобы определить, какое простейшее решение.

0 голосов
/ 04 декабря 2009

Я бы всегда пытался рассматривать проблему как передачу данных между приложениями, а не объектами. Распределенные объектные модели почти всегда заканчиваются слезами, поскольку у вас действительно нет общего состояния.

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