2011-09-11 14 views
2

私は現時点で、アーキテクチャのよく知られているレイヤーを慎重に区別する十分な大きさのプロジェクトを作成しています。ソフトウェアアーキテクチャでINotifyPropertyChangedインターフェイスを実装する場所はどこですか?

データアクセスレイヤ(DAL)については、.NETエンティティフレームワークを使用します。

ビジネス層については、クライアントを作成してUIを処理するために使用できる後続の開発者が利用できるビジネスオブジェクトを定義しました。

クライアントアプリケーションをデモンストレーション目的で開発する必要があるため、リストの代わりにObservableCollection<T>を使用すると非常に便利であり、可能な限りオブジェクトはINotifyPropertyChangedインターフェイスを実装する必要がありますUIは自動的に変更を検出し、直ちに更新を表示します。

しかし、それが本当に建築的な観点からするのが正しい方法かどうかは疑問です。つまり、というのは技術的にはです。ビジネス層はUIの表示とは関係がありません。私たちはプログラマがそれを使用することを本当に「知っている」わけではありません。彼は単に計算目的のためにオブジェクトを使用したいと思うかもしれません。それで、私は何が一般的な練習だったのだろうか?

これらの機能をビジネスレイヤに実装する必要があります(パフォーマンス上の問題はありません)。これらのすべての機能を含む別のレイヤーに、ある種の「デコレータ」オブジェクトを作成する必要がありますか?

+1

各レイヤーには異なるクラスセットが必要です。少し冗長に聞こえるが、それは正しい選択である(あなたの疑いからもわかるように) – Sklivvz

答えて

1

コメントに「Skliwz」と記載されているとおり、これを配置する正しい場所は、UIレイヤーに具体的にバインドされているオブジェクトです。

あなたがUI層に直接あなたのビジネスオブジェクトを結合している、とあなたはINotifyPropertyChangedインターフェイスが本当にあなたのビジネスオブジェクトに属していないことが判明した場合、それはあなたが別の目的で

を別のオブジェクトを持っていなければならない明確な指標です

たとえば、Model View View Modelパターンを使用して、ビューモデルを作成することができます。

ただし、ビジネスオブジェクトを他のシステムで監視する必要があり、変更された時点に関する通知が必要な場合は、INotifyPropertyChangedインターフェイスが適切です。しかし、あなたの特定の場合のように聞こえる、そうではありません。

+0

MVVMリンクのおかげで、最後の段落で何を意味するのか分かりません。 'InotifyPropertyChanged'がなぜ不適切なのでしょうか? – SRKX

+1

@SRKX:確かに言うことはできませんが、通常、UI要素は自動的にこれらのオブジェクトを生成するプロキシ(WCF、RIAなど)によって提供されます。これらはあなたのビジネスオブジェクトではなく、表現です。典型的には、特定のUIのやり取り(機能をリンクするボタンの押下など)を処理するためのビューモデルのようなものが必要です。しかし、バックエンドでメモリ内にモデルがあり、プロパティの変更によってMSMQというメッセージが送信された場合は、オブジェクトが 'INotifyPropertyChanged'を実装するのは理にかなっています。 – casperOne

+1

@SRKX:しかし、あなたの場合、UIにバインドしたいと思うようです。 'INotifyPropertyChanged'自体を実装するビジネスオブジェクトをカプセル化するビューモデルと、データをディスプレイにバインドするのに役立つ追加プロパティをお勧めします。 – casperOne

関連する問題