2012-02-10 7 views
4

私はASP.NET MVC 3ソリューションを作成しました。 3つの別々のプロジェクトで構成されています。 AutomapperとUnityを使用します。各ビューには独自のViewModelがあります。ASP.NET MVC 3のソリューション構造、データ参照、Automapper統合の正しい方法は何ですか?

プロジェクトは、次のとおり

  • DATA(コードファーストモデルとリポジトリクラスがこのプロジェクトに配置されている)
  • BUSINESS(サービスクラスは、このプロジェクトに配置されたデータプロジェクトを基準として添加されます。)。
  • WEB(ウェブUIプロジェクト。これは、MVCプロジェクトです。ビジネスプロジェクトは、参照として追加されます。)今

、私は2つの質問を持っています。

  1. このプロジェクト構造は良い方法ですか?
  2. 私はAutomapperをコントローラのサービスコールで使用しようとしています。しかし、コントローラでAutomapperを使用する場合は、POCOからViewModelsへの変換を行うために、WEBプロジェクトでDATAプロジェクトを参照として追加する必要があります。 WEBプロジェクトだけがBUSINESSプロジェクトと対話するべきではありませんか?

援助が必要です。

ありがとうございます。

+1

を助けダーリンディミトロフはレビューの価値があり、ここで興味深いのサンプルプロジェクトを持っています。 com/darind/samplemvc – Jesse

答えて

1

質問1質問1これは主観的なものであり、質問するのに最適な場所ではありません。しかし、私が維持しているプロジェクトでは、コア、Web、およびサービスのプロジェクトがあります。

質問2いいえ、あなたの例と私の経験に基づいて、WebプロジェクトでDATAプロジェクトとBUSINESSプロジェクトの参照があることは問題ありません。私たちのWebプロジェクトでは、コアプロジェクトとサービスプロジェクトについて知っています。しかし、私たちのサービスプロジェクトはWebプロジェクトへの参照を持っていません。このため、Automapperの設定では、サービスモデル、ビューモデル、およびエンティティモデルとのマッピング方法を理解しています。

これは役に立ちますか?あなたが私が精緻化するのが好きなら、コメントで私に教えてください。ちょっと下に戻るon this blog私たちが使っているのと似たプロジェクト設定を描いたイメージが見つかるかもしれません。

+0

パーフェクト。早々に返事をくれてありがとう。 – SherleyDev

0

あなたが何を記述しているかは通常の方法であり、一般的には何も問題はありません。確かに代替手段と考えることができるアプローチがあるかもしれません。しかし、それはあなたの実際の要件に依存し、個人的な好みにも左右されます。

あなたのPOCOは基本的にビジネスオブジェクトです。そして、たとえ彼らがDATAプロジェクトに住んでいても、彼らはあなたのドメインの一部です。より複雑な解決策が必要となるまでは、UIプロジェクトのDATAへの参照を入れるだけの方がよい場合があります。

+0

デニスありがとう。 – SherleyDev

0

私はすでにシャナバスの回答を受け入れていることを知っていますが、第2の質問についても参考になる議論に何かを加えたいと思います。

MVCは実際にはプレゼンテーションレイヤのアーキテクチャパターンであり、プロジェクトの構造を変える別の方法につながる可能性があります。プレゼンテーションレイヤ(WEBプロジェクト)は、View Modelオブジェクトに関してのみ話すべきです。それ。したがって、ビジネスプロジェクト(またはサービスレイヤー)は、ModelとViewModelおよびその逆の変換を担当する必要があります。たとえば、AutoMapperを使用して、モデルとリポジトリレイヤ(この場合はDataプロジェクト)への参照が必要です。 PresentationレイヤーがModelからViewModelおよびviceversaへの変換を担当していない場合、Dataプロジェクトへの参照を削除して問題を解決できます。

あなたは以下のリンクで、はるかに優れた、より詳細な説明を見つけることができます。https:// githubのhttp://msdn.microsoft.com/en-us/magazine/hh456393.aspx

希望これは

+0

さて、以下の記事によれば、私はコントローラ内でのみviewmodelsを使うべきであり、サービス層のようなどこかではありません。見てください: http://stackoverflow.com/questions/5610887/where-is-best-practice-to-do-mappings-from-view-model-to-domain-model – SherleyDev

+0

あり言う: "サービス層の中にマッピングロジックを置くべきではありません。マッピングロジックはコントローラ内にあり、どこにも属していないはずです。 なぜあなたに質問するかもしれませんか?サービス層はこれまで認識していたはずのViewModelについて知っておく必要があります。また、ハッキングのないサービス層を再利用できないため、マッピングロジックを配置するアプリケーションの柔軟性が低下します。 " – SherleyDev

+0

私はあなたのポイントSherleyDevを見ます。私はこの種の問題に対する正しい答えが存在しないと思っています。私はあなたにそのテーマに関する異なる視点と意見を与えたいと思いました。特にプレゼンテーションからの参照を取り除くのに役立つ解決策を提供したいと思いましたモデルへ。 – s0nica

関連する問題