IRepository <> и SOA вместе - PullRequest
       17

IRepository <> и SOA вместе

1 голос
/ 27 января 2011

Мне нужна помощь по совместному использованию шаблона IRepository <> и SOA.

Я занимаюсь разработкой бухгалтерского приложения, которое включает в себя очень сложную бизнес-логику. В настоящее время я использую IRepository в качестве DAL, который выполняет только базовые функции CRUD +, такие как обеспечение интерфейса IQueryable, некоторые функции кэширования и т. д.

Кроме того, у меня есть слой BusinessLogic, который играет роль слоя Service или Facade (это одно и то же?). вся логика приложения заключена здесь в качестве методов, которые будут использоваться на уровне презентации.

как я уже сказал, все базовые CRUD размещаются в репозиториях, но, кроме того, это происходит в BusinessLogic, например, у нас могут быть только эти основные методы в нашем репозитории Account:

public class AccountRepository
{
    public IList<Accounts> GetAll()
    {
        ...
    }

    public Accounts Get(int id)
    {
        ...
    }

    public IList<Accounts Where(Func<Accounts,bool> criteria)
    {
        ...
    }

    public Accounts Add(Accounts item)
    {
        ...
    }
}

но чтобы получить учетную запись с определенным номером, у нас была бы такая услуга:

public class AccountService
{
    AccountRepository repos;

    public Accounts FindByNumber(int AccountNumber)
    {
        return repos.Where(o=>o.AccountNumber == AccountNumber).FirstOrDefault();
    }
}

AccountService также может иметь метод CreateAccount (), который добавляет несколько сущностей (учетную запись, владельца и ...) с помощью репозитория сущностей и в одной транзакции.

Теперь я хочу знать, правильно ли я их использую? или я пропустил некоторые моменты?

Ответы [ 2 ]

0 голосов
/ 01 февраля 2011

@ sos00 спросил: «Что вы делаете для управления транзакциями? Я имею в виду, на каком уровне вы их обрабатываете (я имею в виду уровень Engine) и как вы реализуете их в этом архитекторе»

В SOA вы никогда не можете быть полностью уверены в своей цепочке вызовов, поскольку услуги, которые вы пишете сегодня, будут организованы по-другому завтра.

Я следую этой эвристике; на границе каждой службы я присоединяюсь к внешней транзакции, если она передается мне, и подключаюсь к этой транзакции, если нет внешней транзакции, я становлюсь корнем новой транзакции. Таким образом, я уверен, что любая работа, которая мне нужна, - это транзакция, и она будет передана другим компонентам, которые я включил в свою оркестровку.

См. Эту статью: Создание целостности в SOA

0 голосов
/ 28 января 2011

Я использую это все время, посмотрите на эту статью ESP.часть на шлюзах. Шаблон проектирования SOA

...