ASP.NET Core中的Ocelot网关介绍

 更新时间:2022年04月08日 10:57:30   作者:暗断肠  
这篇文章介绍了ASP.NET Core中的Ocelot网关,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

1.简介

Ocelot原本设计仅为与.NET Core一起使用的,它是一个.NET API网关,作为面向使用.NET运行微型服务/面向服务的体系结构需要统一的系统入口点,即当客户端(Web站点,手机APP)等访问Web API的时候,Ocelot作为统一的入口点会根据请求地址分发到对应的API站点去(寻址)。而Ocelot还集成很多功能,例路由,认证,授权,限速等等功能点,Ocelot官网还建议认证这块最好跟身份验证(IdentityServer4)一起使用,承载令牌轻松集成。具体详情大家可以去官网(https://ocelot.readthedocs.io/en/latest/introduction/bigpicture.html)了解下。

而查看Ocelot源码,我们会看到Ocelot是按特定顺序排列的一堆中间件(Middleware)组成的管道。

Ocelot将HttpRequest对象操作到由其配置指定的状态,直到到达请求构建器中间件,在中间件中它创建一个HttpRequestMessage对象,该对象用于向下游服务发出请求。发出请求的中间件是Ocelot管道中的最后一件事。它不会调用下一个中间件。来自下游服务的响应存储在每个请求范围的存储库中,并在请求返回Ocelot管道时进行检索。有一块中间件将HttpResponseMessage映射到HttpResponse对象,然后将其返回给客户端。

2.Ocelot配置

根据官网介绍,Ocelot有五种配置:

2.1基础集成(Basic Implementation)

当客户端访问下游服务站点时候,会统一经过Ocelot网关,Ocelot网关Host主机首先会读取configuration.json配置信息,根据配置文件去寻找对应下游服务站点并返回处理结果给客户端。这一个过程可以称为路由寻址。

2.2集成IdentityServer(With IdentityServer)

当服务站点涉及认证跟授权的时候,可以通过在Ocelot网关上集成IdentityServer,当客户端访问下游服务站点时候,会先通过IdentityServer认证跟授权后才分发到下游服务站点。

2.3多个网关实例集群(Multiple Instances)

单个Ocelot网关是比较危险的,如果这个网关挂掉了,所有下游服务站点都将无法访问,这样子是无法做到高可用的。要解决这个问题,可以部署多台Ocelot网关集群,而Ocelot也集成了负载均衡器。

2.4集成Consul服务发现(With Consul)

查看官网文档负载均衡这一栏目,我们知道Ocelot已经支持简单的负载功能,当下游站点存在多个服务结点的时候,Ocelot能够承担起负载均衡的作用。但是它不提供健康检查,服务的注册也只能通过手动在配置文件里面添加完成。这不够灵活并且在一定程度下会有风险。这个时候我们就可以用Consul来做服务发现,它能与Ocelot完美结合。

2.5集成Service Fabric(With Service Fabric)

如果您在Service Fabric中部署了服务,则通常将使用命名服务来访问它们。

3.总结

Ocelot网关是系统给外部唯一访问入口,就好比公司的门卫承担着寻址、出入限制、安全检查、位置引导等等功能。它还提供了路由,身份验证、监控、负载均衡、缓存、请求分片与管理、静态响应处理等等功能。Ocelot网关的核心要点是,所有的客户端和消费端都通过统一的网关接入微服务,在网关层处理所有的非业务功能。通常网关也是提供REST/HTTP的访问API,服务端通过网关注册和管理服务。该章节之后,我会继续根据GitHub贡献者开源项目上面Ocelot Demo实例介绍它的功能。

Ocelot Demo地址:https://github.com/catcherwong-archive/APIGatewayDemo

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • Ajax+asp.net实现用户登陆

    Ajax+asp.net实现用户登陆

    这篇文章主要介绍了Ajax+asp.net实现用户登陆,主要是为了练习ajax的使用方法,有需要的小伙伴参考下。
    2015-03-03
  • 拦截asp.net输出流并进行处理的方法

    拦截asp.net输出流并进行处理的方法

    这篇文章主要介绍了拦截asp.net输出流并进行处理的方法,比较有实用性的一个技巧,需要的朋友可以参考下
    2014-08-08
  • Asp.net实现手写验证码的操作代码

    Asp.net实现手写验证码的操作代码

    这篇文章主要介绍了Asp.net实现手写验证码的操作代码,首先我们来实现生成 生成验证码的这一部分,这时候我们需要封装一个类,里面有生成图片和字符的方法,其实本质上就是一个随机数,这个类卸载Model里面即可,具体操作代码跟随小编一起看看吧
    2024-05-05
  • 在 .NET 中使用 FixedTimeEquals 应对计时攻击的例子

    在 .NET 中使用 FixedTimeEquals 应对计时攻击的例子

    在计算机安全中,计时攻击(Timing attack)是旁道攻击 (Side-channel attack) 的一种,而旁道攻击是根据计算机处理过程发出的信息进行分析,这篇文章主要介绍了在 .NET 中使用 FixedTimeEquals 应对计时攻击,需要的朋友可以参考下
    2022-06-06
  • 使用PowerShell .Net获取电脑中的UUID

    使用PowerShell .Net获取电脑中的UUID

    这篇文章主要介绍了使用PowerShell .Net获取电脑中的UUID 的相关资料,需要的朋友可以参考下
    2016-06-06
  • Visual Studio 2017 15.5 正式发布!性能再提升

    Visual Studio 2017 15.5 正式发布!性能再提升

    Visual Studio 2017 15.5 正式发布!性能再提升,时发布的还有 Visual Studio for Mac 7.3,亮点如下
    2017-12-12
  • ASP.NET中使用Ajax的方法

    ASP.NET中使用Ajax的方法

    之前在Ajax初步理解中介绍了对Ajax的初步理解,本文将介绍在ASP.NET中如何方便使用Ajax,第一种当然是使用jQuery的ajax,功能强大而且操作简单方便,第二种是使用.NET封装好的ScriptManager
    2013-10-10
  • 将文本文件的内容或者文字保存成图片的方法分享

    将文本文件的内容或者文字保存成图片的方法分享

    这篇文章主要介绍了将文本文件的内容或者文字保存成图片的方法,需要的朋友可以参考下
    2014-02-02
  • Asp.net后台把脚本样式输出到head标签中节省代码冗余

    Asp.net后台把脚本样式输出到head标签中节省代码冗余

    最近在学习开发服务器控件,其它就少不了为控件注册js和css之类的资源文件,或者直接注册纯脚本样式。其中就遇到如下问题     1、 注册的资源文件或纯脚本样式在生成的页面中都不在head标签中(当然这个不影响页面功能)     2、 一个页面使用多个一样的控件时,会出现重复输入(出现多余代码)
    2013-02-02
  • .net 刷新页面后弹出重试框的解决方法

    .net 刷新页面后弹出重试框的解决方法

    关闭模式窗口后,需要刷新父页面,但是模式窗口关闭后,父页面总是会弹出重试消息框,遇到此问题的朋友看下解决方法哈
    2013-04-04

最新评论