Я не вижу в этом смысла. Если ваш сервис не реализует договор на обслуживание другого сервиса, не делайте этого.
С другой стороны, ваша служба может реализовать другой контракт на обслуживание и стать клиентом другой службы. Затем он может делегировать вызовы другому контракту на обслуживание другому сервису.
Я просто попробовал это, чтобы убедиться. Я создал новый проект библиотеки WCF Service. Это создало Service1, реализующий IService1, с двумя операциями. Я изменил атрибут [ServiceContract], чтобы использовать определенное пространство имен (http://localhost/service1).
Затем я добавил новый сервис, который дал мне Service2, реализующий IService2, с одной операцией (DoWork). Я обновил [ServiceContract] для использования http://localhost/service2/.
Затем я обновил Service1 для реализации IService2, а также IService1 и для делегирования IService2.DoWork службе Service2. Мне также нужно было добавить новую конечную точку, реализующую IService2, и мне пришлось указать относительный адрес, чтобы они не конфликтовали (поскольку они были в одном проекте). Вот результат:
using System;
namespace WcfServiceLibrary1
{
public class Service1 : IService1, IService2
{
public string GetData(int value)
{
return string.Format("You entered: {0}", value);
}
public CompositeType GetDataUsingDataContract(CompositeType composite)
{
if (composite.BoolValue)
{
composite.StringValue += "Suffix";
}
return composite;
}
public void DoWork()
{
Service2Reference.IService2 svc = null;
try
{
svc = new Service2Reference.Service2Client();
svc.DoWork();
}
finally
{
if (svc != null)
{
((IDisposable)svc).Dispose();
}
}
}
}
}