Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/267.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 按需启动自托管WCF服务_C#_.net_Wcf_Web Services_Self Hosting - Fatal编程技术网

C# 按需启动自托管WCF服务

C# 按需启动自托管WCF服务,c#,.net,wcf,web-services,self-hosting,C#,.net,Wcf,Web Services,Self Hosting,是否可以按需启动自托管WCF服务? 我认为有两种方法可以实现这一目标: 在自托管WCF的web服务器中插入侦听器,并在WCF开始查找该端点之前,在收到特定服务请求时启动服务主机;或 集成进程中的web服务,为请求启动服务主机(如果请求尚未运行),并将请求重定向到该服务主机(就像我怀疑IIS所做的那样) 我无法使用IIS或WAS,因为web服务需要使用UI业务逻辑在进程中运行 哪些是可行的,我如何才能做到这一点? 编辑: 我不能仅仅启动服务主机,因为有数百台,其中大部分(约95%)从未使用过,

是否可以按需启动自托管WCF服务?

我认为有两种方法可以实现这一目标:

  • 在自托管WCF的web服务器中插入侦听器,并在WCF开始查找该端点之前,在收到特定服务请求时启动服务主机;或

  • 集成进程中的web服务,为请求启动服务主机(如果请求尚未运行),并将请求重定向到该服务主机(就像我怀疑IIS所做的那样)

我无法使用IIS或WAS,因为web服务需要使用UI业务逻辑在进程中运行

哪些是可行的,我如何才能做到这一点?

编辑:

我不能仅仅启动服务主机,因为有数百台,其中大部分(约95%)从未使用过,但需要可用。这用于公开包含900个实体的业务逻辑层。

您可以进行定位器服务设置。基本上总是公开一个轻量级服务,该服务返回“实际”服务的地址。每次请求特定服务的地址时,请继续并使其加速

如果您担心清理它,您可以保留一个服务主机列表,并在某种非活动超时情况下连接,以便定期关闭服务主机


这里有一些设计方面的问题——“在调用另一个服务之前调用一个服务”的概念在某种程度上可能被认为是一个坏主意(听起来像是耦合两个服务的状态)

走了以下路线:

  • 创建单个服务主机

  • 创建实现所有服务接口的动态代理

  • 为动态代理实现的每个接口添加服务端点

  • 从动态代理发送到正确的实现


为什么您不能启动服务主机并完成它呢?有数百台,其中大部分(约95%)从未使用过,但需要提供。这是为了公开一个包含900个实体的业务逻辑层,虽然客户端不可能缓存结果,但这将有很大的帮助。如果所有客户端都在发出任何请求之前执行该请求,那么这是唯一可靠的方法。我认为这样做的开销太大了。这听起来很巧妙——你有没有可能在某个地方发布这种方法的示例?这并不难:),但是最好在某个地方发布。我没有博客。你有什么建议我可以把它贴在哪里?你可以把它放在CodeProject上。