WCF как бизнес-логика

Мой текущий план архитектуры для моего приложения:

Пользовательский интерфейс -> WCF Bal -> Общий Dal -> Модель сущности

Я создал общие методы Dal и связанный объект, и конкретная операция, которую нужно выполнить, будет обрабатываться из бизнес-логики.

Я пытаюсь создать бизнес-логику на wcf, и, как раньше, мы делали отдельные классы для отдельных сущностей, поэтому из контекста WCF я не понимал, как это сделать?

Сначала я думал о создании интерфейса, который будет иметь общую реализацию, например

 public interface IBalService<TEntity> where TEntity:class 
{
    [OperationContract]
    IDictionary<int, string> Populatelist();

    [OperationContract]
    IEnumerable<TEntity> Viewall();

    [OperationContract]
    void Insert(TEntity obj);

    [OperationContract]
    void Update(TEntity obj);

    [OperationContract]
    void Delete(TEntity obj);
}

теперь этот интерфейс должен иметь другую реализацию для разных сущностей, например, Product, Category, Customer, но wcf может иметь только один класс Service ...

Есть идеи, что мне теперь делать ???


person Ankit    schedule 16.07.2012    source источник


Ответы (1)


Вкратце, я бы сделал (и успешно сделал в некоторых проектах) следующее:

  • Создайте уровень службы, используя WCF в качестве конечной точки. Этот уровень может состоять из статических методов, заключенных в классы, которые служат только как «пространства имен», такие как «UserService», «MessagesService» и т. Д. Мир «видит» именно эти классы.

  • Создайте свою бизнес-логику, используя традиционные полные объектно-ориентированные классы.

  • Создайте свой DAL; в дополнение к BL, имеющему доступ к нему, уровень сервиса также может получить к нему доступ для простых операций, которые не оправдывают использование полноценной бизнес-логики.

Я бы не стал использовать дженерики в качестве конечной точки WCF, это можно было бы сделать, но если вы будете рассматривать свой уровень обслуживания как единый метод для одной операции, вы выиграете возможность в конечном итоге превратить его в своего рода общедоступный API (если вы хотите).

person Ofer Zelig    schedule 16.07.2012
comment
с этим WCF будет просто действовать как средство перенаправления, или у нас есть какие-либо другие преимущества с этим? - person Ankit; 16.07.2012
comment
Просто коммуникационный уровень. Он очень силен в том, что делает, но я почти не вижу других преимуществ ... - person Ofer Zelig; 16.07.2012