2011-01-27 3 views
1

IRepository <> 패턴과 SOA를 함께 사용할 때 도움이 필요합니다.IRepository <>와 SOA를 함께 사용

저는 매우 복잡한 비즈니스 로직을 포함하는 회계 응용 프로그램을 개발하고 있습니다. 현재 IQueryable 인터페이스, 일부 캐싱 기능 등을 제공하는 것과 같은 기본적인 CRUD + 작업 만 수행하는 DAL로 IRepository를 사용하고 있습니다.

맨 위에는 ServiceLogic 또는 Facade 레이어 역할을하는 BusinessLogic 레이어가 있습니다 (동일한 것입니까?). 모든 애플리케이션 로직은 프레젠테이션 레이어에서 사용할 메소드로 캡슐화됩니다.

나는 모든 기본 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(); 
    } 
} 

AccountService에도 리포지토리 개체를 사용하여 단일 트랜잭션에서 여러 엔티티 (계정, 소유자 및 ...)를 추가 할의 createAccount() 메소드를 할 수 : 특정 수의 우리는이 같은 서비스를 할 것이다 .

이제 올바른 방법으로 사용하고 있는지 알고 싶습니까? 또는 나는 몇몇 점을 놓쳤는가?

답변

0

저는 항상이 기사를 사용합니다. 게이트웨이상의 부분. sos00 @ SOA Design Pattern

+0

고마워, 당신은 트랜잭션을 관리하기 위해 무엇을해야합니까 :

은이 문서를 참조하십시오

? 나는 당신이 그들을 다루는 층을 의미합니까? (저는 Engine 레이어를 생각합니다) 어떻게이 아키텍트에서 구현합니까? – sos00

+0

http://stackoverflow.com/questions/9511137/is-the-solution-design-optimal-c-sharp-3-tier에 응답 해 주시겠습니까? – Lijo

0

은? "당신은 트랜잭션을 관리해야합니까 무엇? 난 당신이 그들을 처리 않는 계층에서 의미는 (i 엔진 층의 생각)하는 방법이 건축가에 사용합니까"질문

에서 SOA를 사용하면 오늘날 작성한 서비스가 내일 다른 방식으로 조율 될 것이므로 콜 체인을 완전히 확신 할 수 없습니다.

이 추론을 따릅니다. 모든 서비스의 경계에서 주변 트랜잭션에 참여하게되고 주변 트랜잭션이없는 경우 새 트랜잭션의 루트가 될 것입니다. 이 방법으로 내가해야 할 일은 거래이며 오케스트레이션에 참여하는 다른 구성 요소로 전달됩니다. Building Integrity into SOA

관련 문제