因此,我将通过自托管(在 WindowsService 中)WebServiceHost(不确定如何使用 ServiceHost 处理 HTTP GET/POST)提供一些功能,其中一个功能可能会被大量调用。此函数还将依赖于 appdomain 中的连接(由 WindowsService 托管,因此它可以在多个请求上保持事件状态)。
我有以下担忧,非常感谢您提供任何意见/想法/评论:
暂时就是这样;) 我在 WCF 上阅读了很多,希望我很久以前就开始使用它,但肯定还在学习。
最佳答案
并发访问 - 这是您可以使用 ServiceBehaviorAttribute 设置的内容。有多种选择——您可以让 WCF 为每个传入请求创建服务类的新实例,或者您可以让单个实例处理所有请求。此外,您可以告诉 WCF 是串行还是并发地传递请求。
WebServiceHost -> WindowsService 通信。我想到了两种方法: WCF 支持一种称为“众所周知的实例”的模式,您可以将服务的实例传递给 ServiceHost 构造函数,而不是传递 Type 并让 WCF 为您实例化它。使用此模式,您可以通过引用回您的托管代码(或者您可以使用事件)来预配置您的服务实例。如果您想保持实例化的灵活性,另一种方法是在您的托管代码中有一个静态方法,WCF 服务可以回调该方法。
多个 WebServiceHosts 或 Contracts - 拥有多个 ServiceHost 实例确实没有优势。另请参阅此 SO 线程: What are the benefits for several servicehosts? Does one ServiceHost support several simultaneous connections on one endpoint? 。
WSDL - 虽然您可以通过打开元数据发布 (http://msdn.microsoft.com/en-us/library/ms788760.aspx) 来启用 WSDL,但 WSDL 支持旨在用于基于 SOAP 的服务,而不是纯 HTTP GET/POST。为您的服务自动生成的 WSDL 可能不是很有用。
关于wcf - 自托管 WCF 服务主机/WebServiceHost 并发/性能设计选项 (.NET 3.5),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2823553/