我理解并欣赏ASP.Net MVC 4 Web API为Web客户端带来的价值(当与Knockout,jQuery结合使用时)。但是,我不确定这对于服务器端的内部Web服务是如何工作的。远离Web API不是一种选择。
我的要求是我从jQuery调用相同的服务,以及我在ASP.Net MVC控制器(在UI上)需要的一些调用,这些调用是JavaScript客户端无法访问的。
我偶然发现了戴夫的这篇文章:http://encosia.com/rest-vs-rpc-in-asp-net-web-api-who-cares-it-does-both/。我明白我需要的是RPC样式(我习惯于WCF),Web API支持它。
这是一个Azure应用程序,因此我可以使用此article中的ACS来保护它。
我可以通过限制对我的服务器(URL)的调用来保护我需要的调用(可能是一个单独的API控制器)。
提前致谢
答案 0 :(得分:2)
在您的情况下,我可以看到ASP.NET Web API位于表示层。由于ASP.NET MVC也处于表示层,因此MVC调用Web API可能没有意义。
一种简单的方法(我总是提倡KISS)是为了拥有一个可以同时从MVC和Web API访问的业务层。因此,不是MVC转向Web API,而是转向BL,而是直接进入。
但是,如果您正在设计封装上下文边界的SOA Web API外观,并且客户端和MVC可以同等使用,我建议您使用授权来控制谁可以访问内容。这可能是OAuth或任何其他方案。