3

I want to develop an enterprise app that includes a WindowsForms presentation layer, middle-tier components for business logic and data access, and a MsSQL Server database. Middle-tier components should contain some business objects and will be called from presentation layer using .NET Remoting. Whitch is the best way (and why) to reference these business objects from presentation layer?

  • A) Create class library project, implementing business objects. Reference this project from presentation layer and middle-tier layer.
  • B) Create interface library project defining business objects. Create class library project implementing interfaces. Reference class library project from middle-tier layer. Reference interface library project from presentation layer.
  • C)中間層とプレゼンテーション層用に別々のクラスライブラリプロジェクトを作成します。プレゼンテーション層から対応するプロジェクトを参照します。
4

2 に答える 2

2

これにはおそらく明確な答えはなく、何をしているかによって異なります。

  • 多くの場合、 Aで十分です。小さな「単一アプリ」プロジェクトの場合、UI レイヤーと BL レイヤーの両方からビジネス オブジェクト ライブラリを直接参照できない理由はありません。それは確かに最も単純であり、時には単純さが最善であることもあります。

  • Bはおそらく「最良」です。実際の実装を抽象化するので、将来の変更は契約を破ることなく可能になり、インターフェースがあれば単体テストが容易になります。これのもう 1 つの利点は、将来、必要に応じて B から C に切り替えるのが難しくないことです。

  • ほとんどの場合、 Cはおそらくやり過ぎです。とはいえ、大規模なプロジェクトでは必要になるかもしれません。私は、最大 3 つの独立したデータ オブジェクト セットを持つ大規模なクライアント サーバー n 層アプリケーションに取り組んできました。DA レイヤーで使用される 1 つのセットをマップしてデータベースに格納します。2 番目のセットはビジネス ロジックとネットワーク レイヤーで処理してネットワーク経由で渡し、3 番目のセットはクライアントで UI にバインドします。抽象化の利点があるため、C 用のインターフェースも使用することを検討する価値があります。

全体として、アプリケーション ドメインまたはスコープを正確に把握していなくても、Bは適切な出発点です。

于 2010-03-30T19:43:33.163 に答える
2

3つのアプローチすべてがうまく機能するのを見てきました。

場合によっては、A から始めて、複雑さが増すにつれて B に移動し、次に C に移動することをお勧めします。

単純なプロジェクトでは、「ビジネス オブジェクト」をプレゼンテーション層および永続層と同じプロジェクトに含めることができます。異端のように思えるかもしれませんが、異なる名前空間を使用してオブジェクトを定義すると、「層」を十分に分離できます。

.NET Remoting の使用を再考することをお勧めします。WCF ははるかに優れたテクノロジであり、はるかに使いやすいです。

于 2010-03-30T19:48:03.263 に答える