2010-12-14 65 views
1

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

现在这个想法已经从一开始就重用了API的ViewModels和现有控制器动作,在这样的一个视图模型以控制器而不是视图的形式返回JSON或Ajax结果的方式。

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

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

回答

0

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

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

+0

你会重用控制器操作还是为API创建单独的操作? – Randam 2010-12-16 20:53:28

+0

这是一个诚实的战术决定。也就是说,你的控制器应该是简单的,便宜的和不必要的,因为真正的魔法应该发生在领域层,所以我可能会做一组单独的服务控制器。 – 2010-12-17 16:11:14