我有一个将调用转发到应用程序层的 Web 层。Web 层使用共享的缓存通道来执行此操作。有问题的应用层服务是无状态的并且启用了并发性。
但它们不会同时被调用。
如果我更改 Web 层以在每次调用时创建一个新通道,那么我确实会在应用程序层上获得并发调用。但我想避免这种成本,因为它在我的场景中在功能上是不必要的。我没有会话状态,也不需要每次都重新验证调用者。我知道创建通道工厂比创建通道要昂贵得多,但如果可能的话,我仍然想避免这种成本。
我在 MSDN 上找到了这篇文章,其中指出:
虽然由通道创建的通道和客户端是线程安全的,但它们可能不支持同时向线路写入多个消息。如果您正在发送大型消息,特别是在流式传输时,发送操作可能会阻塞等待另一个发送完成。
首先,我没有发送大消息(只是很多小消息,因为我正在进行负载测试),但仍然看到阻塞行为。其次,这是相当开放且无用的文档。它说他们“可能不”支持编写多条消息,但没有解释他们支持并发消息的场景。
任何人都可以对此有所了解吗?
附录:我也在考虑创建一个网络服务器用来满足请求的通道池。但同样,我认为没有理由阻止我现有的方法,如果可能的话,我宁愿避免复杂性。