Использование «именованных каналов» в ASP.NET HttpModule - PullRequest
3 голосов
/ 27 апреля 2011

У меня есть HttpModule, который собирает некоторую базовую информацию по каждому Http-запросу на сайт ASP.NET.Модуль должен отправить эту информацию для дальнейшей обработки во внешнюю программу (службу Windows или консольное приложение). В настоящее время я использую службу WCF с именованными каналами (с ChannelFactory).Я должен сказать, что все, кажется, работает хорошо, отлично, на самом деле.

Моим главным требованием к HttpModule является высокая производительность и надежность.Есть ли лучший способ сделать такое межпроцессное взаимодействие, особенно в рамках HttpModule (на сильно загруженном сайте).Есть ли потенциальные проблемы с производительностью / узкие места?:)

Что ты думаешь?Любые идеи или ссылки для чтения по этой теме будут высоко оценены!

Заранее спасибо!

1 Ответ

2 голосов
/ 27 апреля 2011

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

Производительность: маловероятно, что вы побьете Named Pipes, поскольку они используют общую память для транспорта. WCF добавляет немного накладных расходов благодаря своему протоколу кадрирования и схеме кодирования - вы можете напрямую передавать необработанные данные по каналу, используя типы System.IO.Pipes, если хотите избежать издержек WCF, но для многих приложений это не стоит дополнительных затрат. усилия. Если вы придерживаетесь WCF, установите для режима безопасности транспорта значение Нет, как описано здесь .

Надежность: Именованные каналы - это объекты, управляемые ядром ОС, и WCF связывает их довольно тонкой оболочкой, особенно с отключенной защитой транспорта: надежность высокая.

...