2012-10-13 116 views
3

我理解并欣赏ASP.Net MVC 4 Web API为Web客户端带来的价值(当与Knockout,jQuery结合使用时)。但是,我不确定这是如何工作的服务器端的内部Web服务。离开Web API不是一种选择。从ASP.Net使用ASP.Net Web API 4 Web应用程序

我的要求是,我从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. 最重要的是,这是一个可行的方法?

在此先感谢

回答

2

在你的情况,我可以看到的ASP.NET Web API坐落在表示层。由于ASP.NET MVC也在表现层,所以MVC调用Web API可能没有意义。

一个简单的方法(我总是主张KISS)是为了拥有一个同样可以从MVC和Web API访问的业务层。因此,而不是MVC去Web API,然后到BL,它直接。但是,如果您正在设计一个封装了上下文边界并可以被客户端和MVC平等使用的SOA Web API外观,那么我建议您使用Authorization来控制谁可以访问什么。这可以是OAuth或其他任何方案。

+0

不确定Web API在表示层的含义。假设是“服务”又名。在客户端上通过Javascript消费的中间层。但是,我确实看到了您采用一种更多重定向的观点(您通常会这样做,因为您不希望将所有逻辑都放入API控制器中)。感谢你的回答。它有帮助。 :) –

+1

@VyasBharghava认为Web API作为中间层是一个常见的错误 - 尽管它可以被使用,例如, ASP.NET网站。如果它被jQuery使用,那么它在表示层提供一个外观。中层谈判领域模型,但在这里Web API谈判观点模型。 – Aliostad