Я хочу реорганизовать службу в несколько вспомогательных служб, разделенных областью их бизнеса:
[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();
}
Я думал, что это сработает, но НЕТ - он ломает эти клиенты, потому что теперь эти методы расположены по разным путям в WSDL, хотя я принимаю только IMyService :
Было: net.tcp://foobar/IMyService/Method1
Стало: net.tcp://foobar/IMySubService1/Method1
И это проблема.Я не могу разделить свой контракт на интерфейсы без дублирования кода (один для реализации и один явно агрегированный для контракта), каким-либо образом я могу решить его?