質問

私はゼロから小さなアプリケーションに取り組んでおり、それを使用して自分自身にアーキテクチャとデザインの概念を教えようとしています。それは.NET 3.5、WPFアプリケーションであり、SQL Compact Editionをデータストアとして使用しています。

私はビジネスロジックレイヤーに取り組んでおり、DALを書き始めました。 SQLCECOMAMNDSを使用して、簡単なクエリとSQLCERESULTSETを送信して結果を得ています。私は自分の挿入方法と更新方法を設計し始めていますが、ここに問題があります - BLLから必要なデータをDALに入手するための最良の方法はわかりません。一般的なコレクションを渡すことはできますか?データベースのすべてのデータを含む巨大なパラメーターリストがありますか?実際のビジネスオブジェクトを単に渡すだけですか(したがって、DALをBLLのConreteのものに結び付けますか?)。

私はインターフェイスの使用を考えました - 単にIbusinessObjectaをDALに渡すだけで、現在の実装に私をしっかりと結びつけることなく、私が探しているシンプルさを提供します。皆さんはどう思いますか?

役に立ちましたか?

解決

私があなたの立場にいた場合、私はおそらくLINQを使用してSQLを使用してデータアクセスレイヤーを定義します - それはあなたがそのすべてのSQLCEFOOBARのものを維持する多くの作業を節約し、あなたがあなたのデータベースを維持するための(ある種の)デザイナーを提供するでしょうそれ以外の場合は、SQL CEを使用して不足しています。

そのため、その場合、ビジネスロジック層をL2Sレイヤーによって公開されたエンティティとかなりしっかりと結合します。正当化は、エンティティです それは サービスはありませんが、ビジネスオブジェクト。

私はおそらく、エンティティがUIほど階層を上に到達させないでしょう。そのレベルでは、特にWPFを使用していることを考えると、ビューに特にモデルを使用する方がはるかに理にかなっています。

もちろん、これはすべてアプリケーションのサイズと複雑さに依存します。 SQL CEを使用していることを考えると、かなり小規模アプリケーション(単一のユーザー?)であると思います。

他のヒント

状況に応じて多くの選択肢があるため、あなたの質問には簡単な答えがあるとは思いません。以下の2冊の本を読んで、あなたが説明する問題をよりよく理解するのに役立つことが役立つとわかりました。

  • MS .NET:エンタープライズのための申請のアーキテクチャ(Esposito、Saltarello)
  • MSアプリケーションアーキテクチャガイド、第2版。

2冊目の本はオンラインで入手できます。見て ここ.

ビジネスオブジェクトをデータアクセスレイヤーに渡すことは問題ないと思います。 BLLの仕事は、オブジェクトを使用するだけで、すべてのルールが守られているかどうか、保存できるもの、誰によって、どのフィールド、時間などについて確認することだと思います。

それがそれをダルに渡すべきであることを成し遂げた後、私はそれが持続できるものにそれが何を変換するかを理解するのは仕事だと思いますが、それは持続しているか読んでいるか、誰が持続しているかを確認することはありません、それはそれをするだけです。これはまっすぐなfowardである可能性がありますが、ロジックmdoelsがデータモデル1:1と一致しない場合、DALはすべての変換を行う必要があります。

DALをBLLのものに結びつけることについて、BLLをDALに結びつけることを心配する必要があると思います。インターフェイスを使用して、DAL(IrePositoryのように)を表現し、使用しているIREPositoryのタイプを変更するだけでBLLにあらゆる種類の持続メカニズムを呼び出すことができます(IOC:Pを使用する場合は追加ポイント)。 Irepositoryを実装する具体的なクラスは、ビジネスオブジェクトに結び付けられますが、彼らは彼らが節約していることを知っておく必要がありますか? BLLは何が節約をしているのかを知る必要はありません。

DALでビジネスオブジェクトを渡すことは、よりシンプルで最速の方法です。小規模プロジェクトでは機能しますが、同じ欠点があります。

1)ビジネスオブジェクトはBLLレイヤーの一部であり、BLLでオブジェクトを渡すと、DALはBLLに依存します。低層は上部のものについて知っています - これは層のアイデアとまったく矛盾しています。

2)ビジネスオブジェクトは、BDに直接保存するために測定されます。この場合、新しい「マッパー」中間層を導入することをお勧めします。

これらすべての問題を克服するために、私はビジネスオブジェクトとは無関係にDALへのインターフェースを査定します。代わりに「行」クラスを使用します - データベースまたはXMLの1つのレコードを表現します。 .NET 3.5では、この目的のためにLINQTOSQL自動生成クラスを使用できます。

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