WCF Сервис Клиенты - PullRequest
       7

WCF Сервис Клиенты

2 голосов
/ 17 февраля 2010

Добрый день, люди. Я никогда раньше не публиковал на таких сайтах, но давайте посмотрим, как это будет.

Сегодня я впервые начал работать с WCF, посмотрел несколько скринкастов и теперь готов приступить к внедрению своего первого решения. Все хорошо, и пока все работает, хотя мой вопрос возникает, когда я создаю WCFServiceClient в моей вызывающей программе / клиенте.

Допустим, в моем интерфейсе ServiceContract /, определяющем мои методы, предоставляемые клиенту, есть много методов, каждый из которых связан с каким-то объектом-сущностью. Как я могу логически сгруппировать все связанные методы определенной сущности вместе, чтобы в моем коде это выглядело как

, например

WCFServiceClient.Entity1.Insert();
WCFServiceClient.Entity1.Delete();
WCFServiceClient.Entity1.GetAll();
WCFServiceClient.Entity1.GetById(int id);

WCFServiceClient.Entity2.AddSomething();
WCFServiceClient.Entity2.RemoveSomething();
WCFServiceClient.Entity2.SelectSomething();

...

Вместо

WCFServiceClient.Insert();
WCFServiceClient.Delete();
WCFServiceClient.GetAll();
WCFServiceClient.GetById(int id);
WCFServiceClient.AddSomething();
WCFServiceClient.RemoveSomething();
WCFServiceClient.SelectSomething();

Надеюсь, это имеет смысл. Я искал в Google, я попробовал свои логические рассуждения, но не повезло. Любые идеи будут оценены.

Выстрел Juan

Ответы [ 2 ]

2 голосов
/ 17 февраля 2010

Вы не можете этого сделать. Лучшее, что вы можете сделать, это поместить все методы «сущности 1» в один контракт на обслуживание, а все методы «сущности 2» - в другой. Один сервис может реализовывать несколько сервисных контрактов.

0 голосов
/ 17 февраля 2010

WCFServiceClient.Entity1.Insert (); * +1002 *

WCFServiceClient.Entity2.AddSomething ();

Это пахнет как два отдельных сервисных интерфейса - пусть каждый сервисный контракт (интерфейс) обрабатывает все методы, которые вам нужны для одного типа объекта:

[ServiceContract]
interface IEntity1Services
{ 
    [OperationContract]
    void Insert(Entity1 newEntity);
    [OperationContract]
    void Delete(Entity1 entityToDelete);
    [OperationContract]
    List<Entity1> GetAll();
    [OperationContract]
    Entity1 GetById(int id);
}

[ServiceContract]
interface IEntity2Services
{ 
    [OperationContract]
    void AddSomething(Entity2 entity);
    [OperationContract]
    void RemoveSomething(Entity2 entity);
    [OperationContract]
    SelectSomething(Entity2 entity);
}

Если вы хотите, у вас может быть один класс обслуживания, фактически реализующий оба интерфейса - это вполне возможно и допустимо.

class ServiceImplementation : IEntity1Services, IEntity2Services
{
    // implementation of all seven methods here
}

Или вы можете создать два отдельных класса реализации сервиса - это полностью ваше дело.

class ServiceImplementation1 : IEntity1Services
{
    // implementation of four methods for Entity1 here
}

class ServiceImplementation2 : IEntity2Services
{
    // implementation of three methods for Entity2 here
}

Помогает ли это вообще?

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