.NET微服务架构及API网关
一、MSA简介
1.1、MSA是什么
| SOA实现 | 微服务架构实现 | |
| 企业级,自顶向下开展实施 | 团队级,自底向上开展实施 | |
| 粒度大:服务由多个子系统组成 | 粒度细:一个系统被拆分成多个服务,且服务的定义更加清晰 | |
| 重ESB:企业服务总线,集中式的服务架构 | 轻网关:无集中式总线,松散的服务架构 | |
| 开发过程复杂 | 易开发:减少了企业ESB开发的复杂性,与敏捷开发的思想高度结合在一起 | |
| 单块架构系统,相互依赖,部署复杂 | 服务能被独立部署 | |
1.2、我们的MSA框架
1.3、MSA框架实现架构


二、MSA框架的使用
1、服务托管
2、 路由
3、如何验证请求参数的合法性
1 Plugins.Add(new ValidationFeature());
2 container.RegisterValidator(typeof(OrderValidator));
4、服务
5、MSA内置的客户端
1 Plugins.Add(new ProtoBufFormat());
c、必须分别给Request DTO对象和Response DTO对象的各属性标上[DataMember(Order = {0})]特性,具体写法请见MSA Demo的ProductRequestDTO.cs和ProductResponseDTO.cs。
1 TResponse Get<TResponse>(IReturn<TResponse> requestDto);
6、MSA API可视化说明文档自动生成的实现
1 Plugins.Add(new SwaggerFeature());
如果需要在MSA API可视化说明文档中能够看到各请求参数、响应的含义说明,那么需要为Request DTO、Response DTO对象的各属性标上ApiMember,代码参考如下:

1 public class OrderRequest : IReturn<OrderResponse>
2 {
3 [ApiMember(Name = "Id", Description = "订单ID号", IsRequired = false)]
4 public int Id { get; set; }
5 [ApiMember(Name = "CustomerName", Description = "客户名", IsRequired = false)]
6 public string CustomerName { get; set; }
7 //......
8 [ApiMember(Name = "OrderItemList", Description = "订购的产品列表", IsRequired = false)]
9 public List<OrderItem> OrderItemList { get; set; }
10 }


7、运行结果


三、微服务治理

四、微服务网关API Gateway
4.1、API Gateway的简介

4.2、API Gateway的优点

- 网络隔离:微服务部署在了内网,通过API Gateway开放给PartnerAPI、WebAPI或MobileAPI。
- 在网关层面的轻量级消息路由和转换。
- 在网关层面对存在的微服务提供必要的抽象。例如,网关可以选择对不同的用户暴露不同的API。
- 一个中心的地方提供非功能性的能力,这些能力可复用, 比如超时、限流、熔断、监控、日志记录等。
- 通过适用API网关模式,微服务可以变得更加轻量,因为非功能性需求都在网关上实现了。
- 统一安全管控。
4.3、API Gateway的架构

4.4、API Gateway的功能
4.5、API Gateway的使用

