使用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的基本用法,在文章中介绍的配置方式为配置文件使用起来比较麻烦。本文配置使用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

默认情况下添加RpcLite包依赖后Web.Config会自动添加,若已自动添加请忽略本小节的操作
在集成管道模式和经典管道模式中添加HttpModule方式不同,本文以现在用得最多的集成管道模式说明

在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中。若没有配置此选项则不能正常访问服务。

运行

到此一个RpcLite服务已经创建完成,可运行查看结果。
  • 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 

欢迎加入

联系方式

使用RpcLite构建SOA/Web服务(Full .Net Framework)的更多相关文章

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

    使用RpcLite构建SOA/Web服务 SOA框架系列 1. 使用RpcLite构建SOA/Web服务 提到Web服务最先想到的就是WebService此外常用的还有WCF.ServiceStack ...

  2. 使用 Spring 3 MVC HttpMessageConverter 功能构建 RESTful web 服务

    原文地址:http://www.ibm.com/developerworks/cn/web/wa-restful/ 简介: Spring,构建 Java™ 平台和 Enterprise Edition ...

  3. 用于构建 RESTful Web 服务的多层架构

    作者:Bruce Sun, Java 架构师, IBM 出处:http://www.ibm.com/developerworks/cn/web/wa-aj-multitier/ 用于构建 RESTfu ...

  4. 基于IIS构建Pyathon Web服务

    本文简单叙述了在Windows下,如何利用IIS构建Python Web服务. 其主要步骤如下: 1.在IIS下构建一个站点,如图: 2.配置Python文件的处理程序,如图: 3.最后,在对应站点根 ...

  5. Guzzle – 构建 RESTful Web 服务的 PHP HTTP 框架

    Guzzle 减轻了发送 HTTP 请求和创建 Web 服务客户端的痛苦.它包含建立一个强大的网络服务客户端的工具,包括:服务描述定义的输入和输出的 API,资源迭代器遍历分页资源,尽可能有效地发送大 ...

  6. WCF:为 SharePoint 2010 Business Connectivity Services 构建 WCF Web 服务(第 1 部分,共 4 部分)

    转:http://msdn.microsoft.com/zh-cn/library/gg318615.aspx 摘要:通过此系列文章(共四部分)了解如何在 Microsoft SharePoint F ...

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

    一.导入依赖 <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http ...

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

    基于jersey和Apache Tomcat构建Restful Web服务(二) 上篇博客介绍了REST以及Jersey并使用其搭建了一个简单的“Hello World”,那么本次呢,再来点有趣的东西 ...

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

    基于jersey和Apache Tomcat构建Restful Web服务(一) 现如今,RESTful架构已然成为了最流行的一种互联网软件架构,它结构清晰.符合标准.易于理解.扩展方便,所以得到越来 ...

随机推荐

  1. 【Codeforces Round #447 (Div. 2) B】Ralph And His Magic Field

    | [链接] 我是链接,点我呀:) [题意] 给你一个n*m矩阵,让你在里面填数字. 使得每一行的数字的乘积都为k; 且每一列的数字的乘积都为k; k只能为1或-1 [题解] 显然每个位置只能填1或- ...

  2. 【河南省多校脸萌第六场 B】点兵点将

    [链接]点击打开链接 [题意] 在这里写题意 [题解] 先每个单位都不建造bi; 打死一个ai之后,把bi加入到大根堆里面. 然后等到不够打死某个单位的时候; 从大根堆里面取出最大的那个bi;不断取, ...

  3. Codeforces #28 C.Bath Queue (概率dp)

    Codeforces Beta Round #28 (Codeforces format) 题目链接: http://codeforces.com/contest/28/problem/C 题意: 有 ...

  4. 编程——C语言的问题,堆栈

    堆和栈的区别一.预备知识—程序的内存分配一个由c/C++编译的程序占用的内存分为以下几个部分 1.栈区(stack)— 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等.其操作方式类似于数据结 ...

  5. Loadrunner--基准测试的两种方法

    2 练习基准测试方法1 2.1 问题 为登录业务设计场景. 2.2 方案 在控制台中使用循环多次的方式执行场景.(多次数) 2.3 步骤 实现此案例需要执行以下步骤: 步骤一: 1.打开控制台,如下图 ...

  6. js进阶 12-14 jquery的事件触发函数是哪两个

    js进阶 12-14 jquery的事件触发函数是哪两个 一.总结 一句话总结:trigger和triggerHandler 1.trigger传额外参数时候的注意事项是什么? 注意样例中是三个参数 ...

  7. [慕课笔记] node+mongodb建站攻略

    如何利用node+mongodb来快速搭建一个电影网站? 一:后端部分 整个网站的后端是由node.js来驱动的,所以在后端需要安装node.js,以及在这个基础之上的框架express,它能够帮助我 ...

  8. Remove Duplicates from Sorted Array [Python]

    Given a sorted array, remove the duplicates in place such that each element appear only once and ret ...

  9. mysql快速入门 分类: B6_MYSQL 2015-04-28 14:31 284人阅读 评论(0) 收藏

      debian方式: apt-get install mysql-server-5.5 mysql -u root -p   redhat安装方式 一.下载并解压 $ wget http://cdn ...

  10. 基于深度学习的人脸识别系统系列(Caffe+OpenCV+Dlib)——【四】使用CUBLAS加速计算人脸向量的余弦距离

    前言 基于深度学习的人脸识别系统,一共用到了5个开源库:OpenCV(计算机视觉库).Caffe(深度学习库).Dlib(机器学习库).libfacedetection(人脸检测库).cudnn(gp ...