2011-01-27 2 views
1

IRepository <>パターンとSOAを一緒に使用する際にはいくつかの助けが必要です。IRepository <>とSOAを一緒に

非常に複雑なビジネスロジックを含む会計アプリケーションを開発しています。現在、私はIRepositoryをDALとして使用しています。これは、基本的なCRUD + IQueryableインターフェイス、いくつかのキャッシング機能などを提供するだけです。

私はサービスやファサード層の役割を果たすBusinessLogic層を持っています(同じものですか?)。プレゼンテーションレイヤーで使用されるメソッドとしてここにカプセル化されたすべてのアプリケーションロジックが含まれています。

私はすべての基本的なCRUDがリポジトリに配置されているが、さらにそれは例えば、我々は唯一の私たちのアカウントリポジトリにこれらの基本的な方法があり、ビジネスロジックで行わ言ったように:でアカウントを取得するのではなく、

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

は「?あなたが取引を管理するために行うのですか?私はあなたがそれらを扱うんどの層に意味(私はエンジン層と考える)とどのようにこの建築家でそれらを実装するのです」尋ね

でSOAでは、今日作成したサービスが明日の別の方法で調整されるため、コールチェーンを完全に特定することはできません。

私はこのヒューリスティックに従います。すべてのサービスの境界上で私がアンビエントトランザクションに参加してそのトランザクションに参加する場合、アンビエントトランザクションに参加します。アンビエントトランザクションが存在しない場合は、新しいトランザクションのルートになります。このようにして、私が行う必要のある作業はトランザクションであり、オーケストレーションに引き込む他のコンポーネントに渡されます。

はこの記事を参照してください:Building Integrity into SOA

関連する問題