.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 发布.管理.维护生命周期管理.用户只需进行 ...
随机推荐
- Eclipse中配置SVN(步骤简述)
————Eclipse中配置SVN(步骤简述)———— 1.有客户端(tortoiseSVN),服务器端(visualSVN) 两种,根据需要安装,安装后需重启电脑 2.服务器端配置:创建版本库(放工 ...
- SQL Server存储过程作业(二)
阶段1:练习——统计某类型客房的入住客人人数 需求说明 使用存储过程统计在指定类型的客房入住客人的总人数 提示: 存储过程的输入参数是指定的客房类型名称 USE Hotel GO --阶段1:查询入住 ...
- THREE.js代码备份——canvas_ascii_effect(以AscII码显示图形)
<!DOCTYPE html> <html lang="en"> <head> <title>three.js - ASCII Ef ...
- Ubuntu 16.04安装和卸载软件命令
安装软件 apt-get install softname1 softname2 softname3…… 卸载软件 apt-get remove softname1 softname2 softnam ...
- MySql数据库多表操作
一.连接查询[连表查询.多表查询] 当查询结果的列来源于多张表时,需要将多张表连接成一个大的数据集,再选择合适的列返回 mysql支持三种类型的连接查询,分别为: 内连接查询(inner join) ...
- python tips:类的专有属性
实例通常能够调用类的属性,但是有些属性是类专有的,实例无法调用. 实例调用方法时查找属性时,首先在自己的__dict__中找,找不到去类中找,在类中能够找到的属性都位于dir(cls)中,如果类的某些 ...
- es 存入失败错误
{, 'error': {'type': 'illegal_argument_exception', 'reason': 'Rejecting mapping update to [bd_date] ...
- HDU 2268 How To Use The Car (数学题)
题目 //做起来很艰辛,总结起来很简单... //注意步行速度可能比车的速度快.... //推公式要仔细,,,, //一道对我来说很搞脑子的数学题,,,,, //车先送第一个人上路,第二个人步行:中途 ...
- 不用form怎么post数据
数据传输是用户交互中最重要的环节,下面收集了几个数据传输的方法,作为记录(未测试,在使用之前需要测试,如果后面我测试了,会对已测试项进行标注) 一. 网址传递 <a href=”test.php ...
- ISAP 算法的学习
http://www.renfei.org/blog/isap.html 算法与数学 网络流-最大流问题 ISAP 算法解释 2013-08-07Renfei Song 2 条评论 内容提要 [隐藏] ...