EMSA简介及其使用方法
来源:互联网 发布:淘宝网老年棉拖鞋 编辑:程序博客网 时间:2024/06/06 01:52
一、EMSA简介
1.1、什么是EMSA
我们的微服务EMSA是个基于ServiceStack实现的.NET Web Services框架。而ServiceStack本身支持通用的轻量级协议和Metadata。另外,它还可以再扩展以API Gateway的方式实现Open API。EMSA V1.0是基于ServiceStack目前最新的版本号4.0.60实现的。
微软提供有WCF Web Services框架。和这个框架比,EMSA主要具有如下它们没有的优势:
1、 高性能
2、 支持跨平台运行:基于EMSA开发出的Web Services既能够运行在Windows环境中,又能够运行在支持Mono的Linux环境中。
3、 支持多协议,如:JSON格式的也支持XSD。
4、 更加web化:RESTFUL。
5、 服务端实现与客户端实现的完全解耦:EMSA基于消息的设计,使得服务端的API改变并不会破坏现有的客户端,达到服务端实现与客户端实现完全解耦的目的。
6、 EMSA API可视化说明文档便于您学习、调试和测试。
7、 易学:使用EMSA进行开发和维护服务所需的技术投入要小很多。
8、 易用:简化了REST以及WCF SOAP风格的Web Services的开发过程。
1.2、EMSA的架构
EMSA的架构请见图1,它的HTTP客户端架构请见图2。它的内部是建立在原生的ASP.NET IHttpHandler之上实现的,支持JSON、XML、JSV、HTML、Message Pack、ProtoBuf、CSV等消息格式。
二、如何使用EMSA
2.1、基础知识
1、 路由:
A、由EMSA创建的默认路由:/[xml|json|html|jsv|csv]/[reply|oneway]/[Request DTO名] [(?query参数1={值}&query参数2={值}&......&query参数n={值})]。
B、创建自定义路由方法:使用RouteAttribute或在宿主环境中配置。提供的Demo采用的是后者方法来创建自定义路由。
2、如何验证请求参数的合法性:
如果您需要在提交请求参数前,验证请求参数是否必填或是否合法,那么验证逻辑必须写在继承自EMSA的AbstractValidator<TRequest>的类里(参考例子请见Demo的OrderValidator.cs),然后在宿主环境中进行开启验证的配置:
Plugins.Add(new ValidationFeature());container.RegisterValidator(typeof(OrderValidator));
3、服务:
创建EMSA服务时,必须继承来自EMSA的Service类。
4、服务托管:
服务端的服务对外提供服务前,必须先要把服务端给托管起来。EMSA提供了通过IIS、Self-Host等多种形式把服务端给托管起来,宿主环境可以是控制台应用或Windows Service或ASP.NET Web应用或ASP.NET MVC应用。提供的Demo的宿主环境用的是ASP.NET Web应用。
5、EMSA内置的客户端:
5.1、EMSA内置了一些便捷访问的客户端,这些对象都实现了IServiceClient接口,其中支持REST的客户端还都实现了IRestClient接口。这些客户端对象包括:JsonServiceClient、JsvServiceClient、XmlServiceClient、MsgPackServiceClient、ProtoBufServiceClient、Soap11ServiceClient、Soap12ServiceClient等。从名称可以看出,这几种不同之处在于支持的序列化和反序列化格式不同。因为它们实现的是相同的接口,所以它们的用法相同,也可以相互替换。
Demo中用到了JsonServiceClient和ProtoBufServiceClient这两种客户端,其中当用到ProtoBufServiceClient客户端时,您还需要完成如下工作:
a、 除了需要引用EMSA.dll外,还需要引用protobuf-net.dll。
b、 需要在宿主环境中进行如下配置:
Plugins.Add(new ProtoBufFormat());
c、必须分别给Request DTO对象和Response DTO对象的各属性标上[DataMember(Order = {0})]特性,具体写法请见Demo的ProductRequestDTO.cs和ProductResponseDTO.cs。
5.2、EMSA内置的客户端提供Get、Send、Post、Put、Delete等方法。查询数据一般用Get方法,新增操作一般用Post方法,更新操作一般用Put方法,删除操作一般用Delete方法。
这些方法都有重载,Demo中用到了其中一个:
以Get方法为例:
TResponse Get<TResponse>(IReturn<TResponse> requestDto);
6、为了能够成功查阅EMSA API可视化说明文档,您需要在宿主环境中进行如下配置:JsConfig.EmitCamelCaseNames = false;Plugins.Add(new SwaggerFeature()); Plugins.Add(new CorsFeature("*.test.euet.net"));
三、Json格式化/美化、数据查阅在线工具
http://web.chacuo.net/formatjson/ 在线格式化、美化Json代码
http://json.parser.online.fr/ Json Parser Online
四、参考资料
ServiceStack官网:https://servicestack.net/
三、Json格式化/美化、数据查阅在线工具
http://web.chacuo.net/formatjson/ 在线格式化、美化Json代码
http://json.parser.online.fr/ Json Parser Online
四、参考资料
ServiceStack官网:https://servicestack.net/https://github.com/ServiceStack/ServiceStack/wiki/Metadata-page
转自朋友的文章,请尊重作者的心血,转载请注明出处!3、服务:
创建EMSA服务时,必须继承来自EMSA的Service类。
4、服务托管:
服务端的服务对外提供服务前,必须先要把服务端给托管起来。EMSA提供了通过IIS、Self-Host等多种形式把服务端给托管起来,宿主环境可以是控制台应用或Windows Service或ASP.NET Web应用或ASP.NET MVC应用。提供的Demo的宿主环境用的是ASP.NET Web应用。
5、EMSA内置的客户端:
5.1、EMSA内置了一些便捷访问的客户端,这些对象都实现了IServiceClient接口,其中支持REST的客户端还都实现了IRestClient接口。这些客户端对象包括:JsonServiceClient、JsvServiceClient、XmlServiceClient、MsgPackServiceClient、ProtoBufServiceClient、Soap11ServiceClient、Soap12ServiceClient等。从名称可以看出,这几种不同之处在于支持的序列化和反序列化格式不同。因为它们实现的是相同的接口,所以它们的用法相同,也可以相互替换。
Demo中用到了JsonServiceClient和ProtoBufServiceClient这两种客户端,其中当用到ProtoBufServiceClient客户端时,您还需要完成如下工作:
a、 除了需要引用EMSA.dll外,还需要引用protobuf-net.dll。
b、 需要在宿主环境中进行如下配置:
Plugins.Add(new ProtoBufFormat());
c、必须分别给Request DTO对象和Response DTO对象的各属性标上[DataMember(Order = {0})]特性,具体写法请见Demo的ProductRequestDTO.cs和ProductResponseDTO.cs。
5.2、EMSA内置的客户端提供Get、Send、Post、Put、Delete等方法。查询数据一般用Get方法,新增操作一般用Post方法,更新操作一般用Put方法,删除操作一般用Delete方法。
这些方法都有重载,Demo中用到了其中一个:
TResponse Get<TResponse>(IReturn<TResponse> requestDto);
JsConfig.EmitCamelCaseNames = false;Plugins.Add(new SwaggerFeature()); Plugins.Add(new CorsFeature("*.test.euet.net"));
三、Json格式化/美化、数据查阅在线工具
http://web.chacuo.net/formatjson/ 在线格式化、美化Json代码
http://json.parser.online.fr/ Json Parser Online
四、参考资料
ServiceStack官网:https://servicestack.net/
三、Json格式化/美化、数据查阅在线工具http://web.chacuo.net/formatjson/ 在线格式化、美化Json代码
http://json.parser.online.fr/ Json Parser Online
四、参考资料
ServiceStack官网:https://servicestack.net/
- EMSA简介及其使用方法
- ncurses简介及其使用方法
- LIBSVM简介及其使用方法
- LIBSVM简介及其使用方法
- xUtils简介及其使用方法
- xUtils简介及其使用方法
- xUtils简介及其使用方法
- Redis简介及其使用方法
- chmod简介及其使用方法
- LIBSVM简介及其使用方法
- VC创建动态库及其使用方法简介
- VC创建动态库及其使用方法简介
- [LIBSVM资料] LIBSVM简介及其使用方法(台湾大学林智仁(Lin Chih-Jen)副教授等)
- Java爬虫入门简介(一) —— HttpClient请求及其使用方法
- select函数及其使用方法
- Base64详解及其使用方法
- 什么是JTAG及其使用方法
- 余数计算方法及其使用方法
- Java(socket通信)
- mongodb从内嵌数据对象中获取指定元素
- Windows图形设备接口类概述
- Linux基础
- centos 6.5安装python3.4
- EMSA简介及其使用方法
- 解释型语言和编译型语言的区别
- jquery 格式化日期显示
- android 7.0 多窗口及新特性demo
- Android中HttpURLConnection使用get方式向服务器提交json字符串
- pmtest3源码解析:使用LDT
- PHP匿点源码之变量赋值与引用
- 频宽、带宽和频带关系
- 分支管理