我即将创建一个简单的Web应用程序,我想知道我是否应该使用ASP.NET MVC 4新功能的Web API。
最好的方式是做什么?
我做了一些研究,我发现有两个选择:
选项1
使Web Api成为我的服务层,并从控制器中调用它来读/写数据,并使用视图模型和剃刀渲染视图。
选项2
使Web Api成为我的服务层,并使用Javascript直接从视图中调用它。
我不是选项2的大粉丝,因为我觉得我忽略了仅用于页面之间重定向的控制器。此外,我更喜欢使用剃刀而不是Javascript。
如果我选择选项1,我必须在控制器中创建一个Web API的实例?因为这样觉得我在做错事。
什么是最好的选择?有没有其他的选择我没有考虑过?
如果你能给出一些可以帮助我的参考书或书籍,我会很感激。
谢谢。
解决方法
根据我的业务规则,我通常有另一个层(根据应用程序的大小和复杂程度,可以是不同的项目/组件)。你可以打电话给这个商业服务,或者你的案件是什么。
所以MVC控制器和API控制器都使用这个层;这使得应用程序变得干燥。
我个人更喜欢只将复杂的操作保留在我的业务层,这意味着如果我需要从我的持久层读取一些东西来显示在我的视图中,我直接在MVC控制器上进行。这是一个个人偏好的问题,但我更愿意去CQRS的方式。
所以你MVC控制器将会实例化这些业务服务(如果你使用IoC,他们将被注入你的控制器)。对于读取操作,您可以选择直接访问持久层或使用其他读取策略。
您的API控制器也会发生这种情况,他们将使用这种“常见”层次的服务。
您不需要在MVC控制器上实例化API控制器。
如果您正在开发SPA或类似产品,则通过AJAX消耗您的Web Api控制器。
没有一种方法可以构建您的应用程序,只有不同的方式,每个人都有或多或少的痛苦。
如果你正在考虑在你的应用程序中引入测试(你应该:));那么你应该以一种容易测试其每个部分的方式进行结构化。
只是我的2美分