私は初めて.Netを使い、物事を学ぼうとしています。私は2010 Express Editionは、 Prism 4 WPF App - MVVM、リポジトリ、作業単位のパターンを実装したソリューションアーキテクチャ
- でPrism4 WPFアプリを開発しようとしています。
私は(?)多くのことを学び、他の人の間でthisとthisによってinfuenced、およびMVVM、リポジトリおよびUnitOfWorkのパターンを実装することに決めました。このアプリケーションは、単一のユーザー(私
:-)そうしたデスクトップアプリケーションになります、私は次のプロジェクトとソリューションを作成しました:
- シェル(アプリケーションのレイアウトと起動ロジック)
- 一般的な(アプリケーションインフラストラクチャとワークフローロジック)
- BusinessModuleA(ビューとのviewmodels)
- BusinessModuleA.Model(ビジネスエンティティ - POCO)
- BusinessModuleA.Data(リポジトリ、ダットアクセス(EF?))
- BusinessModuleB(ビューとのviewmodels)
- BusinessModuleB.Model(ビジネスエンティティ - ?POCO)
- BusinessModuleB.Data(リポジトリ、データアクセス(EF))
私の質問は:
- どのプロジェクトがどのプロジェクトを参照するべきですか?
- 私がリポジトリを 'BusinessModuleX.Data'に実装した場合、それは明らかに です。どこでIRepositoriesを定義する必要がありますか?
- どこでIUnitOfWorkを定義する必要がありますか、UnitOfWorkはどこに実装する必要がありますか?
- 私のViewModelsでUnitOfWorkとリポジトリを使用しても問題ありませんか? Instictは悪いデザインだと言います。
- 上記(4)が悪い場合、ViewModelはサービス レイヤ(別のプロジェクトですか?)経由でデータを取得する必要があります。次に、 エンティティへの変更をどのように追跡して、サービスレイヤでそれらのオブジェクトに関連するCRUDメソッドを呼び出すことができますか?
- これは意味があるのですか、それとも私は大きな画像が欠けていますか? [OK]を
、私は私が私の最初の記事で、正確に何を望むかに自分自身を明らかにされていませんでしたかもしれません。来るべき答えはあまりありません。 @Rachelが提案した内容が即時の要求に対して効果的であるかもしれないが、コーナーに自分自身を描かないように注意したいと思うので、私はまだ答えを探している。私はOfficeで私の個人的な使い方のために開発したAccess Dbを持っています。これは成功し、現在50人以上のユーザーが使用し成長しています。アクセスコードベースの維持と変更は、最初はかなり簡単でしたが、アプリが進化するにつれて、崩れ始めました。だから、私は.Net/Wpf/Prismのすべてを書き直して、基本的なデザインの権利を得たいと思っているのです。
ご相談ください。
はその間、私はthis...
こんにちは、ありがとうございます。 M-V-VMをフォルダに編成しないで、同じプロジェクトで密接に結合しますか?もちろん、私のモジュールはそれぞれ独自のデータベースを持っており、もちろん「Common」以外の他のモジュールには全く関係ない/認識されません。 – yoursvsr
私の4番目の質問は、UnitOfWorkと 'Repositories not' or 'を使うことです。リポジトリは、UnitOfWorkをコンストラクタに注入して仕事をしていると思います。また、各モジュールが独自のDataAccessLogicを処理できるようにすることで、すべての気密性が再結合されます。プリズムと上記のパターンが達成しようとする疎結合とモジュール開発の目的を上回っているのだろうか。 – yoursvsr
@yoursvsrオブジェクトはプロジェクトを共有することができますが、依然としてデカップリングされます。たとえば、MVVMでは、モデルを参照するViewModelsと、モデル/ ViewModelを参照するビューのみが参照する必要があります。実際の物体が存在する場所は本当に重要ではありません。 – Rachel