私はWCF Service
とMVC3
(カミソリ) Web サイトを持っています。すべてのデータはWCF Service
. コントローラーとビューがありますが、この構造でモデルを使用するにはどうすればよいですか?
今のところ、サービスからメソッドを呼び出し、DataController
コントローラーでそれらを呼び出しました..
より良い解決策?
私はWCF Service
とMVC3
(カミソリ) Web サイトを持っています。すべてのデータはWCF Service
. コントローラーとビューがありますが、この構造でモデルを使用するにはどうすればよいですか?
今のところ、サービスからメソッドを呼び出し、DataController
コントローラーでそれらを呼び出しました..
より良い解決策?
モデルから WCF サービスにアクセスしますか? 痛い...
コントローラーに固執します。コントローラーはサービスと対話しますが、モデルは対話しません。
1.サービスへの Web 参照を作成しました - サービス データ コントラクトに従ってエンティティが生成されました。このエンティティがモデルです。
2. ASP.NET MVC 固有の属性で装飾する必要がある場合は、同じプロパティを持つ他のエンティティを作成し、サービスからデータを取得してエンティティに変換し、必要なメソッドのみを提供するリポジトリを作成できます。これは良い方法です。
3.さらに、何らかの変換を行い、いくつかのビジネス ルールがある場合、リポジトリ メソッドを呼び出し、ビジネス ルールをチェックおよび実行するビジネス ロジック クラスを作成できます。ただし、サービスからのデータのみを表示する場合は、ロジック ビジネス クラスを作成しないでください。
4.コントローラーからロジック/リポジトリメソッドを呼び出し、それをビューに渡します。ビューはモデルの表示のみを担当し、そこからサービスを呼び出さないでください!
より良い解決策 - Service クラスと Repository クラスを作成します。たとえば、Person
モデルを取得した場合、wcf サービスの呼び出しとデータの取得に関連するすべてのジョブを実行する PersonRepository クラスを作成します。PersonService クラスはビジネス ロジック コンテナーとして機能し、リポジトリからのデータが必要な場合に Repository クラスを参照します。この場合、モデル、ビジネス ロジック、および wcf サービス リポジトリ間の疎結合が大きくなります。PersonService クラスは、バリデーター、ビジネス ロジック コンテナーなどとして機能します。