在ASP.NET MVC中重用ViewModel for API?

时间:2010-12-14 21:33:45

标签: asp.net-mvc api viewmodel

我想为大型ASP.NET MVC应用程序创建API。此应用程序对其所有视图使用强类型视图模型。 API最重要的工作是在其他平台上启用网站的功能,例如iPhone的Objective C。

现在的想法是从一开始就为API重用ViewModel和现有的控制器动作,这样一种方式是视图模型由控制器而不是视图返回为JSON或Ajax结果。

但是对此有一些讨论,因为viewmodels有很多复合信息,这些信息对API来说并不总是有用。例如,典型的API函数可能是GetRanking()。属于Ranking()动作的视图模型实际上有更多数据,例如当前用户的名称以及可能有关排名的一些解释。

所以问题是,解决这个问题的最佳方法是:为api编写单独的操作并返回序列化的域对象,或者重用当前的操作和视图模型,然后忽略不需要的数据?

1 个答案:

答案 0 :(得分:0)

或第三种选择:创建一组服务模型。从长远来看,制作单独的ViewModel的巨大胜利往往是视图,实体可以独立变化。服务还有一些独特的维度 - 例如版本控制 - 您可能不需要在其他地方考虑。无论如何,服务几乎总是值得拥有自己的模型。

现在,您经常可以争辩说,ViewModel可以从其角色的数据传输方面下载/使用服务模型。特别是对于那些往往有点不可知的更新。