2011-07-01 7 views
3

私は、WPF 4.0とEF 4.0テクノロジでビジネスアプリケーションを開発するために使用できるアーキテクチャについて混乱しています。WPF&EFを使用するビジネスアプリケーションに最適なアーキテクチャは何ですか?

私の最初の選択は、従来のN階層アーキテクチャでした。UI、ビジネスロジックレイヤー&データアクセスレイヤーの動作が切断されています。私は3それぞれの層のためのプロジェクトと私のエンティティ/のDTOのための別のプロジェクト(各層がアセンブリである)を作成するには、このようにして

。各レイヤーはその上下のレイヤーのみを参照します(つまり、UIはBLLを見ることはできますが、DALは表示されません)。しかし、すべてのレイヤーは、通信目的でエンティティ/ DTOアセンブリにアクセスできます。 たとえば、DataGridで簡単なCRUDフォームを作成するときに問題が発生します。 BLLはEntity/DTOを返すときにDALのDataContextを破棄します。これがSTEの使用を余儀なくされた理由です。しかし、いくつかの問題があります。たとえば、BLLからUIに返される各エンティティに対して「StartTracking」メソッドを呼び出す必要があります。要するに、私はこのパターンの信頼性についてはわかりません。あるいは、私はCRUDフォームの自動処理について忘れてはいけないと思います。

私はそれが異なる見つけるリポジトリパターンについて検索したとき、私は私のDALの層にリポジトリモデルを使用しますが。 UIからDAL /リポジトリとBLL /サービス(WCFやWebServicesではなく)レイヤの両方を参照することは悪くないと思われ、接続環境(STEを使用せずに)を持つことができます。

私たちはリポジトリから人を取得するが、BLLまたはサービスを使用して、その上に何かを行うことができた例を参照してください。

UIコード:

var person = new PersonRepository().GetPerson(10); 
Bll.Salary.PaySalary(person); 

- または -

var person = new PersonRepository().GetPerson(10); 
Bll.Person.MarkAsAbsent(person); 
このパターンでは

またはそのような何か...

我々は目にエンティティ/のDTOを送信することができますDataContextが生存している間、接続された方法でUIを返します。

大きなプロジェクトでリポジトリパターンを使用する方法を理解しているかどうかわかりません。このようにBLLやサービスのクラスやメソッドに名前を付けるのは明らかではないと思います。開発者は、リポジトリメソッドやBLL /サービスメソッドをどこで使うのか、(リポジトリやBLL /サービスで)どこでメソッドを作成するかについて混乱するかもしれません。

私はエンティティを追跡するための良いアプローチを使用してN層アーキテクチャを好む/のDTOは、スイーツのように自動的に変更されます。

あなたは、このような状況で最高の模様をお勧めまたは/およびそのことについていくつかの良い本や書類に私を参照してくださいだろう。

答えて

1

いくつかの質問に役立つサンプルアプリケーションをまとめました。あなたはここで私のブログの記事を経由して、プレゼンテーションのノートやサンプルを確認できます。

http://blog.alner.net/archive/0001/01/01/wpf_ef_4_sig_presentation_2010.aspx

サンプルはスイーツ​​を使用して示し、Entity Frameworkののスイーツは、デスクトップクライアントアプリでより良い動作させるためにいくつかのヘルパーを含んでいます。

リポジトリには、データの取得方法の詳細が隠されています。ローカルデータベースを使用するリポジトリから、上位層がそれを知ることなくリモートWebサービスを使用するリポジトリに、リポジトリの実装をスワップすることができます。

+0

サンプルありがとうございます。私はそれを確認して返信します。リポジトリについては、私はあなたのように思ったが、私が言ったように、それは異なっているようだ。 –

+0

サンプルについて質問がある場合はお知らせください。これは私が過去1年間働いていた現実のWPFアプリケーションに基づいています。リポジトリの内容については、どうやって行うのかについてのアイデアがたくさんあります。理論的には「純粋」だが理解しにくいものとは何かをバランスさせることが重要だと思う。あまりにも抽象的にすることは、物事を追跡する/理解することなどを非常に困難にします。主な目標は「懸念の分離」です。 – NathanAW

+0

ありがとう、それは素晴らしいサンプルです!しかし、ビジネスロジックはどこにありますか?プロジェクトには非常に大量のビジネスロジックがあり、管理するのは私の問題です。私はまだ私の質問をしますが、 n層アプリケーションで必要なレイヤを参照することはできますか、別のパターンを使用する必要がありますか?私は良いn層のビジネスパターンを探しています。 –

0

おそらく記事Architecture for WPF applicationsはあなたのための助けです。

WPF Application Framework (WAF)のBookLibraryサンプルアプリケーションもご覧ください。ここには、前述のアーキテクチャを適用したEntity Frameworkと共にWPF MVVMアプリケーションが示されています。

関連する問題