Вопрос

Две недели назад мне понадобился способ связи службы wcf со службой Windows, запущенной на том же компьютере.Служба Windows должна была получать данные из внешнего источника и передавать их службе wcf (размещенной в IIS), которая должна была предоставлять их, когда клиент делал запрос.Я решил сделать это с ipc.

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

Я обдумываю различные альтернативы, но во всех них проблема сохраняется.Какие-нибудь идеи?


Редактировать:

Что мне было нужно, так это система, которая публиковала в веб-службе, размещенной в IIS, данные, полученные через telnet из другой старой системы, которая немного нестабильна.Поскольку реакция этой второй системы была медленной, я решил поместить процесс (службу Windows) между веб-службой и старой системой.Служба Windows должна была сохранить данные, собранные из старой системы, и когда служба wcf попросила ее передать все это сразу через ipc.

Это было полезно?

Решение

Почему бы просто не создать другую учетную запись с тем же набором разрешений пользователя ASPNET, под которым работают как служба WCF, так и другая ваша служба?Таким образом, у вас есть контроль над паролем.

Другие советы

Почему служба Windows должна запускаться от имени пользователя ASPNET?Это потому, что вы используете IPC-соединение, которое требует аутентификации от вызывающего абонента?

Другой альтернативой (если у вас есть контроль над кодом Windows-service) было бы также создать службу WCF (используя ServiceHost в службе Windows).Служба IIS может подключаться к службе Windows с помощью привязки netTcp или NetNamedPipe, если вам нужна производительность, подобная IPC.

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

Следующий вопрос заключается в том, должен ли "клиент" быть сервисом WCF.Если этому клиенту необходимо обслуживать другие приложения, то это уместно, в противном случае это может оказаться необязательным.Я недостаточно знаю о вашей системе, так что вам решать, что лучше!

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top