Связь между веб-сайтом и сервисом Windows - PullRequest
4 голосов
/ 13 декабря 2011

У меня есть веб-сайт, написанный на c # (MVC), и служба Windows, написанная на c #. Оба работают на одной машине. Идея в том, чтобы они использовали одну и ту же базу данных.

Служба Windows действует как движок, а веб-сайт представляет собой скорее интерфейс, показывающий результаты вычислений, выполненных движком. Связь состоит из команд с небольшим количеством данных от веб-сервера до службы Windows. Ожидается очень мало команд в секунду.

Что было бы для них хорошим способом общения?

Ответы [ 3 ]

2 голосов
/ 13 декабря 2011

Обычно самым быстрым на стороне Windows будет LRPC.В зависимости от ваших потребностей WCF может стать настоящей проблемой.Мы используем протобуферы Win32 LRPC +, чтобы увеличить пропускную способность веб-сервера до фоновой службы примерно в 40 раз.Просто зависит от ваших потребностей.

(см. Сравнительный анализ WCF по сравнению с буферами протокола + RpcLibrary )

protobuf-csharp-port имеетБольшая часть того, что вам нужно для определения сервиса и сообщений.Затем с помощью protobuf-csharp-rpc обеспечьте сериализацию сообщений на транспортном уровне Win32 LRPC .

Как только вы закончите определение протокола в протобуферах, это действительно легко.Для создания соединения и прокси-класса требуется всего несколько строк кода на клиенте / сервере.

Опять же, все зависит от того, что вы ищете;однако, IMHO, в настоящее время не существует лучшей архитектуры RPC для .NET Framework.Я, конечно, пристрастен, на мой взгляд, но мы использовали варианты этого с 2003 года, и это просто работает.

PS: Если вы создаете сервис с нуля, вы можете посмотреть мое руководство по Создание шаблона проекта службы Windows .Он достаточно быстро настроит и запустит real ведение журнала событий, установку и тестирование из командной строки.

0 голосов
/ 29 апреля 2017

Вы всегда можете сделать это «по-другому» - заставить ваш веб-сайт запустить веб-прослушиватель и подключить к нему службу Windows.

0 голосов
/ 13 декабря 2011

Все зависит от того, что вы хотите сделать.Доступно несколько вариантов: вы можете разместить веб-службу (успокаивающую или нет) в службе Windows, вы можете использовать Remoting или WCF и т. Д.

Но все начинается с вопроса: зачем вам это нужно?они оба?Что мешает вам перенести функциональность службы Windows в веб-приложение?

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