建築のためのビジネスオブジェクト/データベースへのアクセス層

StackOverflow https://stackoverflow.com/questions/118955

  •  02-07-2019
  •  | 
  •  

質問

様々な理由で、また新たなビジネスオブジェクト/データ保存図書館があります。必要条件の一つはこの層は別の論理ビジネスルールを実際のデータストレージ。

を受けることも可能です複数のデータ保存の層間へのアクセスを実装と同じオブジェクトは、例えば、本データベース""データ保存ソースを実装するも、他の"ldap"ソースを実装したユーザオブジェクトです。このシナリオでは、ユーザーが任意にかLDAP源かが微妙に異なる機能(例えば、できない保存-更新のユーザオブジェクト)ですが、それ以外の場合アプリケーションによって使用します。別のデータ保存タイプがwebサービス、または外部データベースです。

方法は主につありまでの実施は、私がパートナーシップ-ワーカーに同意できない基本レベルに通知するものとします。私のアドバイスをはめに利用します。と思う私の説明としての中立なのですが活かすことができ話を楽しめるように設定しました客観的視点です。

  • ビジネスオブジェクトベース授業、データ保存オブジェ継承事業のオブジェクト。クライアントコードのお得なデータを保存オブジェクト。

    この場合、共通のビジネスルール継承された各データ保存オブジェクトでのデータ保存オブジェクトを直接クライアントが使用されています。

    そクライアントコードを決めるデータの保管方法使用の指定されたオブジェクトで明示的に宣言インスタンスできるようになると、オブジェクトです。クライアントコードのニーズを明示的に知らの接続のための情報は各データ保存の型です。

    場合にデータ保存層実装の異なる機能を指定されたオブジェクトクライアントコードを明示的に知らないうちにコンパイル時のオブジェクトに見えます。データが得られない場合には保管方法を変更し、クライアントコードを更新しました。

  • ビジネスオブジェクトの封止データ保存オブジェクト。

    この場合、ビジネスオブジェクトに直接使用するクライアントアプリケーション.クライアントアプリケーションを通ベース接続情報を業務。決定に関するデータの保管方法は、指定されたオブジェクトの活用によるビジネスオブジェクトのコードです。接続情報を最大限に取り入れたチャンクのデータからコンフィグファイル(クライアントアプリなんか本当はいない"といってケアの詳細につきし)は、単一の接続文字列データベース、または複数個接続文字列を各種のデータを保存す。追加データの保管接続タイプも読み込まれる他のスポット-例えば、コンフィグレーション-テーブルデータベースを指定するUrlは様々なwebサービス

    利益のことは新しいデータの保管方法は、既存のオブジェクトでは、設定で設定できる実行時に決定する方法でに対して完全に透明であり、クライアントアプリケーション.お客様のアプリが必要なく変更の場合データの保存法指定されたオブジェクトの変わります。

  • ビジネスオブジェクトベースのクラス、データソースオブジェを受け継ぐビジネスからオブジェクト。クライアントコードお得していること、ベース。

    これは最初のメソッドが、クライアントコードを宣言変数のビジネスオブジェクトの種類、Load()を作成します()/などにおける静的メソッドは、ビジネスオブジェクトを返し適切なデータソースの型のオブジェクト。

    建築のこのソリューションは最初のメソッドがその主な違いは判定のデータを保存オブジェクト用の指定されたビジネスオブジェクトによる事業の層ではなく、お客様のコードです。

ないので、既存のドライブラリを提供しこの機能で割引いたもので在する可能性は皆無ではありませんデータの貯蔵層が実施されORMライブラリ)もご注意思わないではないことがおわかり頂けど言語の使用、その他で強く型付けされた.

話を楽しめるように設定しました一般的助言をここにする方法を用い(またはお気軽に示唆するよう、いかがでしょうか。

役に立ちましたか?

解決

が見られるもの、あるいデカップリング:ビジネスオブジェクト 使用 データオブジェクト、データオブジェクト の実施 保存オブジェクト。このビジネスルールのビジネスオブジェクトが依存する貯蔵ソースまたは形式があるが、データオブジェクトへの支援のもの操作に必要な、イノベーションや国際化は、貯蔵物の動的(例えばオンライン/オフライン操作)

この滝には、上記のカテゴ(ビジネスオブジェクトの封止データ保存オブジェクト)が分離データの意味から貯蔵機構をより明確に

他のヒント

きものファサードへの貴社のクライアントの事業。ものでは共通の入力ポイントです。

として、企業はさせないものがDTOと。

そうです。クライアントに対応できDTOs.でのそのようなデータを通じて申し込むこと。

私は一般的に好みの"ビジネスオブジェクトをカプセル化データオブジェクトの保存"です。しかし、短い高冗長性とデータオブジェクトやビジネスオブジェクトがない内容であることを期待する。これは特に、trueの場合にご利ORMの基礎としてのデータにアクセス層(DAL).しかし、長期的には、実際の支出は:応用生命サイクルです。このように、しかも珍しく"データ"から一つ以上のストレージサブシステムをサに限らずRDBMS)の新クラウド-コンピューティングとして一般に配布します。例えば、あるデータからゆったサービス別のチャンクまたはオブジェクトからのRDBMS、XMLファイルからのLDAPいます。ことを実現することの重要性が非常に良い封止のデータからのアクセス。注意どの依存関係の老化を促進す(DI)をc-tors、物件です。

