当前位置: 首页 > news >正文

重庆网站模板建站公司2013网站挂马教程

重庆网站模板建站公司,2013网站挂马教程,西安做网站app,无锡市建设工程质量监督站网站上一次我们通过一张架构图#xff08;.Net Core with 微服务 - 架构图#xff09;来讲述了微服务的结构#xff0c;分层等内容。从现在开始我们开始慢慢搭建一个最简单的微服务架构。这次我们先用几个简单的 web api 项目以及 ocelot 网关项目来演示下网关是如何配置#x… 上一次我们通过一张架构图.Net Core with 微服务 - 架构图来讲述了微服务的结构分层等内容。从现在开始我们开始慢慢搭建一个最简单的微服务架构。这次我们先用几个简单的 web api 项目以及 ocelot 网关项目来演示下网关是如何配置如何工作的。Ocelot 网关Ocelot 是使用 asp.net core 开发的一个 api 网关项目。它功能丰富集成了路由、限流、缓存、聚合等功能。它使用 .net 编写本质上就是一堆 asp.net core 的中间件所以它天生对 .net 友好。这些中间件拦截外部的请求根据路由配置转发到对应的内部服务上再把内部的返回结果对外暴露。搭建项目结构新建一个解决方案新建几个项目。api_gateway API网关hotel_base 酒店基本信息服务member_center 会员中心服务ordering 订单服务安装 Ocelot在API网关项目上使用nuget安装Ocelot的类库。Ocelot本质上就是一堆 asp.net Core 的 middleware。所以我们需要在UseOcelot扩展方法在注册这些中间件。Install-Package Ocelotpublic static void Main(string[] args){new WebHostBuilder().UseKestrel().UseContentRoot(Directory.GetCurrentDirectory()).ConfigureAppConfiguration((hostingContext, config) {config.SetBasePath(hostingContext.HostingEnvironment.ContentRootPath).AddJsonFile($appsettings.{hostingContext.HostingEnvironment.EnvironmentName}.json, true, true).AddJsonFile(routes.json).AddEnvironmentVariables();}).ConfigureServices(s {s.AddOcelot();}).ConfigureLogging((hostingContext, logging) {logging.AddConsole();}).UseIISIntegration().Configure(app {app.UseOcelot().Wait();}).Build().Run();}} 在 main 函数内注册Ocelot的中间件服务使用AddJsonFile指定路由的配置文件。路由Ocelot最基本的功能就是反向代理。代理的配置通过一个json文件来配置。下面让我们来简单的演示下如何配置。以下是通过网关代理访问酒店服务的酒店列表的配置示例。 {//获取酒店列表UpstreamPathTemplate: /api/hotel,UpstreamHttpMethod: [ Get ],DownstreamPathTemplate: /hotel,DownstreamScheme: http,DownstreamHostAndPorts: [{//hotel serviceHost: localhost,Port: 6003}] } 配置主要是分为Upstream跟Downstream两部分。Upstream其实就是指代ocelot网关本身。Downstream代表真正的服务。UpstreamPathTemplate 网关匹配的路径UpstreamHttpMethod 网关匹配的请求方法DownstreamPathTemplate 服务匹配的路径DownstreamScheme 服务的Schemehttp、httpsDownstreamHostAndPorts 服务的主机地址跟端口上面的配置描述的意思是把对网关的/api/hotel的GET请求转发到主机http://localhost:6003/hotel接口上。路由参数Ocelot的path模板可以使用{param}模式来匹配参数然后传递到下游服务器上。 {//获取单个酒店UpstreamPathTemplate: /api/hotel/{hotel_id},UpstreamHttpMethod: [ Get ],DownstreamPathTemplate: /hotel/{hotel_id},DownstreamScheme: http,DownstreamHostAndPorts: [{//hotel serviceHost: localhost,Port: 6003}],Key: hotel_base_info,} 使用{hotel_id}匹配hotelId参数。 {//获取酒店房间列表UpstreamPathTemplate: /api/hotel_rooms/{hotel_id},UpstreamHttpMethod: [ Get ],DownstreamPathTemplate: /room/hotel_rooms/{hotel_id},DownstreamScheme: http,DownstreamHostAndPorts: [{//hotel serviceHost: localhost,Port: 6003}],Key: hotel_rooms} 使用{hotel_id}匹配hotelId参数。 {//获取查询订单UpstreamPathTemplate: /api/order/query?day{day},UpstreamHttpMethod: [ Get ],DownstreamPathTemplate: /order/get_orders?day{day},DownstreamScheme: http,DownstreamHostAndPorts: [{//order serviceHost: localhost,Port: 6001}]} 在QueryString上使用{day}匹配参数。限流Ocelot支持对请求的限流操作。 RateLimitOptions: {EnableRateLimiting: true,Period: 1s,PeriodTimespan: 1,Limit: 1} 在路由配置节点添加RateLimitOptions节点。EnableRateLimiting true 开启限流Period 1s 限流的时间区间为1sPeriodTimespan 1 限流后重置时间Limit 1 限制请求的数量上面的配置的意思是1秒内限制一次请求1秒后重置这个限制。缓存Ocelot可以对请求的响应值提供缓存服务。//缓存5sFileCacheOptions: { TtlSeconds: 5 } 在路由配置节点上配置FileCacheOptions字段TtlSeconds代表需要缓存的时间单位是秒。聚合上一回我们讲微服务架构的时候说到“聚合服务层”我们说这一层的主要功能是对请求进行聚合适配跟裁剪。其实ocelot已经提供了简单的api聚合功能。如果聚合的需求比较简单那么可以使用ocelot直接实现。简单聚合简单聚合可以通过配置把几个请求的聚合成一个请求一次性返回几个请求的响应。响应通过json格式被包装返回。 Aggregates: [{//聚合 查询酒店信息跟酒店房间列表RouteKeys: [hotel_base_info,hotel_rooms],UpstreamPathTemplate: /api/hotel_detail/{hotel_id}},] RouteKeys 代表需要聚合的请求的键值。使用代码聚合上面我们直接通过配置实现了api之间聚合请求。这种聚合比较简单会把聚合的几个请求的响应值原封不动的返回回来。有的时候我们需要对返回值做一些转换或者裁剪比如同一个api我们对移动端的响应可能需要裁剪掉部分字段。这种需求在ocelot内我们可以使用代码来完成。这里不太推荐这种聚合方式这会造成网关跟下游服务的强耦合关系。这里我们演示下如何把获取酒店信息跟酒店房间列表的返回值进行裁剪并返回一个新的响应。 public class HotelDetailInfoForMobileAggregator : IDefinedAggregator{public async TaskDownstreamResponse Aggregate(ListHttpContext responses){dynamic hotelInfo new ExpandoObject();Listdynamic rooms new Listdynamic();foreach (var context in responses){if ((context.Items[DownstreamRoute] as dynamic).Key hotel_base_info){var respContent await context.Items.DownstreamResponse().Content.ReadAsStringAsync();hotelInfo JsonConvert.DeserializeObjectdynamic(respContent);}if ((context.Items[DownstreamRoute] as dynamic).Key hotel_rooms){var respContent await context.Items.DownstreamResponse().Content.ReadAsStringAsync();rooms JsonConvert.DeserializeObjectListdynamic(respContent);}}dynamic newResponse new ExpandoObject();newResponse.hotel new { hotelInfo.id,hotelInfo.name};newResponse.rooms rooms.Select(x new { x.id,x.no});var stringContent new StringContent(JsonConvert.SerializeObject(newResponse));return new DownstreamResponse(stringContent, System.Net.HttpStatusCode.OK, responses.SelectMany(x x.Items.DownstreamResponse().Headers).ToList(),OK);}} 每一个聚合都需要继承IDefinedAggregator这个接口然后实现Aggregate方法。在这个方法内对每个请求的响应值进行裁剪然后重新组合。 {//聚合 查询酒店信息跟酒店房间列表 移动端 裁剪RouteKeys: [hotel_base_info,hotel_rooms],UpstreamPathTemplate: /api/m/hotel_detail/{hotel_id},Aggregator: HotelDetailInfoForMobileAggregator} 在配置文件的Aggregates内添加一个配置节点在“Aggregator”字段上指定Aggregator的类名。 .ConfigureServices(s {s.AddOcelot().AddTransientDefinedAggregatorHotelDetailInfoForMobileAggregator();}) 同时在ConfigureServices方法内配置HotelDetailInfoForMobileAggregator的依赖注入。总结本次我们通过几个最简单的web api项目演示了如何使用 ocelot 网关进行反向代理限流聚合等常用功能。可以看到 ocelot 的配置使用还是比较简单的。因为是 .net 代码编写所以对.net 开发者比较友好我们可以直接使用 .net 代码来编写一些功能比如直接使用代码来聚合请求的结果。相关文章.Net Core with 微服务 - 架构图.NET Core with 微服务 - 什么是微服务演示代码https://github.com/kklldog/myhotel_microservice
http://www.huolong8.cn/news/158778/

