2010-12-14 11 views
1

大規模なASP.NET MVCアプリケーション用のAPIを作成したいと考えています。このアプリケーションは、すべてのビューに対して厳密に型指定されたビューモデルを使用します。 APIの最も重要な仕事は、iPhoneのObjective Cなどの他のプラットフォームでウェブサイトの機能を有効にすることです。ASP.NET MVCでAPIのViewModelsを再利用していますか?

これで、ViewModelsと既存のコントローラアクションを再利用して、ビューの代わりにコントローラによってビューモデルがJSONまたはAjaxの結果として返されるようにします。

しかし、ビューモデルには、APIにとっては必ずしも有用ではないような多くの合成情報が含まれているため、これについていくつかの議論があります。たとえば、一般的なAPI関数はGetRanking()です。 Ranking()アクションに属するビューモデルは、現在のユーザーの名前やランキングに関する説明など、実際にはより多くのデータを持っています。

これは、apiのアクションを個別に記述し、シリアル化されたドメインオブジェクトを返すか、現在のアクションとビューモデルを再利用し、不要なデータを無視するのが最もよい方法でしょうか?

答えて

0

3番目のオプション:サービスモデルのセットを作成する。長期的に見ると、別々のViewModelsを作る上で大きな勝利は、視点になる傾向があり、エンティティは独立して変更することができます。また、サービスには、バージョン管理などのいくつかの独自の次元があり、他の場所での説明は不要です。いずれにしても、サービスはほとんど常にそのモデルを所有している必要があります。

ここで、ViewModelsは、ロールのデータ転送側のサービスモデルを使用/使用できると主張できます。特に、アップデートには少し不自然な傾向があります。

+0

コントローラのアクションを再利用するか、APIのアクションを個別に作成しますか? – Randam

+0

それは正直言って戦術的決定のビットです。つまり、あなたのコントローラーはドメインレイヤーで本当の魔法が起こっているはずなので、シンプルで安価で使い捨てでなければならないので、おそらく別のセットのサービスコントローラーを実行するでしょう。 –

関連する問題