Какой самый простой способ общения двух приложений .net? - PullRequest
5 голосов
/ 12 декабря 2010

У нас есть сервис .net с простыми командами (например, воспроизведение, пауза, следующий трек). Он устанавливается на рабочих станциях пользователей с собственными учетными данными (например, FooServiceUser). Если я хочу дать пользователям приложение, которое может отправлять команды в службу, какой способ будет наиболее легким для этого? Помните, я хочу отправлять команды только с одной рабочей станции процессу, выполняющемуся на той же рабочей станции. Команды очень просты. Также приложение должно получать статус от сервиса. т.е. приостановлено, воспроизведение дорожки 21.

Должно быть легко, верно? WCF выглядит сложным и излишним. Все на SO говорят, что .net remoting - это плохо. Я не хочу устанавливать MSMQ. Каждое упоминание о розетках получает отрицательную оценку.

Ответы [ 4 ]

6 голосов
/ 12 декабря 2010

Для полного, простого в использовании решения я бы порекомендовал WCF.Он поддерживает протокол канала памяти (ICP) только для этого приложения.

Остается то, что вы бы назвали «облегченным».Хостинговая часть WCF может быть выполнена в 5 строках кода.Весь код на стороне клиента генерируется.Итак, вас действительно волнует количество и размер сборок, которые вы должны использовать (уже установлены), или количество функций, которые вы собираетесь игнорировать?

Просто используйте WCF.
И это позволит вам легко масштабироваться до сокетов и между ПК, если возникнет такая необходимость.

6 голосов
/ 12 декабря 2010

Я бы абсолютно сказал, что Remoting заменен и использует WCF с привязкой именованных каналов, но теперь, когда вы говорите о lightweightness , я должен сказать, что Remoting легковесна и никуда не денется, так как связь между двумя доменами приложений обычно удаленным Так что это действительно действительный выбор.

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

2 голосов
/ 12 декабря 2010

WCF облегчен с точки зрения того, как строки кода могут мне понадобиться для завершения моего общения.Это не очень легкий с точки зрения скорости выполнения и потребления памяти.WCF очень прост в использовании.Но его расширяемая архитектура иногда затрудняет поиск подходящего класса.

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

2 голосов
/ 12 декабря 2010

Если приложение находится на том же компьютере, что и служба Windows, вам, вероятно, даже не нужно беспокоиться об использовании удаленного взаимодействия, веб-служб и т. Д., Поскольку вы можете создать экземпляр ServiceController Class и использоватьМетод ExecuteCommand.

...