1

私はWCFサービスを持っています。WCFサービスの背後には、サービス層( http://martinfowler.com/eaaCatalog/serviceLayer.html )とリポジトリ層があります。

したがって、クライアントは WCF サービス層を呼び出し、WCF サービス層 (サービス層として機能) はリポジトリ層を呼び出します。

リポジトリ層は、データベースを表すモデル (POCO) を返します。次に、サービスレイヤーは、POCOをDTOに変換してネットワーク経由で転送する必要があると思いますか? または、これらを POCO のままにしておく必要がありますか?

指定したオブジェクトをサービス レイヤーに配置したら、これをクライアント (ASP.NET MVC) に返します。クライアント (ASP.NET MVC) のコントローラーは、WCF サービスから返されたオブジェクトを VIEWMODEL にマッピングします。

WCF サービスの背後にあるサービス層とリポジトリ層など、これを正しく行っていることを知りたいですか?

そして、WCF サービスから返された実際のモデルから ViewModel を作成するコントローラーです。

また、リポジトリが WCF サービスから戻る準備ができている DTO に返す REAL モデルから変換することが本当に必要なのだろうかと思います。

4

1 に答える 1

6

WCFサービスに関する限り、すべてが正常に見えます。モデル、データにアクセスするためのリポジトリレイヤーがあり、それらのモデルをクライアントに返します。DTOを使用する必要があるかどうかは議論の余地があります。POCO(一部のORM依存オブジェクトではない)がある場合は、問題ないはずです。DTOが必要になる場合もありますが、たとえば、ORMで適切に管理できるが、ネットワーク上で(相互運用可能な方法で)シリアル化できない円形オブジェクトグラフなどです。

次に、クライアント側に移ります。WCFを使用しているという事実は、実装の詳細である必要があります。したがって、ASP.NET MVCアプリケーションには、サービスを編集したときにインポートしたPOCOで動作するリポジトリがsvcutil.exeあり、次に、サービスへの実際の呼び出しを実行するこのリポジトリの実装があります(おそらく、ServiceClient自動生成クラスを使用します)。次に、コントローラーは抽象リポジトリーと連携し、実際の実装を注入するようにDIフレームワークを構成する必要があります。コントローラーアクションがリポジトリメソッドを呼び出すと、POCOが取得され、マッピングレイヤー(AutoMapper )に処理されます。?)ビューに渡される特定のビューモデルに変換するため。逆に、コントローラーアクションは、アクションパラメーターとしてビューからビューモデルを取得し、マッピングレイヤーを使用して、このモデルで必要なタスクを実行する責任を負うリポジトリに渡されるPOCOにマップし直します。 (あなたの場合、そしてそれをいくつかのリモートWCFサービスに渡す特定の実装)。

于 2011-05-09T16:40:01.433 に答える