繁体   English   中英

如何在一个HttpServiceHost上托管两个或多个Web服务?

[英]How can I host two or more web services on one HttpServiceHost?

我写了一项服务,它是大型项目的一部分,该项目本身提供了服务。 我不想编写同时实现两个Contract的composer类。

现在就像:

ServiceA: IServiceA
ServiceB: IServiceB

并在主机应用程序中:

var host = new HttpServiceHost(typeof(ServiceA), config, baseurl);

但我不能这样做:

host.AddServiceEndpoint(typeof(ServiceB), new WSHttpBinding(), "ServiceB");

因为ServiceA没有实现IServiceB。

我不想编写实现两个接口的复合器类并将它们路由到实例,因为我无法更改ServiceA的实现。 我该怎么办?

谢谢

您可以使用不同的绑定(例如NetTcpBinding )添加不同的终结点。 但这只是肮脏的方式。

所谓的“ composer”类通常是解决此问题的方法。 但是,我看不到如何无法更改ServiceA实现在这里引入问题...?

创建一个简单的包装器类,而实际的服务逻辑仍在具体的专用类中(您无需进行任何更改)。 该类要做的全部工作就是实施合同并将工作委托给适当的实施者:

public class ComposedServices : IServiceA, IServiceB
{
    private IServiceA serviceA;
    private IServiceB serviceB;

    public ComposedServices(IServiceA serviceA, IServiceB serviceB)
    {
        this.serviceA = serviceA; 
        this.serviceB = serviceB;
    }

    public void SomeMetodFromA()
    {
        this.serviceA.SomeMethodFromA();
    }
}

ComposedServices存在的唯一目的是克服技术限制-本身,它本身没有带来任何价值,并且实际上不应包含任何逻辑。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM