简介:

基于 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 服务框架(一)的更多相关文章

  1. 新作《ASP.NET Web API 2框架揭秘》正式出版

    我觉得大部分人都是“眼球动物“,他们关注的往往都是目光所及的东西.对于很多软件从业者来说,他们对看得见(具有UI界面)的应用抱有极大的热忱,但是对背后支撑整个应用的服务却显得较为冷漠.如果我们将整个“ ...

  2. ASP.NET Web API 2框架揭秘

    ASP.NET Web API 2框架揭秘(.NET领域再现力作顶级专家精讲微软全新轻量级通信平台) 蒋金楠 著   ISBN 978-7-121-23536-8 2014年7月出版 定价:108.0 ...

  3. 我所理解的RESTful Web API [Web标准篇]

    REST不是一个标准,而是一种软件应用架构风格.基于SOAP的Web服务采用RPC架构,如果说RPC是一种面向操作的架构风格,而REST则是一种面向资源的架构风格.REST是目前业界更为推崇的构建新一 ...

  4. 我所理解的RESTful Web API [设计篇]

    <我所理解的RESTful Web API [Web标准篇]>Web服务已经成为了异质系统之间的互联与集成的主要手段,在过去一段不短的时间里,Web服务几乎清一水地采用SOAP来构建.构建 ...

  5. About Restful Web Api Something.

    这种轻量级的服务架构目前来说还是比较流行的,比如微信的公众平台的接口开发就是一个很好的案例,提到restful那么他到底是一个什么样的东西? REST(Representational State T ...

  6. 【ASP.NET MVC 学习笔记】- 19 REST和RESTful Web API

    本文参考:http://www.cnblogs.com/willick/p/3441432.html 1.目前使用Web服务的三种主流的方式是:远程过程调用(RPC),面向服务架构(SOA)以及表征性 ...

  7. RESTful Web API 理解

    REST 是一种应用架构风格,不是一种标准,是面向资源架构(ROA)风格,与具体技术平台无关,REST架构的应用未必建立在Web之上,与之对应的是传统的Web Service 采用的面向操作的RPC架 ...

  8. 《ASP.NET Web API 2框架揭秘》

    <ASP.NET Web API 2框架揭秘> 基本信息 作者: 蒋金楠 出版社:电子工业出版社 ISBN:9787121235368 上架时间:2014-7-5 出版日期:2014 年7 ...

  9. RESTful Web API 实践

    REST 概念来源 网络应用程序,分为前端和后端两个部分.当前的发展趋势,就是前端设备层出不穷(手机.平板.桌面电脑.其他专用设备...). 因此,必须有一种统一的机制,方便不同的前端设备与后端进行通 ...

随机推荐

  1. POJ2396 Budget(有源汇流量有上下界网络的可行流)

    题目大概给一个有n×m个单元的矩阵,各单元是一个非负整数,已知其每行每列所有单元的和,还有几个约束条件描述一些单元是大于小于还是等于某个数,问矩阵可以是怎样的. 经典的流量有上下界网络流问题. 把行. ...

  2. HDU3586 Information Disturbing(树形DP)

    题目大概说一棵树有边权,要删掉一些边,使叶子到达不了树根1且删掉边的权和小于等于m,问删掉边中最大权的最小值能是多少. 考虑问题规模,与转移的时间复杂度,用这么个状态dp: dp[u][k]表示在u结 ...

  3. 奇妙的旅行[XDU1012]

    Problem 1012 - 奇妙的旅行 Time Limit: 1000MS   Memory Limit: 65536KB   Difficulty: Total Submit: 396  Acc ...

  4. BZOJ 1121 & science

    1121: [POI2008]激光发射器SZK Time Limit: 10 Sec Memory Limit: 162 MB Submit: 647 Solved: 537 [Submit][Sta ...

  5. elasticsearch1.0 升级2.2的数据备份和恢复

    近期由于elasticsearch的版本升级,需要研究下elasticsearch的快照(snapshot)和恢复(restore)功能.   先说下背景,目前环境采用的是elasticsearch1 ...

  6. 低调的华丽,Windows Server 2003 ... 写给厌倦了XP,但又纠结于vista/win7花哨的童鞋(转)

    发布于2001年10月25日的windows XP 距今已近8年 时间, 微软从没有一个操作系统能像XP那样  坚挺这么久,婚姻既有7年之痒,何况用了8年XP的广大 同学,但07年发布的vista似乎 ...

  7. Shell 函数 function [转]

    本文也即<Learning the bash Shell>3rd Edition的第四章Basic Shell Programming之读书笔记,但我们将不限于此. 运行shell脚本程序 ...

  8. shell if判断语句

    测试脚本是否有语法错误: sh  -n  脚本名 一.if语句: 二.逻辑运算解析: -f  判断文件是否存在 -d 判断目录是否存在 -eq 判断是否相等 -ne 判断是否不相等 -lt 小于 -g ...

  9. 浅谈WPF页间导航

    浅谈WPF页间导航 使用导航的目的是从一个页面进入到另一个页面.无论是预先决定的线性顺序(向导)还是基于层次的用户驱动程序(大部分网站的形式),或者动态生成的路径,主要有3种方法实现:调用Naviga ...

  10. 常用NuGet插件

    1.Install-Package System.Data.SQLite 2.Install-Package FluentData