框架特色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
打开consul ui(http://192.168.1.2:8500/ui)确保访问没有问题
 
部署服务治理
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下载地址
 

希望有兴趣的朋友加入我一起来完善这个框架
qq群609142508

Ant.SOA微服务框架开源的更多相关文章

  1. 基于.NET CORE微服务框架 -surging的介绍和简单示例 (开源)

    一.前言 至今为止编程开发已经11个年头,从 VB6.0,ASP时代到ASP.NET再到MVC, 从中见证了.NET技术发展,从无畏无知的懵懂少年,到现在的中年大叔,从中的酸甜苦辣也只有本人自知.随着 ...

  2. atititi.soa  微服务 区别 联系 优缺点.doc

    atititi.soa  微服务 区别 联系 优缺点.doc 1. 应用微服务的动机,跟传统巨石应用的比较1 2. 面向服务架构(SOA)  esb2 3. 微服务架构(Microservices)2 ...

  3. 面试都在问的微服务、服务治理、RPC、下一代微服务框架... 一文带你彻底搞懂!

    文章每周持续更新,「三连」让更多人看到是对我最大的肯定.可以微信搜索公众号「 后端技术学堂 」第一时间阅读(一般比博客早更新一到两篇) 单体式应用程序 与微服务相对的另一个概念是传统的单体式应用程序( ...

  4. 基于thrift的微服务框架

    前一阵开源过一个基于spring-boot的rest微服务框架,今天再来一篇基于thrift的微服务加框,thrift是啥就不多了,大家自行百度或参考我之前介绍thrift的文章, thrift不仅支 ...

  5. 基于spring-boot的rest微服务框架

    周末在家研究spring-boot,参考github上的一些开源项目,整了一个rest微服务框架,取之于民,用之于民,在github上开源了,地址如下: https://github.com/yjmy ...

  6. 【GoLang】GoLang 微服务、开源库等参考资料

    参考资料: GoLang书籍: https://github.com/dariubs/GoBooksGo名库: https://github.com/Unknwon/go-rock-libraries ...

  7. 【GoLang】golang 微服务框架 go-kit

    golang-Microservice Go kit - A toolkit for microservices kubernetes go-kit_百度搜索 Peter Bourgon谈使用Go和& ...

  8. 基于.NET CORE微服务框架 -谈谈surging API网关

    1.前言 对于最近surging更新的API 网关大家也有所关注,也收到了不少反馈提出是否能介绍下Api网关,那么我们将在此篇文章中剥析下surging的Api 网关 开源地址:https://git ...

  9. 基于.NET CORE微服务框架 -浅析如何使用surging

    1.前言 surging受到大家这么强烈的关注,我感到非常意外,比如有同僚在公司的分享会上分享surging, 还有在博客拿其它的RPC框架,微服务做对比等等,这些举动都让我感觉压力很大,毕竟作为个人 ...

随机推荐

  1. php微信网页授权获取用户信息

    配置回调域名: 1. 引导用户进入授权页面同意授权,获取code 2. 通过code换取网页授权access_token(与基础支持中的access_token不同) 3. 如果需要,开发者可以刷新网 ...

  2. UWP: ListView 中与滚动有关的两个需求的实现

    在 App 的开发过程中,ListView 控件是比较常用的控件之一.掌握它的用法,能帮助我们在一定程度上提高开发效率.本文将会介绍 ListView 的一种用法--获取并设置 ListView 的滚 ...

  3. Linux下自动备份MySQL

    使用expect和mysqldump备份 expect expect是一个免费的编程工具语言,用来实现自动和交互式任务进行通信,而无需人的干预. 例如,执行shell脚本的过程中,需要输入用户名.密码 ...

  4. ABP 学习汇总

    本文背景 公司最近规划的新框架准备基于ABP来搭建,自从在阳铭博客看到ABP框架的介绍后,就一直持续关注着,但还没真正在实际项目中直接使用ABP,只是自己做了一些学习和Demo.ABP所用到的一些新技 ...

  5. 每天一个linux命令(38)--lsof命令

    lsof (list open files )是一个列出当前系统打开文件的工具,在Linux 环境下,任何事情都以文件的形式存在,通过文件不仅仅可以访问常规数据,还可以访问网络连接和硬件.所以如传输控 ...

  6. 使用Compute Shader加速Irradiance Environment Map的计算

    Irradiance Environment Map基本原理 Irradiance Environment Map(也叫Irradiance Map或Diffuse Environment Map), ...

  7. Desktop Ubuntu 14.04LTS/16.04科学计算环境配置

    Desktop Ubuntu 14.04LTS/16.04科学计算环境配置 计算机硬件配置 cpu i5 6代 内存容量 8G gpu GTX960 显存容量 2G(建议显存在4G以上,否则一些稍具规 ...

  8. JAVA基础知识系列---进程、线程安全

    1 相关概念 1.1 临界区 保证在某一时刻只有一个线程能访问数据的简便方法,在任意时刻只允许一个线程对资源进行访问.如果有多个线程试图同时访问临界区,那么在有一个线程进入后,其他所有试图访问临界区的 ...

  9. One Card Poker

    qsc oj 题目 提交 比赛 小组 排名 帮助 Mactavish 题目 我的提交 One Card Poker 发布时间: 2017年2月14日 14:02   最后更新: 2017年2月14日 ...

  10. Min Stack leetcode

    Design a stack that supports push, pop, top, and retrieving the minimum element in constant time. pu ...