2011-01-27 64 views
1

我需要一些有關使用IRepository <>模式和SOA的幫助。IRepository <>和SOA在一起

我正在開發一個會計應用程序,其中包括非常複雜的業務邏輯。目前我使用IRepository作爲DAL,它只執行基本的CRUD +提供IQueryable接口,一些緩存功能等等。

最重要的是,我有一個扮演Service或Facade層角色的BusinessLogic層(它們是同一件事嗎?)。所有的應用程序邏輯封裝在這裏作爲Presentation層將使用的方法。

正如我所說的所有基本的CRUD被放置在倉庫,但進一步指出,發生在BusinessLogic,例如我們可能只在我們的帳戶資料庫,這些基本的方法:

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(); 
    } 
} 

帳戶服務可能也有其使用的實體存儲庫,並在一個事務中添加多個實體(帳戶,所有者和...)一個的createAccount()方法。

現在我想知道我是否以正確的方式使用它們?還是我錯過了一些觀點?

回答

0

我一直都在用這個,看看這篇文章esp。網關上的部分。 SOA Design Pattern

+0

非常感謝,你做什麼管理交易?我的意思是你在哪一層處理它們? (我想到引擎層),你如何在這個架構師中實現它們? – sos00 2011-01-31 12:31:01

0

@ sos00問:「你怎麼管理事務嗎?我的意思是在哪一層,你能處理嗎?(我認爲引擎層),你如何實現他們在這個建築師」

在一個SOA,你永遠無法完全確定你的調用鏈,因爲你今天編寫的服務將在明天以不同的方式進行編排。

我遵循這種啓發式;在每項服務的邊界上,如果沒有環境交易存在,我將加入環境交易,如果它被傳遞給我並加入該交易,我將成爲新交易的根源。通過這種方式,我確信我需要做的任何工作都是事務,並且將傳遞給其他組件,並將其傳遞給我的業務流程。

看到這篇文章:Building Integrity into SOA

相關問題