我有一个HttpModule,它收集有关ASP.NET站点的每个Http请求的一些基本信息。模块必须将此信息发送到外部程序(Windows服务或控制台应用程序)进行进一步处理。我目前正在使用带有命名管道的WCF服务(带有ChannelFactory)。我不得不说这一切似乎很好,完美,实际上。
我对HttpModule的主要要求是卓越的性能和可靠性。 有没有更好的方法来进行这种进程间通信,尤其是在HttpModule(在高负载站点上)。是否存在潜在的性能问题/瓶颈? :)
你怎么看?任何有关该主题阅读的想法或参考资料都将受到高度赞赏!提前谢谢!
答案 0 :(得分:2)
我假设Http Module和数据服务之间的通信总是在同一台机器上。
性能:您不太可能击败命名管道,因为它们使用共享内存进行传输。 WCF通过其成帧协议和编码方案增加了一点开销 - 如果你想避免WCF开销,你可以直接使用System.IO.Pipes类型通过管道传递数据,但是对于许多应用程序来说,这不值得额外努力。如果您坚持使用WCF set the transport security mode to None as explained here。
可靠性:命名管道是由OS内核管理的对象,WCF通过它们绑定一个相当薄的包装器,特别是在禁用传输安全性的情况下:可靠性很高。