Какую среду .net использовать для связи между двумя процессами - PullRequest
3 голосов
/ 28 октября 2010

Я работаю над приложением, в котором у меня есть процесс проверки изображений и пользовательский интерфейс. Оба программируют с использованием c # 4.0. Они могут или не могут быть на той же машине. Я должен разработать это, чтобы справиться с обоими методами. Процесс проверки будет в основном работать в качестве сервера в этом приложении в окне Windows 7/64.

С точки зрения связи, сообщения от пользовательского интерфейса в процессе проверки будут минимальными. В основном сообщения запуска / остановки / обновления типа конфигурации. Когда процесс проверки выполняет проверку, он может передавать до 10 Мбит / с изображений для непрерывного мониторинга.

В SO 468375 , если оба процесса находятся на одном компьютере, рекомендуется использовать именованные каналы. Похоже, хорошее решение.

Тем не менее, мой реальный вопрос - какова текущая рекомендуемая наилучшая практика для обмена данными между этими двумя процессами, если они находятся на разных компьютерах. Служба WCF, сокеты, удаленное взаимодействие, именованные каналы и т. Д.?

Ответы [ 4 ]

10 голосов
/ 28 октября 2010

Удаленное использование устарело. WCF инкапсулирует удаленное взаимодействие, веб-службы и другие старые коммуникационные технологии.

Редактировать - добавить следующий следующий абзац

WCF был представлен как способ сделать использование этих базовых технологий более последовательным. Кодирование веб-службы во многом аналогично кодированию службы Remoting и т. Д. Это не точное сравнение, но оно совпадает с тем, что они снимали с помощью LINQ. С LINQ вы используете похожий синтаксис при доступе к данным SQL, объектам, XML и т. Д.

Конец редактирования

Я бы сказал, использовать службы WCF для того, что вы описываете. это то, для чего они были сделаны.

3 голосов
/ 28 октября 2010

Дополнительная информация о ответе Дэвида.

Обратите внимание, что WCF может использовать разные базовые привязки. Именованные каналы на локальном компьютере должны быть самыми быстрыми (они используют файлы, отображенные в памяти в .Net 4.0). TCP к удаленной машине, вероятно, самый простой и производительный.

Здесь обсуждается выбор транспорта здесь .

1 голос
/ 28 октября 2010

Если у вас есть ресурсы, я бы предложил MSMQ.Мы широко используем их, и они легки, быстры и невероятно просты для программирования в .net.

0 голосов
/ 06 ноября 2010

Вы также можете рассмотреть возможность использования Eneter Messaging Framework.
Это легкий и простой в использовании. Для межпроцессного взаимодействия он поддерживает NamedPipes, Tcp и Http (разумеется, логика вашего приложения не затрагивается).
Если вы заинтересованы, вы можете найти больше технической информации здесь: http://www.eneter.net/OnlineHelp/EneterMessagingFramework/Index.html
И примеры, как его использовать здесь: http://eneter.blogspot.com/

...