最近在做微服务的时候,由于我们是采用前后端分离来开发的,提供给前端的直接是Swagger,如果Swagger分布在各个API中,前端查看Swagger的时候非常不便,因此,我们试着将Swagger集中放到网关中. 这里我用两个API项目(一个BasicDataApi,一个UsersApi)和一个网关项目(ApiGateway)做示例,下面直接上代码. 首先在BasicDataApi中配置Swagger: public void ConfigureServices(IServiceCollecti…
最近在做微服务的时候,由于我们是采用前后端分离来开发的,提供给前端的直接是Swagger,如果Swagger分布在各个API中,前端查看Swagger的时候非常不便,因此,我们试着将Swagger集中放到网关中. 这里我用两个API项目(一个BasicDataApi,一个UsersApi)和一个网关项目(ApiGateway)做示例,下面直接上代码. 首先在BasicDataApi中配置Swagger: public void ConfigureServices(IServiceCollecti…
一.介绍 当我们开发基于微服务的应用程序的时候,有一个环节总是跳不过去的,那就是要创建 WebApi,然后,我们的应用程序基于 WebApi 接口去访问.在没有 Swagger 以前,我们开发好了 Web API 接口,也要写大量的接口文档.不写不行吗?当然不行,如果你不写这些文档,别人如何使用你的接口呢?难道每个接口都要和写接口的人进行沟通吗?那沟通成本就太大了,也浪费了不必要的时间.只从我们有了 Swagger 后,只需要简单的配置一下,就可以生成有关接口的详细文档,并且,可以调用执行,对于…
源码下载地址:下载 项目结构如下图: 在Identity Server授权中,实现IResourceOwnerPasswordValidator接口: public class IdentityValidator : IResourceOwnerPasswordValidator { private readonly UserManager<ApplicationUser> _userManager; private readonly IHttpContextAccessor _httpCon…
1.什么是API网关 API网关是微服务架构中的唯一入口,它提供一个单独且统一的API入口用于访问内部一个或多个API.它可以具有身份验证,监控,负载均衡,缓存,请求分片与管理,静态响应处理等.API网关方式的核心要点是,所有的客户端和消费端都通过统一的网关接入微服务,在网关层处理所有的非业务功能.通常,网关也是提供REST/HTTP的访问API.服务端通过API-GW注册和管理服务. Ocelot介绍 Ocelot是用.net Core实现的一款开源的网关,Ocelot其实就是一组按照顺序排列…
前言 上一章已经简单的介绍了ocelot的使用了,但是网关暴露的接口如果什么人都能访问的话安全性就太低啦.所以我们需要去鉴权和认证.这里我们使用identityServer4给我们的网关来鉴权认证. 创建Identity服务 我们创建一个identity的服务来用于令牌的发放和鉴权.下图是我的项目结构. Api_Gatewat端口:5000 Api_A端口:5001 Api_B端口:5002 IdentityServer端口:5003 通过nuget添加IdentityServer4的包,也可以…
准备工作 一.下载skywalking 本例使用的是 注: 1.解压后执行完2,3步骤后运行\bin\startup.bat 2.默认后台端口为8080 如需修改则修改\webapp\webapp.yml 修改server.port即可 二.下载elasticsearch-5.1.1 三.安装JAVA环境 教程太多此处略 可参考此处 注: 1.如解压后运行\bin\elasticsearch.bat 出现Could not reserve enough space for object heap…
搭建一个.net core webapi项目  在开始之前,请先安装最新版本的VS2017,以及最新的.net core 2.1. 首先创建一个Asp.Net Core Web应用程序 这个应用程序是可以直接运行的,采用的微软默认的页面.但是在运行中会出现这样的页面,因为默认使用用https导致 那么可以去掉这块.右键项目属性,在调试中去掉 https://localhost:5001;   就ok了. 那么就可以运行了,当然也可以发布到IIS等各个容器内,这个就不说了.…
DDD领域驱动模型设计 什么是DDD 软件开发不是一蹴而就的事情,我们不可能在不了解产品(或行业领域)的前提下进行软件开发,在开发前,通常需要进行大量的业务知识梳理,而后到达软件设计的层面,最后才是开发.而在业务知识梳理的过程中,我们必然会形成某个领域知识,根据领域知识来一步步驱动软件设计,就是领域驱动设计的基本概念. 听起来这和传统意义的软件开发没啥区别,只是换了点新鲜的名词而已,其实不然. 该架构分成了Interfaces.Applications和Domain三层以及包含各类基础设施的In…
Tip: 此篇已加入.NET Core微服务基础系列文章索引 一.案例结构总览 这里,假设我们有两个客户端(一个Web网站,一个移动App),他们要使用系统,需要通过API网关(这里API网关始终作为客户端的统一入口)先向IdentityService进行Login以进行验证并获取Token,在IdentityService的验证过程中会访问数据库以验证.然后再带上Token通过API网关去访问具体的API Service.这里我们的IdentityService基于IdentityServer…