使用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

QQ群:364617712 

欢迎加入

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

联系方式

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

thanks & regards.

Chris

最新文章

  1. Btree 索引
  2. kendo chart label position 图表的值标签位置及显示模板
  3. tyvj1098[luogu 2365]任务安排 batch
  4. 使用hibernate时出现 org.hibernate.HibernateException: Unable to get the default Bean Validation factory
  5. spring 第一篇(1-1):让java开发变得更简单(下)
  6. tomcat配置虚拟目录映射
  7. Oracle ORA-12519: TNS:no appropriate service handler found 解决
  8. centos6.7下编译安装lnmp
  9. CLR via C# 序列化读书笔记
  10. php如何查找会员无限分类的所有上级和所有下级
  11. JDK Tools - jps: JVM 进程状态工具
  12. python3实现的web端json通信协议
  13. Android开发之文件下载,状态时显示下载进度,点击自动安装
  14. 一位资深程序员给予Java初学者的学习路线建议
  15. Django 表单校验 表单字段设置 自定义表单校验规则
  16. MSSQL TABLE COPY TABLE
  17. NC 63凭证辅助相关表
  18. 使用Fraps获取3D程序的FPS
  19. VBA 根据Find方法根据特定内容查找单元格
  20. minio 对于压缩的处理

热门文章

  1. Numpy库进阶教程(一)求解线性方程组
  2. jmeter--九种定时器介绍(包括思考时间、集合点)
  3. 【Codeforces Round #433 (Div. 2) A】Fraction
  4. UML学习总结(3)——StarUML指导手册
  5. codeforces Round 246 D. Prefixes and Suffixes (后缀数组 || KMP)
  6. 【高德地图API】从零開始学高德JS API(五)路线规划——驾车|公交|步行
  7. C语言深度剖析-----数组与指针分析
  8. 使用Perl合并文件
  9. POSIX 多线程编程及理解
  10. libSVM介绍(二)