Как создать урезанный сервис в WCF - PullRequest
1 голос
/ 02 мая 2009

У меня есть служба WCF с большим количеством методов и DataContracts. Обычно его употребляет большое приложение «А». Я хочу создать крошечное приложение «B», которое будет использовать тот же сервер, но только несколько методов из сервиса. Я хочу уменьшить размер XAP, и, поскольку клиент использует часть всех методов, предоставляемых службой, я хотел бы иметь файл справки меньшего размера, чем файл, автоматически создаваемый Visual Studio. Я могу удалить методы, которые не используются вручную, но затем я не могу использовать команду службы обновления.

Какие-нибудь решения?

Большое спасибо, Karol

1 Ответ

2 голосов
/ 02 мая 2009

ОК, поэтому у вас есть полный интерфейс IGreatService с множеством методов, которые реализованы в классе MyGreatService.

Как насчет этого: вы создаете новый, второй интерфейс IMyServiceB, в котором есть только те несколько методов, которые вы хотите предоставить второй группе пользователей. Вы делаете так, чтобы ваш сервис реализовывал как IGreatService, так и IMyServiceB (это абсолютно возможно, без проблем):

public class MyGreatService : IGreatService, IMyServiceB
{
 .. 
}

Служба B, в основном, просто вызывает те немногие методы в реализации службы, которые вы хотите представить - скажем, у вас есть MethodA на IGreatService, который вы также хотите предоставить на IMyServiceB (как MethodB) - реализуйте его так:

public class MyGreatService : IGreatService, IMyServiceB
{
   ....
   // as defined on IGreatService
   public void MethodA (....)  
   {
   }

   ....
   public void MethodB (.....)   // as defined on IMyServiceB
   {
        MethodA();
   } 
}

Таким образом, вы получаете два отдельных интерфейса (= службы), но в основном вы пишете свой код только один раз.

Затем вы можете предоставить IMyServiceB на отдельной и отдельной конечной точке, чтобы пользователи, которые должны видеть только IMyServiceB, могли просто подключиться к этой отдельной конечной точке, и они получат только то, что им нужно для использования ваших операций service-B.

Может ли это сработать?

Марк

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...