Запуск ServiceHost с одним контрактом работает так:
servicehost = new ServiceHost(typeof(MyService1));
servicehost.AddServiceEndpoint(typeof(IMyService1), new NetTcpBinding(), "net.tcp://127.0.0.1:800/MyApp/MyService1");
servicehost.Open();
Теперь я хотел бы добавить второй (третий, четвертый,...) контракт. Мое первое предположение состояло в том, чтобы просто добавить больше конечных точек, например:
servicehost = new ServiceHost(typeof(MyService1));
servicehost.AddServiceEndpoint(typeof(IMyService1), new NetTcpBinding(), "net.tcp://127.0.0.1:800/MyApp/MyService1");
servicehost.AddServiceEndpoint(typeof(IMyService2), new NetTcpBinding(), "net.tcp://127.0.0.1:800/MyApp/MyService2");
servicehost.Open();
Но, конечно, это не сработает, так как при создании ServiceHost я могу либо передать MyService1 в качестве параметра, либо MyService2 - поэтому я могу добавить много конечных точек к моему сервису, но все должны использовать один и тот же контракт, так как я только может обеспечить одну реализацию?
У меня такое чувство, что я пропущу смысл. Конечно, должен быть какой-то способ обеспечить реализацию для каждого конечного контракта-контракта, который я добавляю, или нет?