1

ベストプラクティスのアプリケーション設計とパターンに関するネット上の記事をたくさん読んだ後でも、すべての情報をまとめて実際のアプリケーションにマッピングすることはできません...

3 層のアプリケーションが必要です。

  • UI-Layer:
    ASP.net - Webapp 内でホストされる Silverlight アプリケーション

  • BusinessLogicLayer:
    別のサーバーで実行されている WCF サービス / .NET RIA サービス

  • DataAccessLayer : nHibernate や Linq2Entities のような ORM の使用


問題は、ビジネス オブジェクトをどこに置き、どこにデータを入力すればよいかわからないことです。

他の 3 つのレイヤーすべてで使用できるように、すべてのビジネス オブジェクトを含む別のレイヤーが必要ですか?
または、それらを BLL に配置し、DAL で nHibernate-Methods を呼び出す必要がありますが、BLL と DAL の間に循環依存関係がありますか? DAL 内に "DataAccessObjects" を導入し、すべてのプロパティを BLL の BusinessObjects にコピーするだけでは、"オーバー アーキテクチャ" ではありませんか?

どんな助けでも大歓迎です!

ダニエル・ラング

4

4 に答える 4

0

Well, after reviewing the whole problem, I think the "best" solution is to use DependencyInjection or IversionOfControl to fill the business-objects with data in the DAL.

于 2009-12-02T16:30:03.027 に答える
0

ビジネス オブジェクトは、ビジネス レイヤーに入ります。これらのオブジェクトは UI レイヤーによって使用され、データ レイヤーからメソッドを呼び出して自身を設定します。

一般に、レイヤー内のオブジェクトは、それ自体のレイヤーまたはそのすぐ下のレイヤー内のメソッドのみを呼び出します。

動機の 1 つは、他のレイヤーを変更せずにレイヤーの 1 つを置き換えることができるようにすることです。たとえば、ビジネス レイヤーから同じメソッドを使用して、UI を表示する別の方法が存在する可能性があります。または、新しいデータ層に古いデータ層と同じメソッドが含まれている限り、データベースを変更することもできます。

于 2009-12-01T22:51:58.823 に答える
0

WCF を使用しているため、インターフェイスとデータ クラスのみを含む "コントラクト" が必要です。これらのクラスは、他のすべての人が利用できる必要があります。その中にロジックを含めないでください。

于 2009-12-01T22:52:47.067 に答える
0

ビジネスオブジェクトは共通層に入り、

私は通常、プロジェクトを作成します。プロジェクトには、ビジネス オブジェクト、列挙型、およびサーバーとクライアントの間で共通するものが含まれます。

このプロジェクトはすべてのレイヤーから参照されます。他のプロジェクトへの参照を持つことはできません。そうしないと、循環参照が作成されます。

于 2010-12-29T02:42:44.740 に答える