开源地址:https://github.com/yuzd/AntServiceStack
框架特色
0.Service Management(服务治理)
1.CodeGen Contract First(契约先行)
2.consul服务发现
3.Plugin 可插拔
4.同时支持XML, JSON, Proto-buf(binary)等序列化格式同时支持Restful和RPC调用方式
5.统一的错误处理模型(Unified Error Handling Model)
6.统一的请求验证模型(Unified Request Validation Model)
7.熔断功能
8.支持Aajx, JSONP等Web 2.0调用方式
部署consul
consul.exe agent -dev -advertise=192.168.1.2 -client 192.168.1.2
部署服务治理
1.系统的DB
(sql文件在AntServiceStack.Manager\Config\antsoa_20170328.sql)
有2张表 结构如下
services 服务表
nodes 服务节点表
创建好db后
2.配置环境
配置1步骤中部署的db
配置之前部署的consul地址
打开服务治理系统
如何使用?
1.创建一个服务
2.创建一个web服务[TestHelloWorld]
新建一个 global.asax
添加soa 框架的引用
我们开始写契约(建议新建一个Contract的文件夹)
然后编辑 刚才添加的 HelloWorld.xsd文件将common的引用进来
下面我们开始写接口的契约
首先得安装codegen
搜索 Ant.SOA.CodeGen 安装 [注意目前暂时只支持vs2015 vs2013如果有需要可以修改一下配置重新做一个vsix安装包即可]
假设我们想要下面的接口
接口名称为SayHello
Request类型为Enum字段 0 代表中文 1代表日文
Response类型有一个字段(string)
为了配合codegen使用 有一些约定
1.Request的类型得已Request结尾
2.Response的类型得已Response结尾,必须带上公共的返回字段(因为框架有统一的错误处理模型(Unified Error Handling Model))
使用CodeGen 将xsd转成 wsdl文件
第一次使用需要从服务治理中心同步一下
填写服务治理中心的访问地址 + Service/GetAllRemoteServices
例如我的服务治理中心的地址为
点击同步后
下一步
下一步
然后一直点击下一步直至结束
然后根据wsdl 生成代码
先生成server端
生成Client
ITestHelloWorldService.cs 有一个接口 我们要实现下这个服务
创建一个SoaController.cs 继承 ITestHelloWorld
并实现下功能
然后新建一个ServerHost.cs 继承 AppHostBase
配置服务发现
注意 web.config文件里面要配置consul的地址 和 框架指定的 httphandle
如下:
F5启动
就会去consul注册服务
我们刷新服务治理中心的 【服务发现】
已经成功注册服务
框架已经继承了swagger-ui
可以很方便的对接口进行测试
到此为止 我们用Ant.soa做的服务已经发布上线了
如果你部署到多太机器 也是都可以成功上线的。
下面在介绍下如何把服务给到别人去使用
之前我们有介绍用codegen生成client端的cs文件
这个就是给到别人使用的契约 一般我们都是给dll文件对吧
生成好dll
下面我来搞一个console程序来测试这个client dll 来调用 刚才的服务
app要记得配置soa的服务中心的地址 加上 固定后缀为/antsoa
demo下载地址