RESTFul Web Api 服务框架(一)
简介:
基于 REST 的 Web 服务日益成为后端企业服务集成的首选,因为它比 SOAP 更加简单。这篇文章介绍了一
个简单的可扩展框架,使用Asp.net Web Api作为 REST 服务的实现。它详细描述了设计细节,并探讨了各种可扩展性方法。
概念
REpresentational State Transfer (REST) 是一种架构原则,其中将 web 服务视为资源,可以由其 URL 唯一标识。RESTful Web 服务的关键特点是明确使用 HTTP 方法来表示不同的操作的调用。
设计原则:
REST 的基本设计原则对典型 CRUD 操作使用 HTTP 协议方法:
POST - 创建资源
GET - 检索资源
PUT – 更新资源
DELETE - 删除资源
优势:
REST 服务的主要优势在于:
它们是跨平台 (Java、.net、PHP 等)高度可重用的,因为它们都依赖基本 HTTP 协议。
它们使用基本的 XML,而不是复杂的 SOAP XML,使用非常方便。
基于 REST 的 web 服务日益成为后端企业服务集成的首选方法。与基于 SOAP 的 web 服务相比,它的编程模型简
单,而本机 XML(而不是 SOAP )的使用减少了序列化和反序列化过程的复杂性,并且不再需要其他作用相同的第
三方库。
支持:
当前用于构建 RESTful 服务,比如 .Net平台下基于asp.net api的实现 和 REST 支持使用Microsoft Visual Studio 2012 MVC 4.0模拟支持和Microsoft Visual Studio2013原生支持。
因此本文建议使用更简单的可扩展框架将业务服务公开为类 REST 服务。该框架是轻量级的,采用标准的 Front Controller(前端控制器)模式,非常便于理解。它也是可扩展的,可以通过 API 或任何其他集成模式(如 ESB)集
成后端服务。通过使用自定义 XML 序列化程序、json 或任何其他对象到 XML 转换工具,可以方便地配置数据交换模型。
概述:
在以前的应用程序中,服务通常公开为SOAP web 服务。在这些服务与使用非.Net 技术 (如 Java 或 PHP)的客户端应用程序集成时,处理 SOAP Web 服务将变得非常麻烦,还涉及到大量的开发和配置工作。
这里提到的方法通常用于有很多服务、服务可以重复使用,但使用 SOAP 创建快速集成障碍的互操作性和开发成本很大的组织,帮助它们进行服务集成。此外,在内部治理组织不会在企业 ESB 或 EAI 上公开服务的情况下,很难以点到点的方式集成两种不同的技术服务。

该架构包括 Front Controller,作为接收请求并向客户端提供响应的中心点。Front Controller 将请求处理委托给包含此框架处理逻辑的 ActionController。ActionController 执行验证,将请求映射到相应的 Action,并调用生成响应的动作。为请求处理、日志记录和异常处理这些可以被单个 Action 以及 ActionController 使用的动作提供了各种 Helper Service。
Front Controller 通过让单个控制器负责传输所有请求,从而解决了在 Page Controller 中存在的分散化问题。控制器本身通常分为以下两部分实现:
处理程序和命令层次结构:

处理程序具有以下两项职责:
检索参数:处理程序接收来自 Web 服务器的 HTTP Post 或 Get 请求,并从请求中检索相关参数。
选择命令:处理程序首先使用请求中的参数选择正确的命令,然后将控制权转移给该命令以便执行处理。

框架组件

处理典型 POST 请求的这些组件之间的交互如下所示:

