使用RpcLite构建SOA/Web服务

使用RpcLite构建SOA/Web服务

SOA框架系列

1. 使用RpcLite构建SOA/Web服务

提到Web服务最先想到的就是WebService此外常用的还有WCF、ServiceStack、WebApi等。

RpcLite是一个开源的轻量级SOA服务框架,除了基本的提供Web服务还包括SOA治理系统(本文暂不展开在后继的文章会详细说明)。RpcLite与WCF比较像,下面介绍使用方法。

1.   创建一个Web项目,Framework选择>=4.0

2.   从NuGet中添加RpcLite

安装后项目中会添加一个TestService1.cs文件,此文件是一个最简单的服务提供一个接口GetDateTimeString返回当前时间的字符串

Web.config也添加了相关的配置

3.   修改配置

到此为止,最简单有服务就已经完成了。F5运行在浏览器中把地址改为http://localhost:53189/api/test/GetDateTimeString可看到接口返回的结果,用JQuery, Ajax都可以访问了。

4.   基本原理

架构图

RpcLite的入口是一个异步HttpHandler,在Handler中会把RequestUrl、ContentType、RequestStream、ResponseStream、HttpContext等放到一个新的ServiceContext中交给RpcService处理,RpcService会根据RequestUrl找到对应的Service及Action根据ContentType选择序列化方式(默认支持json、xml,可以添加自定义序列化方式),然后反序列化得到参数,再使用参数调用具体的服务方法,得到结果后返回给客户端。

5.   配置文件说明

 

再来看Web.config,

标记1. 添加HttpHandler添加后对应地址的请求会被RpcAsyncHandler处理。

标记2. 添加RpcLite配置节点处理器,添加后RpcLite就能读取RpcLite节点中的数据。

标记3. 此处添加了一个服务,name只起识别作用最好不要重复,path确定此服务会处理来自哪些url地址的请求需要使用虚拟目录相对地址即以~/开头,type设置实现此服务的类格式是<类全名>, 程序集名。

标记4. 这里是添加一个客户端配置,如果创建客户端实例时未指定服务url则会使用这里设置的path。如ClientFactory.GetInstance<ITestService>()此处未指定服务url就会从配置中查找。

其它. appId、environment、namespace与治理系统相关此处不展开明说。

代码从下面给出的git中获取。

6.   相关链接

Demo git 地址:https://github.com/chrishaly/RpcLiteDemo

RpcLite git 地址:https://github.com/aolyn/RpcLite

NuGet: https://www.nuget.org/packages/RpcLite

夜深了、写文章比写代码麻烦。这个框架前年2014年就写得差不多了,一直没时间介绍。有兴趣的朋友可以在git上fork & pull request。

联系方式

后继会有系列文章详细介绍

thanks & regards.

Chris

时间: 2024-08-07 10:57:42

使用RpcLite构建SOA/Web服务的相关文章

使用RpcLite构建SOA/Web服务(Full .Net Framework)

使用RpcLite构建SOA/Web服务(Full .Net Framework) SOA框架系列 1. 使用RpcLite构建SOA/Web服务 2. 使用RpcLite构建SOA/Web服务(Full .Net Framework) 继前一篇文章<使用RpcLite构建SOA/Web服务>已过去好几个月.在这几个月里对RpcLite作了很多修改如:.Net Core的支持.Fluent API方式配置.Monitor.Filter等功能. 前一篇文章介绍了使用RpcLite的基本用法,在文

Yii2快速构建RESTful Web服务功能简介

Yii2相比Yii1而言,一个重大的改进是内置了功能完备的RESTful支持. 其内置RESTful支持提供了如下功能: 使用ActiveRecord的通用接口来快速构建原型: 应答格式协商(缺省支持 JSON 和 XML): 可定制的对象序列化,支持选择输出哪些列: 请求数据的格式化以及验证错误: 通过HTTP 动词映射实现高效路由: 支持 OPTIONS 和 HEAD 动词: 认证 和 鉴权: 支持 HATEOAS(RESTful的架构约束,超媒体即应用程序状态): 结果缓存,可使用 yii

基于IIS构建Pyathon Web服务

本文简单叙述了在Windows下,如何利用IIS构建Python Web服务. 其主要步骤如下: 1.在IIS下构建一个站点,如图: 2.配置Python文件的处理程序,如图: 3.最后,在对应站点根目录下放置Python文件,如图: 是不是感觉好简单.我们在浏览器看看结果,如图:

使用 Jersey 和 Apache Tomcat 构建 RESTful Web 服务

RESTful Web 服务简单介绍 REST 在 2000 年由 Roy Fielding 在博士论文中提出,他是 HTTP 规范 1.0 和 1.1 版的首席作者之中的一个. REST 中最重要的概念是资源(resources),使用全球 ID(通常使用 URI)标识. client应用程序使用 HTTP 方法(GET/ POST/ PUT/ DELETE)操作资源或资源集.RESTful Web 服务是使用 HTTP 和 REST 原理实现的 Web 服务.通常,RESTful Web 服

.net/java调用NuSOAP构建的Web服务

此文主要解决php下的web服务接受和返回复杂类型(自定义类型)该如何构建以及其他程序客户端如何来调用. 第一步:用NuSOAP组件来构建基于php的webservice 下载NuSOAP组件,在创建基于php的webservice时需要引用,代码如下,很简单直观,有注释就不多解释了: <?php require_once ('lib/nusoap.php'); // 返回的是一个数组 function adduser ($userName, $userAge, $birthday, $high

基于jersey和Apache Tomcat构建Restful Web服务(一)

基于jersey和Apache Tomcat构建Restful Web服务(一) 现如今,RESTful架构已然成为了最流行的一种互联网软件架构,它结构清晰.符合标准.易于理解.扩展方便,所以得到越来越多网站的采用.那么问题来了,它是什么呢? 起源 REST(Representational state transfer)在 2000 年由 Roy Fielding 在博士论文中提出,他是 HTTP 规范 1.0 和 1.1 版的首席作者之一. REST 中最重要的概念是资源(resources

基于jersey和Apache Tomcat构建Restful Web服务(二)

基于jersey和Apache Tomcat构建Restful Web服务(二) 上篇博客介绍了REST以及Jersey并使用其搭建了一个简单的“Hello World”,那么本次呢,再来点有趣的东西,当然也是很简单了,仅仅是在路径中包含参数而已了.接下来开始动手实践吧. 在路径中包含参数 接下来就在上次的基础上进行改动即可,或者是再添加一个方法,随意了,这个方法主要就是在路径中加入输入的参数,并且根据参数的不同,它的返回值也不同,返回值为“Hello”+你输入的参数.这里用到了“PathPar

SpringBoot实战(十)之使用Spring Boot Actuator构建RESTful Web服务

一.导入依赖 <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.

Yii2高速构建RESTful Web服务功能简单介绍

Yii2相比Yii1而言,一个重大的改进是内置了功能完备的RESTful支持. 其内置RESTful支持提供了例如以下功能: 使用ActiveRecord的通用接口来高速构建原型: 应答格式协商(缺省支持 JSON 和 XML). 可定制的对象序列化,支持选择输出哪些列. 请求数据的格式化以及验证错误: 通过HTTP 动词映射实现高效路由: 支持 OPTIONS 和 HEAD 动词: 认证 和 鉴权: 支持 HATEOAS(RESTful的架构约束,超媒体即应用程序状态): 结果缓存.可使用 y