2017-07-14 4 views
0

このような私の展示のアーキテクチャ:ViewModelsどこに配置するか

Webプロジェクトには何かを返して何かを受け取るMVCビューとWebAPIコントロールが含まれています。 ドメインプロジェクトにドメインモデルが含まれています コアプロジェクトには、マイクロサービスとサービスからのDTOが含まれており、通信する相手と通信します。

モデルビューを表示する場所はどこですか?

Webプロジェクトで
  1. 、とのviewmodelにドメインがマップ - それはコアプロジェクトでプレゼンテーションやデータ受信
  2. のためだけで、WebAPIのコントローラにサービスを提供し、あなたはすでにのviewmodelsを返す必要があります - ドメイン、のviewmodelとDTOサービス。

お勧めですか?あなたの意見は何ですか?たぶん標準がありますか?

+3

ウェルビューモデルはプレゼンテーションレイヤーにのみ適用されるため、明示的な場所になります。 API IMHOからビューモデルを返さないでください。代わりに、必要に応じて、複数のサービスからのオブジェクト(またはそこから派生したオブジェクト)でビューモデルを構成できます。時には1-1のマッピングもあるかもしれませんが、それは単なる偶然のことです。しかしこれはまったくデザインの決定ですが、このような意見に基づく質問は一般的にSOフォーマットには適していません。あなたは具体的な事実ではなく、私のような意見を得る傾向があります。多くの理論がありますが、 "正しい"答えはありません。 – ADyson

+0

はい、しかし、いくつかのサービスの参加結果でwebappiに何かを返す "アプリケーションサービス"についてはどうですか? – Nerf

+0

@Nerfの場合、アプリケーションバックエンドとсombineからシンプルモデルへの複数のサービスを呼び出すことができ、シンプルモデルからwebapiへの別のロジックを呼び出すことができます。また、APIの結果をキャッシュすることもできます。 – itikhomi

答えて

3

WebAPIはビューモデルを返しません。 ViewModelではなく、ドメインモデル、DTO、trueまたはfalse、何も返しません。ビューモデルは、ビュー、UIに必要な方法で整形する必要があります。

したがって、いくつかの冗長なオブジェクトを使用することは可能ですが、ビュー用にビューモデルを作成することが常にベストプラクティスです。

あなたのWebアプリケーションにViewModelsフォルダを作成し、そこに配置するべきでしょう。

+0

しかし、私のWebApiはモデルを私のSPAプロジェクトに返します。そのことについて何? – Nerf

+0

これらのモデルをビューモデルにマップします。あなたはUIをそれらのWebAPIモデルに結合したくありません。 –

+0

WebAPIからDTOを返します。 –

関連する問題