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