如上图所示,REST 服务配置最初加载,并缓存到 RESTConfiguration 组件中。对于 REST 服务的每个 HTTP 请求,RESTServiceServlet 组件将请求委托到 RESTActionController,它又会检索相应的映射、验证请求、创建ActionContext 组件以及路径和查询输入,并调用 Action 类 (例如,createUserAction)。Action 类调用后端业务服务进行处理。
RESTFul Web Api 服务框架(一)的更多相关文章
- 新作《ASP.NET Web API 2框架揭秘》正式出版
我觉得大部分人都是“眼球动物“,他们关注的往往都是目光所及的东西.对于很多软件从业者来说,他们对看得见(具有UI界面)的应用抱有极大的热忱,但是对背后支撑整个应用的服务却显得较为冷漠.如果我们将整个“ ...
- ASP.NET Web API 2框架揭秘
ASP.NET Web API 2框架揭秘(.NET领域再现力作顶级专家精讲微软全新轻量级通信平台) 蒋金楠 著 ISBN 978-7-121-23536-8 2014年7月出版 定价:108.0 ...
- 我所理解的RESTful Web API [Web标准篇]
REST不是一个标准,而是一种软件应用架构风格.基于SOAP的Web服务采用RPC架构,如果说RPC是一种面向操作的架构风格,而REST则是一种面向资源的架构风格.REST是目前业界更为推崇的构建新一 ...
- 我所理解的RESTful Web API [设计篇]
<我所理解的RESTful Web API [Web标准篇]>Web服务已经成为了异质系统之间的互联与集成的主要手段,在过去一段不短的时间里,Web服务几乎清一水地采用SOAP来构建.构建 ...
- About Restful Web Api Something.
这种轻量级的服务架构目前来说还是比较流行的,比如微信的公众平台的接口开发就是一个很好的案例,提到restful那么他到底是一个什么样的东西? REST(Representational State T ...
- 【ASP.NET MVC 学习笔记】- 19 REST和RESTful Web API
本文参考:http://www.cnblogs.com/willick/p/3441432.html 1.目前使用Web服务的三种主流的方式是:远程过程调用(RPC),面向服务架构(SOA)以及表征性 ...
- RESTful Web API 理解
REST 是一种应用架构风格,不是一种标准,是面向资源架构(ROA)风格,与具体技术平台无关,REST架构的应用未必建立在Web之上,与之对应的是传统的Web Service 采用的面向操作的RPC架 ...
- 《ASP.NET Web API 2框架揭秘》
<ASP.NET Web API 2框架揭秘> 基本信息 作者: 蒋金楠 出版社:电子工业出版社 ISBN:9787121235368 上架时间:2014-7-5 出版日期:2014 年7 ...
- RESTful Web API 实践
REST 概念来源 网络应用程序,分为前端和后端两个部分.当前的发展趋势,就是前端设备层出不穷(手机.平板.桌面电脑.其他专用设备...). 因此,必须有一种统一的机制,方便不同的前端设备与后端进行通 ...
随机推荐
- LightOJ1360 Skyscraper(DP)
题目大概是,一个数轴上n个线段,每个线段都有起始坐标.长度和权值,问从中取出没有公共交点的线段的最大权和. 取k次是个经典的最小费用最大流问题,不过这题建容量网络有20W个点,离散化最多也要6W个点, ...
- POJ1659 Frogs' Neighborhood(Havel定理)
给一个无向图的度序列判定是否可图化,并求方案: 可图化的判定:d1+d2+……dn=0(mod 2).关于具体图的构造,我们可以简单地把奇数度的点配对,剩下的全部搞成自环. 可简单图化的判定(Have ...
- 【BZOJ】1097: [POI2007]旅游景点atr(spfa+状压dp)
http://www.lydsy.com/JudgeOnline/problem.php?id=1097 首先还是我很sb....想到了分层图想不到怎么串起来,,,以为用拓扑序搞转移,,后来感到不行. ...
- Mina小例子
此例子解决了中文乱码问题. 客服端: MimaTimeClient.java package minaExamle.client; import java.net.InetSocketAddress; ...
- mysql中datetime比较大小问题 (转的)
方法一: 你也可以:select * from t1 where unix_timestamp(time1) > unix_timestamp('2011-03-03 17:39:05') an ...
- 字符串分割与存入List集合
List<string> namelist = new List<string>(); string[] namejh = null; string name= "张 ...
- FLTK 1.3.3 MinGW 4.9.1 Configuration 配置
Download FLTK 1.3.3 Download CMake 3.2.0 Start CMake 3.2.0, fill the source and destination: source: ...
- keepalived +mysql 实战
keepalived高可用可以用在很多应用上,比如keepalived+反向代理著名的nginx.keepalived+数据库主从.keepalived+文件分布等等... 安装keepalived ...
- [转]通过继承ConfigurationSection,在web.config中增加自定义配置
本文转自:http://www.blue1000.com/bkhtml/2008-02/55810.htm 前几天写了一篇使用IConfigurationSectionHandler在web.conf ...
- 【液晶模块系列基础视频】1.3.iM_TFT30模块简介
[液晶模块系列基础视频]1.3.iM_TFT30模块介绍 ============================== 技术论坛:http://www.eeschool.org 博客地址:http:/ ...