Межпроцессное взаимодействие между службой Windows и веб-службой

любая помощь / обратная связь будут оценены. Я хотел бы разработать службу Windows на C #, чтобы она могла связываться через именованные каналы с веб-службой, написанной на C #. Возможен ли такой подход межпроцессного взаимодействия? Причина использования именованных каналов - это производительность.


person Carlitos Overflow    schedule 21.02.2012    source источник
comment
Когда вы говорите, что веб-сервис, написанный на C #, размещен ли он в IIS, а если нет, то как? Если я вас правильно понимаю, тот факт, что это веб-служба, не имеет значения - важно, какой процесс, в каком контексте безопасности, содержит код, с которым ваша служба Windows должна взаимодействовать через именованный канал.   -  person Chris Dickson    schedule 23.02.2012
comment
@ChrisDickson Да, веб-сервис размещен в IIS. Фактически, служба Windows и веб-служба размещаются на одном сервере (сервере Windows). Кроме того, ни одна из служб не имеет контекста безопасности. Итак, мой вопрос: можно ли достичь именованных каналов в этом случае?   -  person Carlitos Overflow    schedule 23.02.2012


Ответы (1)


Я бы лично создал службу WCF и использовал netNamedPipe привязка.

Эта ссылка, которую я предоставил, содержит рабочий пример.

Что вам нужно знать, так это то, что из-за усиления защиты Windows 2008 Server (включая Windows 7) службы работают с другим идентификатором сеанса (сеанс 0) и не будут иметь доступа к службам WCF, которые работают в пользовательском режиме.

person Aliostad    schedule 21.02.2012
comment
спасибо за предложение, однако служба Windows также должна подключаться через TCP к среде, отличной от Windows, поэтому, если я использую WCF, я не смогу использовать протокол TCP - person Carlitos Overflow; 21.02.2012
comment
Конечно, вы можете использовать TCP. Вы можете разместить его на другом порту для TCP. - person Aliostad; 23.02.2012
comment
Если я правильно понял из спецификаций msdn, если я использую WCF, я могу использовать только netNamedPipes и netTcp в качестве протоколов связи. это правильно? Если это так, я хотел бы использовать обычный протокол TCP, а не netTcp, поскольку он используется только между машинами Windows. - person Carlitos Overflow; 23.02.2012
comment
@ user945511 Тогда WCF не для вас. netTcp - это собственный формат TCP, а также netNamedPipes. Но если и клиент, и сервер являются WCF, это работает очень хорошо. - person Aliostad; 23.02.2012