【问题标题】:Reusing ViewModels for API in ASP.NET MVC?在 ASP.NET MVC 中为 API 重用 ViewModel?
【发布时间】:2010-12-14 21:33:45
【问题描述】:

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

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

但是已经对此进行了一些讨论,因为视图模型具有许多对 API 似乎并不总是有用的复合信息。例如,典型的 API 函数可能是 GetRanking()。属于 Ranking() 动作的视图模型实际上有更多的数据,比如当前用户的名字,也许还有一些关于排名的解释。

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

【问题讨论】:

    标签: asp.net-mvc api viewmodel


    【解决方案1】:

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

    现在,您经常会争辩说,ViewModel 可以继承/利用服务模型来实现其角色的数据传输方面。特别是对于那些往往与 ui 无关的更新。

    【讨论】:

    • 您会重用控制器动作,还是为 API 创建单独的动作?
    • 老实说,这是一个战术决定。也就是说,您的控制器应该简单、便宜且一次性,因为真正的魔法应该发生在域层中,所以我可能会做一组单独的服务控制器。
    猜你喜欢
    • 2011-10-12
    • 2018-09-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-12-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多