2011-05-23 82 views
2

背景ASP.Net MVC体系结构 - 旁路控制器层?

我正在建立一个ASP.Net MVC 3应用程序,它利用:

  • jQueryUI的许多UI部件/控制CRUD操作
  • 现有的基于SOA的系统(使用DDD概念构建)。这包括针对读取操作进行优化的服务(请参阅CQRS)。这些服务是RESTful(托管在IIS/Appfabric中),因此可以通过来自javascript的简单HTTP请求访问。这些服务也可以通过引用服务二进制文件并从控制器访问(或者当然,通过层来将Controller与服务分离等)来直接使用。

问题

是以往任何时候都适合于执行,例如,通过直接使用现有的RESTful API从JavaScript,而不是调用控制器方法则使服务调用读操作?或者我们应该总是使用Controller方法进行任何类型的CRUD操作?

参与讨论

  • 似乎打破,说你不应该绕过一个层
  • 在另一方面的规则,如果我们总是利用控制器它,然后觉得有些多余的,我们正在包装这个服务基本上在另一个RESTful API中使用ASP.Net MVC。

我的直觉,当我开始看这是我们最终会写入控制方法的一些操作,其中或许页输出(视图)的操作是最容易当我们在模型中的数据。然后会出现其他操作,例如,可能会抽出一个员工列表进行简单查找,这样就不需要使用Controller方法,并且可以直接访问我们现有的RESTful API。感觉混乱,有些开发人员会对何时直接使用Controller方法或现有的RESTful API感到困惑。

任何想法或建议,将不胜感激。

谢谢。

回答

3

我想这是一个意见问题,但如果没有其他问题,我总是会通过一个控制器来保持一致性。正如你所说,如果你有时直接使用API​​,但其他时候会经历一个控制器,那么你的开发人员可能会对他们应该如何访问数据感到困惑。

另一件值得考虑的事情是,通过使用控制器,您可以从最终用户隐藏API,这可能是一件好事,因为恶意用户可以很容易地更改Javascript以执行您不期望的事情(尽管我希望API有处理这个问题的措施),但是如果您总是通过控制器进行操作,则可以确保用户无法通过API直接操作数据。

即使安全性不是问题,正如我所说的,为了保持一致性,我仍然每次都要使用控制器访问权限。

+0

+1,完全同意。尽管这两种方式都有效,但从长远来看,一致性会让生活更轻松。你不必向新开发人员解释为什么有些东西通过控制器,有些则不通过。如果您在几年后回到项目中,您也不必尝试记住自己该做什么。 – Tridus 2011-06-08 10:18:08

+0

谢谢。正如你所提到的,这是开放的辩论,但我接受这个答案,因为我只是欣赏一些意见。 – tidmutt 2011-06-29 17:02:46