Я пишу свой первый сервис WCF, но я немного не уверен, где должна выполняться основная функция сервиса.Служба WCF, размещенная в службе Windows. Какую работу нужно выполнять?
Основная цель моей службы - выполнять задачи по расписанию и в конечном итоге регистрировать свой статус на удаленном сервере. Идея службы WCF заключается в том, чтобы разрешить связь между приложением в системном трее и службой. Мой вопрос: где я должен реализовать планирование задач и ведение журнала базы данных?
Должно: A) служба Windows обслуживает только службу WCF и ничего не делает, оставив службу WCF выполнять всю работу и связь.
B) служба Windows обслуживает службу WCF и выполняет всю работу, предоставляя службе WCF осуществлять связь и ничего больше.
В случае B, как служба Windows получает данные от службы WCF и из нее? Служба ServiceHost не предоставляет доступ к методам службы WCF. Так что мне нужно создать новый экземпляр клиента и подключиться к службе WCF так же, как и в приложении в системном трее? Возможно ли иметь более одного одновременного соединения? (Я использую net.tcp, главным образом потому, что в этом учебнике я использовал его.) Также есть вероятность, что я могу захотеть, чтобы серверное приложение снова подключилось к клиенту WCF.
Согласен, я думаю, что вариант A звучит лучше всего, потому что в конечном итоге служба Windows может быть тем, что вы хотите использовать для своего конечного пользователя, но это может быть не в будущем (по сравнению с сервисом WCF, который более общая оболочка). Подумайте так. Если вы хотите добавить поддержку linux или адаптироваться к изменению ОС Windows, то вы были бы рады минимизировать свою зависимость от окон. Зависимость от WCF - это меньшее из 2 зол. Я подозреваю, что это будет справедливо в течение нескольких десятилетий (как философии). – Dessus
Спасибо. Я понимаю, что нет «главной» функции/точки входа, например, в консольном приложении.Но на основе варианта A, поскольку вы оба предположили, что мой план будет состоять в том, чтобы использовать «Public Sub New», чтобы запустить таймер, который будет ждать запланированного времени и запускать пользовательские функции для выполнения требуемых задач. Не могли бы вы сказать, что это возможно? На данный момент я не уверен, но в какой-то момент я могу вызывать функции с удаленной машины, чтобы сервер мог обновлять запланированное время. Но в противном случае я посмотрю на названные каналы. Я обязательно рассмотрю режим параллелизма. – Daniel