2014-01-05 5 views
3

В настоящее время я работаю над дизайном приложения Windows Service для извлечения отчетов из базы данных Oracle, сводит их к сообщению и отправляет его во внешнюю службу WCF SOAP. Буду признателен за некоторые предложения по дизайну, касающиеся услуг Windows.Дизайн службы Windows с WCF

Должны ли службы Windows использовать, например, выделенный WAS/самообслуживаемый WCF-сервис (net.pipe/net.tcp), который предоставляет данные для достижения лучшего разделения/повторного использования?

Поэтому я бы добавил службу WCF (net.pipe), которая предоставляет данные (например, метод GetReport). Приложение Windows Service вызовет GetReport и вызовет удаленную службу SOAP для пересылки агрегированного сообщения. Удаленная служба и ее клиентский код могут измениться. Он может быть адаптирован для разных проектов клиентов.

ответ

0

Я не думаю, что требуется добавить еще одну службу WCF, которая предоставляет данные, а не запрашивать базу данных напрямую, если у вас нет требования, чтобы другое приложение использовало ту же службу WCF. До тех пор я не хотел бы добавить услуги по следующим причинам:

  • Другой служба WCF увеличивает сложность развертывания и делает его труднее установить и настроить.
  • Подключение к новой услуге WCF: другой пункт, который может сломаться.
  • Если вы обрабатываете большое количество данных, получение их из базы данных напрямую гораздо эффективнее вместо передачи их по протоколу службы. Насколько я понимаю ваш вопрос, вы агрегируете данные в службе Windows, а не в базе данных. Поэтому вам также придется переместить код агрегации в новую службу.

Как уже говорилось, эта рекомендация изменится после того, как у вас появится новый потенциальный клиент для новой службы. Для того, чтобы подготовиться к этому, вы должны, конечно, выбрать дизайн в своем сервисе Windows, который отлично отделяет проблемы и является хорошей отправной точкой для перемещения некоторых компонентов позже.

2

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

Это означает, что ваша служба Windows является клиентом с точки зрения обмена WCF, и вам не нужно будет внедрять в нее какой-либо код сервера WCF.

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

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