我想将服务重构为多个子服务,并按其业务范围分隔:
[ServiceContract]
public interface IMyService
{
[OperationContract]
int Method1();
[OperationContract]
int Method2();
}
还有一些已经在使用它的用户,所以我不能随便跟他们说声再见,重构所有内容。
因此,为了避免重复,我事先使用了抽象和接口,在这种情况下,我尝试将协定分离为多个接口,并将主要接口保留为聚合器:
[ServiceContract]
public interface IMyService : IMySubService1, IMySubService2
{
}
[ServiceContract]
public interface IMySubService1
{
[OperationContract]
int Method1();
}
[ServiceContract]
public interface IMySubService2
{
[OperationContract]
int Method2();
}
我以为这样做会成功,但是不,这正在破坏那些客户端,因为即使Im 仅托管IMyService ,这些方法位于WSDL中的不同路径上:
它是:net.tcp://foobar/IMyService/Method1
它变成:net.tcp://foobar/IMySubService1/Method1
那是个问题。我无法通过没有代码的重复(将一个用于实现,将一个显式聚合以用于合同)将我的合同分为多个接口,我可以通过任何方式解决它?
答案 0 :(得分:0)
设法做到这一点:
[ServiceContract(Name = nameof(IMyService))]
public interface IMyService : IMySubService1, IMySubService2
{
}
[ServiceContract(Name = nameof(IMyService))]
public interface IMySubService1
{
[OperationContract]
int Method1();
}
[ServiceContract(Name = nameof(IMyService))]
public interface IMySubService2
{
[OperationContract]
int Method2();
}
现在WSDL正确生成了。