微服务架构概念的提出已经有很是长一段时间了,但在近期几年却开始频繁地出现,你们都着手升级成微服务架构,使用着各类技术,你们认为框架有服务治理就是微服务,实现单一协议的服务调用,微服务虽然没有太明确的定义,可是我认为服务应该是一个或者一组相对较小且独立的功能单元,能够自由组合拆分,针对于业务模块的 CRUD 能够注册为服务,而每一个服务都是高度自治的,从开发,部署都是独立,而每一个服务只作单一功能,利用领域驱动设计去更好的拆分红粒度更小的模块,而框架自己提供了多种协议,如ws,tcp,http,mqtt,rtp,rtcp, 而且有各类功能的中间件,所开发的业务模块,经过框架能够适用于各类业务场景,让开发人员专一于业务开发这才是真正意义上的微服务。javascript
以上只是谈下微服务,避免一些人走向误区。而这篇文章主要介绍下surging如何使用swagger 组件测试业务模块
html
surging源码下载java
surging 集成了Kestrel组件而且扩展swagger组件,如下介绍下如何使用swagger组件git
针对于 swagger 须要生成 schema,那么须要加载接口模块的xml文档文件,能够经过项目-属性-生成-xml文档文件 进行设置,以下图所示github
经过以上设置,若是扫描加载业务模块,可使用dotnet publish -c release 生成模块文件,以下图所示架构
使用swagger ,若是使用官方提供的surging 引擎的话,就须要开启Kestrel组件,如如下配置所示app
"Surging": { "Ip": "${Surging_Server_IP}|127.0.0.1", "WatchInterval": 30, "Port": "${Surging_Server_Port}|98", "MappingIp": "${Mapping_ip}", "MappingPort": "${Mapping_Port}", "Token": "true", "MaxConcurrentRequests": 20, "ExecutionTimeoutInMilliseconds": 30000, "Protocol": "${Protocol}|None", //Http、Tcp、None "RootPath": "${RootPath}|D:\\userapp", "Ports": { "HttpPort": "${HttpPort}|280", "WSPort": "${WSPort}|96" }, "RequestCacheEnabled": false, "Packages": [ { "TypeName": "EnginePartModule", "Using": "${UseEngineParts}|DotNettyModule;NLogModule;MessagePackModule;ConsulModule;KestrelHttpModule;WSProtocolModule;EventBusRabbitMQModule;CachingModule;" } ] }
如下是配置swagger,若是不添加如下配置,能够禁用swagger框架
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
"Swagger"
: {
"Version"
:
"${SwaggerVersion}|V1"
,
// "127.0.0.1:8500",
"Title"
:
"${SwaggerTitle}|Surging Demo"
,
"Description"
:
"${SwaggerDes}|surging demo"
,
"Contact"
: {
"Name"
:
"API Support"
,
"Url"
:
"https://github.com/dotnetcore/surging"
,
"Email"
:
"fanliang1@hotmail.com"
},
"License"
: {
"Name"
:
"MIT"
,
"Url"
:
"https://github.com/dotnetcore/surging/blob/master/LICENSE"
}
}
|
经过以上设置,就能够经过http://127.0.0.1:280/swagger进行访问,效果以下图所示tcp
经过swagger 引擎组件可以生成业务接口文档,可以更好的和团队进行协做,而surging计划是去网关中心化,会扩展'关卡(stage)'引擎组件以代替网关,同时也会扩展更多的通讯协议,也欢迎你们扩展引擎组件,让生态更强大。
微服务