Связь между СЕРВИСОМ и веб-приложением - PullRequest
5 голосов
/ 24 сентября 2011

Каков рекомендуемый способ связи между службой и настольным приложением или веб-страницей?

Я хочу, чтобы служба выполняла всю работу, но администратор / управление / отчетность возможны через веб или рабочий стол. (Будет написано в C # с .Net 4.0)

Это именованные трубы? Розетки ? WCF? остальное ? мыло? Другой ? Что такое лучшая практика?

Любая информация будет принята с благодарностью.

Служба должна работать в режиме реального времени, поэтому любые соединения должны быть асинхронными.

Спасибо Andrew

ОБНОВЛЕНИЕ 1 - Служба контролирует сетевой трафик в режиме реального времени в качестве службы. Клиент может быть локальным или удаленным (используя ASP.NET/MVC или даже silverlight). Клиенту не нужны данные в реальном времени, но он должен запрашивать настройки, статистику, журналы и т. Д.

Ответы [ 2 ]

1 голос
/ 24 сентября 2011

Вопрос задается как WCF или HTTP или TCP.WCF - чрезвычайно гибкий коммуникационный фонд.Вы можете написать свой код один раз и украсить свои классы данных и на лету переключиться через конфигурацию и код между HTTP JSON / POX, TCP, Binary, Binary over HTTP, настраиваемой сериализацией и т. Д. ... Вопрос в том, какой механизм транспорта вы выберете,на основе ограничений маршрутизации / брандмауэра, клиентов и т. д. Лично мне нравятся диагностируемые транспорты, такие как HTTP и JSON / XML, просто потому, что они универсальные, маршрутизируемые и диагностируемые (checkout fiddler2).

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

Кроме того, из описания клиент не обязательно должен быть в режиме реального времени и просто запрашивает статистику, настройки и журналы.Потому что клиент может быть локальным или удаленным (возможно, удаленным, подразумевающим вне интрасети маршрутизацию извне).

По этой причине я бы отделил процесс сбора статистики сети REALTIME от части запросов, что делает его асинхронным, как вы упомянули.На этом этапе служба просто открывает канал для клиентов, чтобы запрашивать простую статистику, настройки и журналы ... выбрать наиболее маршрутизируемый и диагностируемый канал, такой как HTP, REST JSON | XML.Если это проблема, оставьте код сервера WCF без изменений и измените конфигурацию привязок WCF.

Вопрос немного открытый и неоднозначный, но, надеюсь, это немного поможет.

1 голос
/ 24 сентября 2011

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

См. Выбор транспорта (WCF) : легко перейти от HTTP к TCP к именованным каналам (ооо ля ля!):

Именованный канал - это объект в ядре операционной системы Windows, такой как раздел разделяемой памяти, который процессы могут использовать для связи [читать: очень быстро ].Именованный канал имеет имя и может использоваться для односторонней или дуплексной связи между процессами на одном компьютере .

Конечно, если требование того же компьютера нарушается, тогда вместо него можно использовать HTTP / TCP в зависимости от конфигурации сети и т. д. - разница с кодом?Настройка конфигурации:)

Удачного кодирования.

...