В соответствии с Принципом разделения интерфейсов , вы можете подумать о разделении этих вещей.
Один типичный подход - иметь один интерфейс (например, один "сервис") для объектатип - например, один интерфейс для Contact
со всеми необходимыми операциями и полезными для контактов и т. д.
Конечно, у вас также могут быть методы, которые работают с несколькими различными типами объектов - это немного сложноПоместите в конкретный контракт на обслуживание.
Кроме того, с WCF вы можете легко иметь один класс реализации сервиса, который, в свою очередь, реализует сразу несколько из этих интерфейсов - например, для использования общего кода или общих шаблонов.
Но я думаю, что было бы неплохо переосмыслить ваш контракт на обслуживание и преобразовать его в более мелкие, более управляемые куски.
Обновление:
если ваш класс реализации сервиса реализует четыре контракта на обслуживание, вам придется настроить его следующим образом:
<services>
<service name="YourNamespace.YourServiceImplementation">
<host>
<baseAddresses>
<add baseAddress="http://YourServer/MyServices/" />
</baseAddresses>
</host>
<endpoint name="Contact"
address="Contact"
binding="basicHttpBinding"
contract="YourNamespace.IContactService" />
<endpoint name="Letter"
address="Letter"
binding="basicHttpBinding"
contract="YourNamespace.ILetterService" />
<endpoint name="Organisation"
address="Organisation"
binding="basicHttpBinding"
contract="YourNamespace.IOrganisationService" />
<endpoint name="Project"
address="Project"
binding="basicHttpBinding"
contract="YourNamespace.IProjectService" />
<endpoint name="mex"
address="mex"
binding="mexHttpBinding"
contract="IMetadataExchange" />
</service>
</services>
Теперь каждая из ваших услуг доступна в определенной конечной точке:
- ваш
IContractService
доступен в http://YourServer/MyServices/Contact
- ваш
ILetterService
доступен в http://YourServer/MyServices/Letter
и так далее ...
Для каждого из этих адресов теперь вы можете добавить сервисные ссылки от клиента - добавляйте только те, которые вам действительно нужны.Одному приложению может потребоваться только одна из этих служб, другому может потребоваться две или три и т. Д.