2009-08-11 3 views
2

Я разработал службу Windows, которая считывает данные из базы данных, база данных заполняется с помощью приложения ASP.net MVC.Связь между двумя отдельными приложениями

У меня есть требование, чтобы служба повторно загружала данные в память, выдавая запрос выбора в базу данных. Эта перезагрузка будет инициирована веб-приложением. Я подумал о нескольких способах достижения этого, например, Remoting, MSMQ или просто заставить службу прослушивать сокет для команды перезагрузки.

Я просто ищу предложения относительно того, каким будет наилучший подход к этому.

ответ

2

Насколько надежным является уведомление? Если уведомление потеряно (можно сказать, что коммуникационный канал имеет hickup в маршрутизаторе и отключает сокет), будет ли конец мира или бизнес обычным? Если служба отключена, вы можете получать уведомления с веб-сайта, который должен быть поставлен в очередь, когда он запустится, или они могут безопасно упасть?

Более надежным, чем это необходимо, тем больше вам нужно обратиться к решению в очереди (MSMQ). Если надежность не является проблемой, вы можете выбрать из Mirirad решений без очереди (удаленный доступ, TCP, UDP-трансляция, HTTP-вызов и т. Д.).

Вы вообще не заботитесь о безопасности? Вы боитесь, что злоумышленник проведет мое «обновление» до смерти, вызывая, по крайней мере, DoS, если не хуже? Вы хотите, чтобы аутентификация веб-сайта вызывала звонок «refresh»? Вам нужна конфиденциальность уведомлений (например, шифрование)? UDP сложнее защитить (нет сеанса).

Должно ли решение разрешать легкое развертывание, настройку и управление в поле (то есть является автономным, упакованным, продуктом) или одноразовое развертывание, которое может быть исправлено «точно в срок», если что-то изменения?

Слишком зная подробности всех этих факторов, сложно сказать «использовать X». По крайней мере, одна вещь уверена: до сих пор удалённость устарела.

Моя рекомендация будет заключаться в использовании WCF из-за простоты замены привязок «на лету», поэтому вы можете протестировать различные конфигурации (TCP, net pipe, http) без изменения кода.

Кстати, вы считали, что используете Query Notifications для обнаружения изменений данных, вместо активных уведомлений с веб-сайта? Я считаю, что это выстрел в темноте, но эквивалентная активная поддержка кеша существует во многих базах данных.

+0

Много отличной информации, спасибо большое. Это не критически важный бизнес, поэтому я не хочу, чтобы уведомления были поставлены в очередь. Я собираюсь исследовать маршрут WCF, хотя мой опыт с ним очень ограничен. Уведомления о запросах также выглядят интересными. – 2009-08-11 21:11:53

+0

Дайте WCF выстрел, стоит того. Если нет WCF, то транслируется либо TCP, либо даже UDP. Remoting и MSMQ кажутся излишними. –

0

Я бы использовал стандартные сокеты TCP - это сохранит все виды перемещения компонентов и минимизирует проблемы с конфигурацией IMHO.

1

Просто разместите службу WCF внутри службы Windows. Вы можете использовать netTcpBinding для привязки, которая будет использовать двоичный код по протоколу TCP/IP. Это будет намного проще, чем сокеты, но будет легче разрабатывать и поддерживать.

+0

Это один из вариантов, который я не рассмотрел, спасибо за предложение, которое я рассмотрю. – 2009-08-11 21:08:14

Смежные вопросы