2011-05-18 33 views
4

正如我试图描述一个在研究论文中构建的系统,当我试图表示我创建的系统的复杂性时,我遇到以下符号问题:将RESTful API端点概念化为MVC设计模式中的视图

  • 假设我工程师服务A,只通过其基于REST的端点与世界沟通。然后,我工程师服务B,它使用服务A作为其骨干,并向外部世界表示其数据。
  • 假设服务A有它自己的模型和数据控制器。那么RESTful端点应该被视为MVC模式中的视图?
  • 假设服务B有其自己的一组代理模型,可以映射更多或更少的直接模型服务A。它为用户提供了一套GUI视图,并带有一组完全独立的控制器。服务A在MVC中出现在哪里?它应该被表示为封装模型吗?

现实世界的例子(不涉及我的工作问题)是:

  • del.icio.us和pinboard.in提供大致类似的API集,从而可以交换作为服务,一种服务客户端(对于问题的目的,假设它们都基于MVC模式建的,但可能有完全不同的套模型和控制器)
  • Delibar是iOS应用程序,从而遵循MVC架构并匹配服务的要求B;假设Delibar在API端点中表示的服务A的数据模型之后对其数据进行建模。

因此,pinboard.in和del.icio.us是Delibar的模型吗? RESTful端点是观点吗?因此,pinboard.in和del.icio.us的视图集是一样的吗?

回答

1

端点是Controller上的操作/操作。视图是控制器响应HTTP GET请求返回的数据(HTML,XML,JSON或其他)。

服务A并未作为服务B的MVC三元组的一部分来表示,因为MVC处理与模型的交互以及控制器对视图的选择。服务A通过服务B的数据访问层访问。如果您使用的是“活动记录”模式,则服务B中的控制器对模型的查询或更改将由模型本身传递到数据访问层。如果您使用的是域服务/数据映射程序/存储库模式,则控制器将调用此封装数据访问的层。