从ASP.Net MVC 4 Web应用程序中使用ASP.Net Web API

时间:2012-10-13 01:04:16

标签: asp.net-mvc-4 asp.net-web-api

我理解并欣赏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控制器)。

  1. 我假设我需要在前端控制器上使用HttpClient来使用这些信息。
  2. 我是否可以将结果序列化回前端控制器上的实体?
  3. 这种方法还有其他替代方案吗?
  4. 最重要的是,这是一种可行的方法吗?
  5. 提前致谢

1 个答案:

答案 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或任何其他方案。