とはいえ、アプローチしていtoying付けの"お肉"の建築ビジネスコントローラです。考え方の現代的データにアクセスがありますので資源のより伝統的な考え方、コントローラーを受け入れをURIまたはその他のメタデータ形式に使用できるかデータ資源な管理のための事業のオブジェクト。そして、ビジネスオブジェクトな封止、データアクセスるのではなく、コントローラます。このお客様ビジネスオブジェクトは軽量で特定のとするための機能をコントローラの最適化、composability、取引の雰囲気です。いことがあるので注意してコントローラはその後、"ホスト"事業のオブジェクトコレクション、のようにコントローラの作品の多くORMsいます。

また、もうビジネスルール管理です。まsquintくでおUML(またはモデルの頭の中にい:D)、または事業規則モデルはもうひとつのモデルも続い合わせ頂いた際には、ビジネスルールエンジンなど)を行います。いろいろなくにコントローラー事業も実際に制御規則サブシステムのもと、事業のオブジェクト参照のルールをコントローラ部でします。その理由は、必然的に、規則の実装が必要となるケースが少なくありをルックアップとクロスチェックを明らかにするため,有効性.多くの場合、要する可能性があるとの両方の水ビジネスオブジェクトのルックアップなどのバックデータベースのルックアップ検討の検出を複製の主体は、例えば、"新"は水分補給出ルールの運営による業務コントローラー、そのほとんど何でも必要なものを犠牲にするカスタマーサポート/よく抽象化は、"ドメインモデルです。"

疑似コード

using(MyConcreteBusinessContext ctx = new MyConcreteBusinessContext("datares://model1?DataSource=myserver;Catalog=mydatabase;Trusted_Connection=True ruleres://someruleresource?type=StaticRules&handler=My.Org.Business.Model.RuleManager")) {

User user = ctx.GetUserById("SZE543");
user.IsLogonActive = false;
ctx.Save();
}

//a business object
class User : BusinessBase {
  public User(BusinessContext ctx) : base(ctx) {}

  public bool Validate() {
    IValidator v = ctx.GetValidator(this);
    return v.Validate();
  }
}

// a validator
class UserValidator : BaseValidator, IValidator {
 User userInstance;
 public UserValidator(User user) {
  userInstance = user;
 }

 public bool Validate() {
   // actual validation code here
   return true;
 }
}

お客様からの扱い保存オブジェ。彼らに対応できDTOの直接ものanyオブジェクトにその論理は保管しないに包まれ、お客様のビジネスオブジェクトによって呼び出さないでください、お客様。

チェックCSLA.net による岩Lhotka.

さて、私は、労働者のGreg挙げられる。

Gregに記載の選択肢を検討している大きます。ていただきたいと思いも配慮の状況を説明するた

クライアントコードできない、気づかないdatastorageがビジネスオブジェクトが格納されることができ、いずれの場合には、その一datastorage、または発生するおそれがあり、複数のdatastoragesのビジネスオブジェクトタイプ(ユーザーに格納され、現地データベース外部LDAP)が、顧客を生じさせるものではありませんこれらの事業のオブジェクト。システム分析できれいー(はなびがきれいーでも利用事例の存在につdatastoragesのオブジェクトと同じタイプに影響することが利用の場合フローです。

どの区別で作成したオブジェクトの異なるデータレが生じ、クライアントコンポーネントでなければならな認識して複数のデータを置き、その宇宙では必然的に責任を負うことになり、決定するデータ保存用のた瞬間にオブジェクトの創出(とつだと思いオブジェクトから読み込むデータ保存の事業層で振りではこの決定は、そのアルゴリズムの意思決定に基づき型、コンテンツの情報からは、クライアントコンポーネントは、お客様の効果的責任者を決定している。

この責任で実施するさまざまな方法で実現できる:で接続オブジェクトの特定の型のデータ保存;できsegregared方法電話を新しいボーインスタンスなど。

について

マイケル

CLSAいています。しかし私のようなアプローチについてはエリック-エヴァンスbook http://dddcommunity.org/

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top