相关文章:

  • 龙岗商城网站建设教程网站备案对网站负责人的要求
  • 网站建站网站咸阳网站建设推广
  • 专业论坛网站有哪些设计培训学院
  • 建设茶叶网站目的南宁网站建设公司seo优化
  • WordPress全站跳转开发网站监控平台
  • 网龙公司有做网站吗镇雄县城乡建设局网站
  • 博湖网站建设南京产品网站建设收费
  • wordpress 建站案例怎样更新网站文章
  • 湖南省建设安监局官网站重庆建设摩托车股份有限公司
  • wordpress增加板块郑州企业网站优化
  • 外贸企业网站对外贸的重要性宁德市
  • 网站建设有哪些分类wordpress权限管理
  • 陶瓷网站源码wordpress 中文数据库
  • 无锡富通电力建设有限公司网站怎样给网站做排名优化
  • 玉林市住房和城乡建设厅网站有阿里云主机管理平台如何自己做网站
  • 抚顺市城市建设档案馆网站wordpress标签工具栏
  • 源码怎么做成网站cad图库大全素材免费下载
  • 手机wap网站制作免费网站建设 招聘
  • php网站开发员工资网站建设需要多少钱文档
  • 廊坊网站建设方案策划客户关系管理系统案例
  • 泰安钢管网站建设WordPress网站仿制
  • 哪个网站做ppt能赚钱iis默认网站停止
  • 免费注册网站大全网站后台 ftp
  • 做国内网站花费wordpress4开启xmlrpc
  • 网站建设看什么书网站建设比较好的律所
  • 手机网站怎么做301视频网站建设价位
  • 怎么百度做网站跨国网站浏览器
  • 小题狂做 官方网站个人简历模板电子版可填写
  • 乐山市城乡规划建设局网站局域网网页制作
  • 网站制作 天津滦平县建设局网站