使用RpcLite构建SOA/Web服务(Full .Net Framework)
使用RpcLite构建SOA/Web服务(Full .Net Framework)
SOA框架系列
2. 使用RpcLite构建SOA/Web服务(Full .Net Framework)
继前一篇文章《使用RpcLite构建SOA/Web服务》已过去好几个月。在这几个月里对RpcLite作了很多修改如:.Net Core的支持、Fluent API方式配置、Monitor、Filter等功能。
前一篇文章介绍了使用RpcLite的基本用法,在文章中介绍的配置方式为配置文件使用起来比较麻烦。本文配置使用Fluent API方式,在.Net Core中可以完全不使用配置文件,在Asp.Net中仅需要添加一个HttpModule。
创建服务端
Full .Net Framework中现只支持Host到ASP.NET中。
创建服务包括以下步骤:
- 创建Web Application工程
- 添加RpcLite引用
- Web.config添加RpcHttpModule
- 创建服务契约接口
- 通过实现服务契约接口创建服务类
- 在Global.asax中初始化RpcLite
创建Web Application工程
- 打开Visual Studio 2015
- 打开菜单File ‣ New ‣ Project...
- 在左边的菜单中选择 Templates ‣ Visual C# ‣ Web
- 在项目类型中选择 ASP.NET Web Application (.Net Framework)
- 确保目标Framework版本为 .NET Framework 4.0 或更高
- 填写项目名称HelloRpcLiteService点Ok
添加RpcLite引用
添加引用有两种方式:直接下载dll然后引用、通过NuGet添加,其中通过NuGet添加简单方便,本文以此方式为例。 通过NuGet添加也有两种方式:图形界面或命令行
命令行
- 打开菜单Tools ‣ NuGet Package Manager ‣ Package Manager Console
- 运行 Install-Package RpcLite
图形界面
- 在Solution Explorer中右击HelloRpcLite,选择Manage NuGet Packages...
- 在NuGet页面中选择Browse Tab页,然后搜索RpcLite
- 在搜索结果中安装RpcLite
Web.config添加RpcHttpModule
在configuration/system.webServer节点下添加 <add name=”RpcLite” type=”RpcLite.Service.RpcHttpModule, RpcLite.NetFx” />
完整配置如下:
<?xml version="1.0" encoding="utf-8"?> <configuration> <system.webServer> <modules> <add name="RpcLite" type="RpcLite.Service.RpcHttpModule, RpcLite.NetFx" /> </modules> </system.webServer> </configuration>
创建服务契约接口
- 新建类文件IProductService.cs
- 输入以下内容
namespace HelloRpcLiteService { public interface IProductService { string GetDateTimeString(); } }
通过实现服务契约接口创建服务类
- 新建类文件ProductService.cs
- 输入以下内容
using System; namespace HelloRpcLiteService { public class ProductService : IProductService { public string GetDateTimeString() { return DateTime.Now.ToString(); } } }
在Global.asax中初始化RpcLite
- 向工程中添加Global.asax
- 在Application_Start函数中添加初始化代码
using System; using RpcLite.Config; namespace HelloRpcLiteService { public class Global : System.Web.HttpApplication { protected void Application_Start(object sender, EventArgs e) { RpcInitializer.Initialize(builder => builder .UseService<ProductService>("ProductService", "api/service/") .UseServicePaths("api/") ); } } }
说明
- UseService<ProductService>(“ProductService”, “api/service/”)是添加一个服务 泛型参数ProductService为服务提供类, 第一个参数”ProductService”为服务名 “api/service/”为服务相对于当前WebApplication根的地址,例如WebApplication地址为http://localhost:8080则服务地址为http://localhost:8080/api/service/。若服务部署到虚拟目录下如http://localhost:8080/app1则服务地址为http://localhost:8080/app1/api/service/
- UseServicePaths(“api/”)指定服务地址的前缀,以此地址开始的所有Url都会被认为是RpcLite服务,UseService中使用的路必需在ServicePaths中。若没有配置此选项则不能正常访问服务。
运行
- F5运行WebApplication,在浏览器中查看地址,假设是http://localhost:11651
- 在浏览器访问http://localhost:11651/api/service/GetDateTimeString,可看到返回的内容是当前日期
- 在浏览器访问http://localhost:11651/api/service/可以看到当前服务的信息,服务名及所有接口名
Service Name: ProductService
Actions:
String GetDateTimeString();
通过RpcLite客户端、JavaScript就可以访问这个服务了。
本文代码地址 https://github.com/aolyn/rpclite.docs/tree/master/samples/HelloRpcLite/src/HelloRpcLiteService
也可直接下载zip包:https://codeload.github.com/aolyn/rpclite.docs/zip/master
QQ群:364617712
欢迎加入
联系方式