2011-04-27 207 views
3

我有一个HttpModule,它收集每个到ASP.NET网站的Http请求的基本信息。该模块必须将此信息发送到外部程序(Windows服务或控制台应用程序)。我目前正在使用具有命名管道(带有ChannelFactory)的WCF服务。我不得不说,这一切似乎都很好,实际上是完美的。在ASP.NET中使用“命名管道”HttpModule

我对HttpModule的主要要求是卓越的性能和可靠性。 有没有更好的方式来进行这样的进程间通信,尤其是在HttpModule内(在高负载的站点上)。是否有任何潜在的性能问题/瓶颈? :)

你觉得呢?任何想法或参考一些阅读这个主题将不胜感激!

预先感谢您!

回答

2

我假设Http模块和数据服务之间的通信总是在同一台机器上。

性能:您不太可能击败命名管道,因为它们使用共享内存进行传输。 WCF通过其框架协议和编码方案增加了一点开销 - 如果您想避免WCF开销,您可以直接使用System.IO.Pipes类型通过管道将数据传递给管道,但对于许多应用程序来说,这是不值得的努力。如果你坚持使用WCF,set the transport security mode to None as explained here

可靠性:命名管道是由OS内核管理的对象,WCF绑定了一个相当薄的包装器,特别是传输安全被禁用时:可靠性很高。