.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 发布.管理.维护生命周期管理.用户只需进行 ...
随机推荐
- nodejs要远程连接另一个主机上的monogodb数据库服务器
我的mongodb是装在linux下的. 首先,先添加用户 1.首先在mongodb服务器主机上进行terminal命令行,输入 mongo 2.输入 use admin 进入用户管理数据库 3.db ...
- 乐乎共享wifi充电宝项目
- 查看SqlServer连接所使用的端口号
最近一个项目里用到了一个插件,在配置时发现连接数据库使用的是JDBC,输入URL时用到了端口号.印象中在使用Sqlserver时貌似没有提到端口号,在网上查阅了一下,记录下来省的忘了 方法是通过内置的 ...
- Deutsch lernen (04)
1. streng a. 严厉的,严格的 streng gegen sich selbst und gegen andere sein streng auf Ordnung halten 2. ver ...
- NSURLCredential 代表认证结果证书?
NSURLCredential 代表认证结果证书?
- 单调队列 && 单调栈
单调队列 && 单调栈 单调队列 维护某个滑动区间的min or max,可用于dp的优化 以维护min为例,采用STL双端队列实现 每次加入元素x前 先检查队首元素==滑动后要删除的 ...
- 7.5 pragma 指令
第1个pragma禁用了我们感兴趣的特别警告,第2个恢复了它.禁用尽可能小的一段代码的警告是一个良好的做法,以便你不会错过任何真正应该修复的错误.如果你想在单独一行上禁用或恢复多个警告,那么只需用逗号 ...
- USACO 4.1 Fence Rails
Fence RailsBurch, Kolstad, and Schrijvers Farmer John is trying to erect a fence around part of his ...
- SQL第二节课
SQL练习题 一. 设有一数据库,包括四个表:学生表(Student).课程表(Course).成绩表(Score)以及教师信息表(Teacher).四个表的结构分别如表1-1的 ...
- 使用for或while循环来处理处理不确定页数的网页数据爬取
本文转载自以下网站: Python For 和 While 循环爬取不确定页数的网页 https://www.makcyun.top/web_scraping_withpython16.html 需 ...