最近我看到一个项目使用了后台工作者来执行一些操作(从其他Web服务获取数据),然后通过事件将数据传递给客户端。这个项目是一个WCF服务,由另一个类库作为WCF客户端角色使用,并依次将事件抛出到应用程序中。我对这个多线程系列很感兴趣,于是进行了调查。我发现这是一个basicHttpBinding绑定,服务的唯一行为是UseSynchronizationContext=false。我发现他们在遇到未解释的异常之后添加了这个行为,这是正常的 :)
现在我的问题是关于basicHttpBinding的默认并发模式。他们不应该将其设置为可重入吗?或者这是默认行为?
如果WCF服务从客户端关闭,这种情况是否会继续失败?
我认为,在一个依赖于IIS处理的ASP.NET项目中,使用多线程操作的WCF服务是不好的,因为页面可能在WCF服务将数据返回给客户端类库并将其附加到页面之前就已经发送到客户端了。
您能否讨论一下上述内容并阐述您的想法?
当需要这样的异步编程风格时,通知WCF消费者使用CallbackContracts和内嵌WCF技术在长时间操作后通知他们而不是使用多线程操作,这样不是更好吗?
需要澄清并纠正设计,以及提供一些证明这是一个糟糕的服务架构的证据,如果这是真的话,我怀疑它!
谢谢。
现在我的问题是关于basicHttpBinding的默认并发模式。他们不应该将其设置为可重入吗?或者这是默认行为?
如果WCF服务从客户端关闭,这种情况是否会继续失败?
我认为,在一个依赖于IIS处理的ASP.NET项目中,使用多线程操作的WCF服务是不好的,因为页面可能在WCF服务将数据返回给客户端类库并将其附加到页面之前就已经发送到客户端了。
您能否讨论一下上述内容并阐述您的想法?
当需要这样的异步编程风格时,通知WCF消费者使用CallbackContracts和内嵌WCF技术在长时间操作后通知他们而不是使用多线程操作,这样不是更好吗?
需要澄清并纠正设计,以及提供一些证明这是一个糟糕的服务架构的证据,如果这是真的话,我怀疑它!
谢谢。