私はMVC3 Webフロントエンドを持つソリューションを持っています。私はビューモデルのための別のアセンブリを持っています。私はすべてのドメインオブジェクトとビジネス機能とビジネス検証を含むサービスアセンブリを持っています。私のサービスはまた、私のWebサイトにすべてのビューモデルを提供します。したがって、Webサイトはサービスとモデルのアセンブリを認識しています。サービスはモデルアセンブリのみを認識しており、モデルアセンブリはそれを認識していません。デカップリングを増加させるソリューションの共通のインタフェースを置く場所はどこですか?
私はカートモデルを検証して処理するためにサービスが必要な場合があります。カート内のアイテムは、サービスアセンブリで定義したいインターフェイスを実装しています。私の問題は、カート・モデルがこのインターフェースを使用するためには、サービス・アセンブリーについて知っておく必要があるということです。私がモデル・アセンブリでインターフェースを定義した場合、私はこの2つのアセンブリーを必要としない方法で結合しました。
だから、私はインターフェイスが含まれている別のアセンブリを追加することにより、これらを切り離すことができ、それぞれがそれを参照ことを決めました。だから今、彼らはこのアセンブリに密接に結合されていますが、互いに直接結合されていません。
この「インターフェイスのみ」のアセンブリは実用的なソリューションですか、別のものを実行する必要がありますか?
クローズ有権者には、なぜこのような話題はありませんか? –
インターフェイスは、インターフェイスを実装しているモデルで定義する必要があります。あなたのサービスはすでにあなたのモデルアセンブリを参照していますので、私は結合の増加を見ません。結局のところ、インタフェースはモデルへのインタフェースですが、正しいのでしょうか? –
あなたはそれを正しくしました! –