中央Web API应用程序为多个.NET前端提供服务的策略

时间:2014-08-05 10:09:39

标签: c# asp.net-mvc asp.net-web-api architecture

我想最终解耦现有的ASP.NET MVC项目。

随着时间的推移他们使用多种方法,我正在学习:

  1. 标准MVC,控制器操作将单独的视图返回给浏览器。
  2. 控制器操作返回FAT部分视图和jquery更新页面。
  3. 仅返回JSON / XML数据的控制器操作和jquery完成更新UI的工作
  4. 现在我想通过使用更重的javascript方法,通过将像Knockout,Angular,Backbone e.t.c这样的库放入游戏中来转向更具动态性的前端。但是我还想要足够灵活和快速,如果我想从我的控制器动作中返回一个准备好的部分视图。

    所以我想要集中我的业务层,而不是在我的MVC项目中有共同项目的形式,但是在我的业务层上方有一个中央WEB API端点,而DAL将为我的各个前端服务(它可以是MVC) ,控制台应用程序,通知等)

    此:

      

    DAL - >业务层 - > WEB API

    之后我想知道如何从各个点连接到WEB API输出:

    1. 纯JS:直接来自带有ajax调用的WEB Api端点

      2。 .NET应用程序(MVC,WinForms e.t.c):究竟是什么程度?

    2. 我的问题主要是关于上面的#2。我想要了解如何从Windows窗体或MVC控制器操作中使用我的中央WEP API的特定用例

1 个答案:

答案 0 :(得分:2)

这称为Service Oriented Architecture

对于#2,您有以下选项从.NET客户端调用RESTful服务(无论是ASP.NET MVC还是WinForms):

  1. Using an HttpClient
  2. 使用RestSharp。这是一个帮助程序库,它涵盖了大多数基本操作,包括请求/响应序列化和反序列化。请注意,在较新版本中,JSON.NET支持已被删除(出于某种原因,我现在还不记得......无论如何,这是在谷歌小组讨论中)。
  3. 无论哪种方式,我建议查看HttpClient完全支持的async / await模式。它会让你的生活变得更轻松,特别是对于WinForms来说。

    关于#1,没有什么能阻止你将JavaScript前端调用到Web API中。只是careful with CORS,因为我认为您可能需要它(通过拥有多个Web客户端,可能部署在不同的域上)。