2017-08-19 16 views
1

私はASP.NET Web APIを初めて使用しています(APIはまったくありません)。私の質問は、ASP.NET MVCでViewModelsに似たようなものがあるかどうか(私はAPIで推測するとViewModelは呼ばれません)、またはDataAccessレイヤーからデータベースモデルを使用する必要がありますか?ASP.NET Web API 2 ViewModels?

答えて

1

私の質問であるのviewmodelsに似たものがあれば

はい、ありますが、MVCと同じです。 ViewModelsという名前は、DataModelModelDTOのように多くの名前で呼ばれていても問題ありません。しかし本質的には、いかなる状態も持たないか維持していないData Transfer Object (DTO)です。

もう一度、対応するエンティティ用に個別のビューモデルを用意する必要があります。データ検証ロジックをモデルオブジェクトに含める必要があります。どのような特定のデータをクライアントに転送するかについて、実際のエンティティより抽象化のレイヤーを追加します。

+0

素晴らしい点と多分OPが探していた答え。 'ViewModel'は実際にはユーザーに公開されているデータスライスの別の名前です。 – axlj

+0

@Rahulどのように私はそれらを呼び出す必要がありますか? BindingModels? – john

+0

@john、これは本当に問題ではありません – Rahul

1

あなたは確かにWebAPIのビューモデルを持つことができます。好きなオブジェクトをAPIメソッドから返すことができます。

実際には、データアクセスオブジェクト、特にフレームワーク生成オブジェクトに付加される余分なプロパティをシリアル化したくないので、APIシナリオでビューモデルを特に返すことをお勧めします。 APIレスポンスに簡単なPOCOを使用すると、クライアントが受け取った結果データを完全に制御できます。

+0

私はそれらをどのように呼び出すべきでしょうか? BindingModels? – john

+0

@john:あなたが好きなら、確かに。私は、一般的には、ASP.NET MVC Frameworkクラス定義の "ビュー"ではなく、結果がパターン定義の "ビュー"であるため、 "ビューモデル"という用語に慣れてきました。アプリケーションによって消費者に公開される。最終的には、あなたとあなたのチーム/ドメイン/までの専門用語です。ただそれを明確かつ一貫性のあるものにしてください。 – David

0

ここでの選択は、デザインとアプリケーションの複雑さによって異なります。ドメインモデルとビジネスモデルをマッピングするための開発コストはわずかです。しかし、私は次のような理由のためのあなたのAPI層のためのビューモデルを作成するお勧めします:

  • ドメインモデルが変更された場合それはあなたのAPI
  • の明示的な契約を定義し、それはあなたのユーザー
  • に影響を与えません。
  • あなたのドメイン層影響を及ぼすことなく、バージョン、あなたのAPIをすることができます