我写了一个服务,它是大项目的一部分,它自己提供服务。我不想写一个实现两个合同的作曲家类。
现在就像:
ServiceA: IServiceA
ServiceB: IServiceB
并在主机应用程序中:
var host = new HttpServiceHost(typeof(ServiceA), config, baseurl);
但我不能这样做:
host.AddServiceEndpoint(typeof(ServiceB), new WSHttpBinding(), "ServiceB");
因为ServiceA没有实现IServiceB。
我不想编写实现两个接口的composer类并将它们路由到实例,因为我无法更改ServiceA的实现。我该怎么办?
感谢
答案 0 :(得分:1)
您可以使用不同的绑定添加不同的端点(例如NetTcpBinding
)。 但那只是肮脏的方式。
所谓的“作曲家”类是如何解决这个问题的。但是,我不知道如何更改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();
}
}
{p> ComposedServices
存在的唯一目的是克服技术限制 - 仅靠它本身,它没有任何价值,几乎没有任何逻辑。