五、Demo下载及更多资料
- MSADemo下载地址:https://github.com/das2017/MSADemo
- APIGatewayDemo下载地址:https://github.com/das2017/ApiGatewayDemo
- ServiceStack官网:https://servicestack.net/
原文链接: https://www.cnblogs.com/dotnet-arch-system/p/8504602.html
.NET微服务架构及API网关的更多相关文章
- spring cloud+dotnet core搭建微服务架构:Api网关(三)
前言 国庆假期,一直没有时间更新. 根据群里面的同学的提问,强烈推荐大家先熟悉下spring cloud.文章下面有纯洁大神的spring cloud系列. 上一章最后说了,因为服务是不对外暴露的,所 ...
- spring cloud+.net core搭建微服务架构:Api网关(三)
前言 国庆假期,一直没有时间更新. 根据群里面的同学的提问,强烈推荐大家先熟悉下spring cloud.文章下面有纯洁大神的spring cloud系列. 上一章最后说了,因为服务是不对外暴露的,所 ...
- 微服务架构中API网关的角色
[上海尚学堂的话]:本文主要讲述了Mashape的首席技术执行官Palladino对API网关的详细介绍,以及API网关在微服务中所起的作用,同时介绍了Mashape的一款开源API网关Kong. A ...
- spring cloud+dotnet core搭建微服务架构:Api授权认证(六)
前言 这篇文章拖太久了,因为最近实在太忙了,加上这篇文章也非常长,所以花了不少时间,给大家说句抱歉.好,进入正题.目前的项目基本都是前后端分离了,前端分Web,Ios,Android...,后端也基本 ...
- spring cloud+.net core搭建微服务架构:Api授权认证(六)
前言 这篇文章拖太久了,因为最近实在太忙了,加上这篇文章也非常长,所以花了不少时间,给大家说句抱歉.好,进入正题.目前的项目基本都是前后端分离了,前端分Web,Ios,Android...,后端也基本 ...
- Chris Richardson微服务翻译:构建微服务之使用API网关
Chris Richardson 微服务系列翻译全7篇链接: 微服务介绍 构建微服务之使用API网关(本文) 构建微服务之微服务架构的进程通讯 微服务架构中的服务发现 微服务之事件驱动的数据管理 微服 ...
- Spring Cloud 微服务三: API网关Spring cloud gateway
前言:前面介绍了一款API网关组件zuul,不过发现spring cloud自己开发了一个新网关gateway,貌似要取代zuul,spring官网上也已经没有zuul的组件了(虽然在仓库中可以更新到 ...
- 谈谈微服务中的 API 网关(API Gateway)
前言 又是很久没写博客了,最近一段时间换了新工作,比较忙,所以没有抽出来太多的时间写给关注我的粉丝写一些干货了,就有人问我怎么最近没有更新博客了,在这里给大家抱歉. 那么,在本篇文章中,我们就一起来探 ...
- 微服务中的 API 网关(API Gateway)
API 网关(API Gateway)提供高性能.高可用的 API 托管服务,帮助用户对外开放其部署在 ECS.容器服务等云产品上的应用,提供完整的 API 发布.管理.维护生命周期管理.用户只需进行 ...
随机推荐
- 《Linux程序设计》笔记(二)shell程序设计
1. 进程树形显示 ps -e f 2. 重定向 > 覆盖文件 >> 附加至文件 1> 标准输出 2> 标准错误输出 0 代表一个程序的标准输入 3. 程序可以在当前目录 ...
- Android使用NDK---函数参数传递-基本类型和数组
参考链接:http://www.cnblogs.com/luxiaofeng54/archive/2011/08/19/2145486.html 数据传输可分为 基本数据类型传输 和 引用数据类型的传 ...
- Matlab数组创建
只用C语言,不用Matlab这种魔咒还是要打破的.Matlab是科学计算的常用工具,既然以前没用过,现在开始学吧...... 1. 向量的创建 1)直接输入: 行向量:a=[1,2,3,4,5] ...
- 初识cocos creator的一些问题
本文的cocos creator版本为v1.9.01.color赋值cc.Label组件并没有颜色相关的属性,但是Node有color的属性. //如果4个参数,在ios下有问题let rgb = [ ...
- freemarker使用map替换字符串中的值demo2
package demo01; import java.io.IOException;import java.io.OutputStreamWriter;import java.io.StringWr ...
- eas之编码规则&单据转换规则
*当在企业建模中没有要显示的项目的话,则从包更新到系统树然后选择到规则定义,对申请单新增规则. 企业建模--业务规则-规则定义组织优先 多组织有先 集团优先固定值 显示格式PUR ..系统日期 2 ...
- Solr与Elasticsearch比较
Solr优点1.Solr有一个更大.更成熟的用户.开发和贡献者社区.2.支持添加多种格式的索引,如:HTML.PDF.微软 Office 系列软件格式以及 JSON.XML.CSV 等纯文本格式.3. ...
- 【习题 4-2 Uva201】Squares
[链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] 注意那个星号的数量... 然后V x y的话,是从(y,x)向(y+1,x)连线. H x y才是从(x,y)向(x,y+1)连线 ...
- 【Codeforces 639A】Bear and Displayed Friends
[链接] 我是链接,点我呀:) [题意] [题解] 时刻维护一下前K大的数字就好. 因为k<=6 然后数字不会减少只会增加. 因此只要维护一个大小为k的数组就ok. 保证这个数组是有序的. 写个 ...
- PHP学习总结(12)——PHP入门篇之变量
一.什么是变量 变量是用于存储值的,我们命令服务器去干活的时候,往往需要产生一些数据,需要临时性存放起来,方便取用.我们也可以理解为,变量就像一个购物袋,我们可以用来装苹果.榴莲(当然也可以用来装玫瑰 ...