【问题标题】:WebServiceHost with separate contract and implementationsWebServiceHost 具有单独的合同和实现
【发布时间】:2014-06-30 21:29:30
【问题描述】:

我有一个接口-实现对,我想使用 WebServiceHost 将它们转换为服务。然而,WebServiceHost 需要一个实现所有合约的实例或类型。我考虑过在 WCF 中连接到 IInstanceProvider 以便我可以基于 Message 属性创建特定的实例,但是没有实例或类型就不可能创建 WebServiceHost。这无论如何都是可能的,还是应该为我的每个接口实现对创建多个 WebServiceHost 实例?在相同的主机和端口上创建大量(大约一百个)WebServiceHost 实例但不同的 URL 是否有任何惩罚?

【问题讨论】:

  • 我阅读了这篇文章,但并不完全符合我的要求。由于我同时拥有合约和接口,我可以使用反射生成一个大对象,该对象将用作服务的单例,但我正在寻找更优雅的解决方案。

标签: wcf


【解决方案1】:

查看WebServiceHost 的MSDN 文档,我相信您将不得不创建WebServiceHost 的多个实例

在同一主机/端口上使用不同的 url 托管 n 个服务对托管没有任何影响。例如,您可以使用下面的示例托管所有服务,它们应该正确托管

http://localhost:1234/MyService1
http://localhost:1234/MyService2
http://localhost:1234/MyService3 
...
http://localhost:1234/MyService100

这里的问题是您的服务器的可扩展性。你说的是有近百个WebServiceHost。如果所有服务都是轻量级的并且不创建任何大型数据对象,那么您可能没有任何问题。但是如果这些服务中的每一个都创建/缓存了很多对象,您可能会遇到内存问题。此外,如果所有服务都是 CPU 密集型的,那么您可能必须限制请求。

找出这一点的唯一方法是对您的服务进行负载测试。

【讨论】:

    猜你喜欢
    • 2019-08-18
    • 1970-01-01
    • 1970-01-01
    • 2019-01-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-02-09
    相关资源
    最近更新 更多