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

甘肃网站建设制作商网站中的公司地址怎么做

甘肃网站建设制作商,网站中的公司地址怎么做,wordpress 分类别名,软文网站开发什么是Ocelot? Ocelot是一个开源的ASP.NET Core微服务网关#xff0c;它提供了API网关所需的所有功能#xff0c;如路由、认证、限流、监控等。 Ocelot是一个简单、灵活且功能强大的API网关#xff0c;它可以与现有的服务集成#xff0c;并帮助您保护、监控和扩展您的微…什么是Ocelot? Ocelot是一个开源的ASP.NET Core微服务网关它提供了API网关所需的所有功能如路由、认证、限流、监控等。 Ocelot是一个简单、灵活且功能强大的API网关它可以与现有的服务集成并帮助您保护、监控和扩展您的微服务。 以下是Ocelot的一些主要功能 路由管理Ocelot允许您定义路由规则将请求路由到正确的微服务。认证和授权Ocelot支持多种认证机制如JWT、OAuth等并允许您定义访问控制策略确保只有授权的用户才能访问特定的API。限流和速率限制Ocelot提供了一些内置的限流和速率限制功能以确保您的服务不会受到过度的请求压力。监控和日志Ocelot可以收集和显示各种度量指标帮助您了解您的服务的性能和行为。此外它还可以将日志记录到各种日志源以便您进行分析和故障排除。集成Ocelot可以与现有的服务集成包括Kubernetes、Consul等。易于扩展Ocelot的设计使其易于扩展您可以编写自己的中间件来处理特定的逻辑例如修改请求或响应、添加自定义的认证机制等。可扩展的配置Ocelot使用JSON配置文件进行配置这意味着您可以轻松地根据需要进行配置更改而无需重新编译代码。 总之Ocelot是一个功能强大且易于使用的API网关可以帮助您保护、监控和扩展您的微服务。 Asp .Net Core 集成 Ocelot 要在ASP.NET Core中集成Ocelot您可以按照以下步骤进行操作 安装Ocelot NuGet包 在您的ASP.NET Core项目中打开终端或NuGet包管理器控制台并运行以下命令来安装Ocelot的NuGet包 dotnet add package Ocelot添加Ocelot配置文件 { Routes: [ //这里注意一下版本旧版本用ReRoutes{DownstreamPathTemplate: /api/{controller}, //下游路径模板DownstreamScheme: http, //下游方案//DownstreamHostAndPorts: [// {// Host: localhost,// Port: 5014// }//], //下游主机和端口UpstreamPathTemplate: /api/product/{controller}, //上游路径模板UpstreamHttpMethod: [], //上游请求方法,可以设置特定的 HTTP 方法列表或设置空列表以允许其中任何方法ServiceName: api-product-service, //请求服务名称LoadBalancerOptions: {Type: LeastConnection //负载均衡算法目前 Ocelot 有RoundRobin 和LeastConnection算法}}],GlobalConfiguration: {BaseUrl: http://localhost:5015, //进行标头查找和替换以及某些管理配置ServiceDiscoveryProvider: {Scheme: http,Host: 127.0.0.1, //你的Consul的ip地址Port: 8500, //你的Consul的端口Type: Consul //类型//ConfigurationKey: Consul //指定配置键键入您的配置}} }配置Ocelot服务 builder.Services.AddOcelot();在Configure方法中配置请求管道并添加Ocelot中间件 app.UseOcelot().Wait();Ocelot 集成 Consul 要将Ocelot集成到Consul中您可以按照以下步骤进行操作 安装依赖项 在您的ASP.NET Core项目中安装Ocelot和Consul的NuGet包。您可以使用以下命令来安装这些包 dotnet add package Ocelot.Provider.Consul配置Ocelot 在Ocelot的配置中您需要指定Consul作为服务发现和配置的提供者。在Ocelot的配置文件例如appsettings.json中添加以下内容 { GlobalConfiguration: {BaseUrl: http://localhost:5015, //进行标头查找和替换以及某些管理配置ServiceDiscoveryProvider: {Scheme: http,Host: 127.0.0.1, //你的Consul的ip地址Port: 8500, //你的Consul的端口Type: Consul //类型//ConfigurationKey: Consul //指定配置键键入您的配置}} }确保将ConsulHost和ConsulPort设置为Consul服务器的正确地址和端口。 启动Ocelot 在您的ASP.NET Core应用程序中启动Ocelot。您可以在Startup.cs文件中添加以下代码 builder.Services.AddOcelot().AddConsul(); 全部代码 Consul相关代码 namespace MCode.Common.Extensions.Consul {public class ConsulOptions{/// summary/// 当前应用IP/// /summarypublic string IP { get; set; }/// summary/// 当前应用端口/// /summarypublic int Port { get; set; }/// summary/// 当前服务名称/// /summarypublic string ServiceName { get; set; }/// summary/// Consul集群IP/// /summarypublic string ConsulIP { get; set; }/// summary/// Consul集群端口/// /summarypublic int ConsulPort { get; set; }/// summary/// 权重/// /summarypublic int? Weight { get; set; }} }using Consul.AspNetCore; using Consul; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Configuration; using Microsoft.AspNetCore.Builder;namespace MCode.Common.Extensions.Consul {public static class ConsulServiceExtensions{/// summary/// 向容器中添加Consul必要的依赖注入/// /summary/// param nameservices/param/// param nameconfiguration/param/// returns/returnspublic static IServiceCollection AddMCodeConsul(this IServiceCollection services){var configuration services.BuildServiceProvider().GetRequiredServiceIConfiguration();// 配置consul服务注册信息var consulOptions configuration.GetSection(Consul).GetConsulOptions();// 通过consul提供的注入方式注册consulClientservices.AddConsul(options options.Address new Uri($http://{consulOptions.ConsulIP}:{consulOptions.ConsulPort}));// 通过consul提供的注入方式进行服务注册var httpCheck new AgentServiceCheck(){DeregisterCriticalServiceAfter TimeSpan.FromSeconds(5),//服务启动多久后注册Interval TimeSpan.FromSeconds(10),//健康检查时间间隔或者称为心跳间隔HTTP $http://{consulOptions.IP}:{consulOptions.Port}/health,//健康检查地址Timeout TimeSpan.FromSeconds(10)};// Register service with consulservices.AddConsulServiceRegistration(options {options.Checks new[] { httpCheck };options.ID Guid.NewGuid().ToString();options.Name consulOptions.ServiceName;options.Address consulOptions.IP;options.Port consulOptions.Port;options.Meta new Dictionarystring, string() { { Weight, consulOptions.Weight.HasValue ? consulOptions.Weight.Value.ToString() : 1 } };options.Tags new[] { $urlprefix-/{consulOptions.ServiceName} }; //添加});return services;}/// summary/// 配置Consul检查服务/// /summary/// param nameapp/param/// returns/returnspublic static IApplicationBuilder UseConsulCheckService(this IApplicationBuilder app){app.Map(/health, app {app.Run(async context {await Task.Run(() context.Response.StatusCode 200);});});return app;}} }Cors using Microsoft.AspNetCore.Builder; using Microsoft.Extensions.DependencyInjection; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks;namespace MCode.Common.Extensions.Cors {public static class CorsServiceExtensions{private readonly static string PolicyName MCodeCors;/// summary/// 添加跨域/// /summary/// param nameservices服务集合/param/// returns/returnspublic static IServiceCollection AddMCodeCors(this IServiceCollection services){if (services null) throw new ArgumentNullException(nameof(services));//origin microsoft.aspnetcore.cors return services.AddCors(options {options.AddPolicy(PolicyName, policy {policy.SetIsOriginAllowed(_ true).AllowAnyMethod().AllowAnyHeader().AllowCredentials();});});}/// summary/// 使用跨域/// /summary/// param nameapp应用程序建造者/param/// returns/returnspublic static IApplicationBuilder UseMCodeCors(this IApplicationBuilder app){return app.UseCors(PolicyName);}} }Swagger using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks;namespace MCode.Common.Extensions.Swagger {/// summary/// 网关Swagger配置/// /summarypublic class OcelotSwaggerOptions{public ListSwaggerEndPoint SwaggerEndPoints { get; set; }} }using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks;namespace MCode.Common.Extensions.Swagger {/// summary/// 网关Swagger配置/// /summarypublic class OcelotSwaggerOptions{public ListSwaggerEndPoint SwaggerEndPoints { get; set; }} }using Microsoft.OpenApi.Models; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks;namespace MCode.Common.Extensions.Swagger {/// summary/// Swagger配置/// /summarypublic class SwaggerOptions{/// summary/// 服务名称/// /summarypublic string ServiceName { get; set; }/// summary/// API信息/// /summarypublic OpenApiInfo ApiInfo { get; set; }/// summary/// Xml注释文件/// /summarypublic string[] XmlCommentFiles { get; set; }/// summary/// 构造函数/// /summary/// param nameserviceName服务名称/param/// param nameapiInfoAPI信息/param/// param namexmlCommentFilesXml注释文件/parampublic SwaggerOptions(string serviceName, OpenApiInfo apiInfo, string[] xmlCommentFiles null){ServiceName !string.IsNullOrWhiteSpace(serviceName) ? serviceName : throw new ArgumentException(serviceName parameter not config.);ApiInfo apiInfo;XmlCommentFiles xmlCommentFiles;}} }using Microsoft.AspNetCore.Builder; using Microsoft.Extensions.DependencyInjection; using Microsoft.OpenApi.Models;namespace MCode.Common.Extensions.Swagger {/// summary/// Swagger 服务扩展/// /summarypublic static class SwaggerServiceExtensions{/// summary/// 添加 Swagger 服务/// /summary/// param nameservices/param/// param nameswaggerOptions/param/// returns/returnspublic static IServiceCollection AddMCodeSwagger(this IServiceCollection services, SwaggerOptions swaggerOptions){services.AddSingleton(swaggerOptions);SwaggerGenServiceCollectionExtensions.AddSwaggerGen(services, c {c.SwaggerDoc(swaggerOptions.ServiceName, swaggerOptions.ApiInfo);if (swaggerOptions.XmlCommentFiles ! null){foreach (string xmlCommentFile in swaggerOptions.XmlCommentFiles){string str Path.Combine(AppContext.BaseDirectory, xmlCommentFile);if (File.Exists(str)) c.IncludeXmlComments(str, true);}}SwaggerGenOptionsExtensions.CustomSchemaIds(c, x x.FullName);c.AddSecurityDefinition(bearerAuth, new OpenApiSecurityScheme{Type SecuritySchemeType.Http,Scheme bearer,BearerFormat JWT,Description 请输入 bearer 认证});c.AddSecurityRequirement(new OpenApiSecurityRequirement{{new OpenApiSecurityScheme{Reference new OpenApiReference { Type ReferenceType.SecurityScheme, Id bearerAuth }},new string[] {}}});});return services;}/// summary/// 使用 Swagger UI/// /summary/// param nameapp/param/// returns/returnspublic static IApplicationBuilder UseMCodeSwagger(this IApplicationBuilder app){string serviceName app.ApplicationServices.GetRequiredServiceSwaggerOptions().ServiceName;SwaggerUIBuilderExtensions.UseSwaggerUI(SwaggerBuilderExtensions.UseSwagger(app), c {c.SwaggerEndpoint(/swagger/ serviceName /swagger.json, serviceName);});return app;}public static IServiceCollection AddMCodeOcelotSwagger(this IServiceCollection services, OcelotSwaggerOptions ocelotSwaggerOptions){services.AddSingleton(ocelotSwaggerOptions);SwaggerGenServiceCollectionExtensions.AddSwaggerGen(services);return services;}public static IApplicationBuilder UseMCodeOcelotSwagger(this IApplicationBuilder app){OcelotSwaggerOptions ocelotSwaggerOptions app.ApplicationServices.GetServiceOcelotSwaggerOptions();if (ocelotSwaggerOptions null || ocelotSwaggerOptions.SwaggerEndPoints null){return app;}SwaggerUIBuilderExtensions.UseSwaggerUI(SwaggerBuilderExtensions.UseSwagger(app), c {foreach (SwaggerEndPoint swaggerEndPoint in ocelotSwaggerOptions.SwaggerEndPoints){c.SwaggerEndpoint(swaggerEndPoint.Url, swaggerEndPoint.Name);}});return app;}} }MCode.ApiGateway.Program using MCode.Common.Extensions.Swagger; using MCode.Common.Extensions.Consul; using MCode.Common.Extensions.Cors; using Ocelot.DependencyInjection; using Ocelot.Middleware; using Ocelot.Provider.Consul; using Microsoft.AspNetCore.Hosting;var builder WebApplication.CreateBuilder(args);builder.WebHost.UseUrls(builder.Configuration.GetValuestring(Url) ?? );//builder.Configuration.SetBasePath(Directory.GetCurrentDirectory()).AddJsonFile(ocelot.json, false, true);// Add services to the container. builder.Services.AddMCodeConsul();builder.Services.AddMCodeCors();builder.Services.AddMCodeOcelotSwagger(new OcelotSwaggerOptions { SwaggerEndPoints new ListSwaggerEndPoint { new SwaggerEndPoint { Name api-product-service, Url http://localhost:5014/swagger/api-product-service/swagger.json } } });builder.Services.AddOcelot().AddConsul();builder.Services.AddControllers();var app builder.Build();app.UseMCodeCors();app.UseMCodeOcelotSwagger();app.UseConsulCheckService();// Configure the HTTP request pipeline.app.UseAuthorization();app.UseOcelot().Wait();app.Run();appsettings.json {Logging: {LogLevel: {Default: Information,Microsoft.AspNetCore: Warning}},Routes: [ //这里注意一下版本旧版本用ReRoutes{DownstreamPathTemplate: /api/{controller}, //下游路径模板DownstreamScheme: http, //下游方案//DownstreamHostAndPorts: [// {// Host: localhost,// Port: 5014// }//], //下游主机和端口UpstreamPathTemplate: /api/product/{controller}, //上游路径模板UpstreamHttpMethod: [], //上游请求方法,可以设置特定的 HTTP 方法列表或设置空列表以允许其中任何方法ServiceName: api-product-service, //请求服务名称LoadBalancerOptions: {Type: LeastConnection //负载均衡算法目前 Ocelot 有RoundRobin 和LeastConnection算法}}],GlobalConfiguration: {BaseUrl: http://localhost:5015, //进行标头查找和替换以及某些管理配置ServiceDiscoveryProvider: {Scheme: http,Host: 127.0.0.1, //你的Consul的ip地址Port: 8500, //你的Consul的端口Type: Consul //类型//ConfigurationKey: Consul //指定配置键键入您的配置}},Url: http://localhost:5015,Consul: {ConsulIP: 127.0.0.1,ConsulPort: 8500,ServiceName: api-gateway,Ip: localhost,Port: 5015,Weight: 1},AllowedHosts: * }MCode.Product.Api.Program using MCode.Product.Api; using MCode.Common.Extensions.Consul; using MCode.Common.Extensions.Cors; using MCode.Common.Extensions.Swagger;var builder WebApplication.CreateBuilder(args);// Add services to the container.builder.WebHost.UseUrls(builder.Configuration.GetValuestring(Url) ?? );builder.Services.AddControllers();builder.Services.AddMCodeConsul();builder.Services.AddMCodeCors();builder.Services.AddMCodeSwagger(new SwaggerOptions(api-product-service, new Microsoft.OpenApi.Models.OpenApiInfo { Title 产品服务 }, new string[] { MCode.Product.Api.xml }));var app builder.Build();app.UseAuthorization();app.UseMCodeCors();app.UseMCodeSwagger();app.UseConsulCheckService();app.MapControllers();app.Run();appsettings.json {Logging: {LogLevel: {Default: Information,Microsoft.AspNetCore: Warning}},AllowedHosts: *,Url: http://localhost:5014,Consul: {ConsulIP: 127.0.0.1,ConsulPort: 8500,ServiceName: api-product-service,Ip: localhost,Port: 5014,Weight: 1} }效果
http://www.dnsts.com.cn/news/223908.html

相关文章:

  • 汉服销售网站建设菠菜网站建设
  • 电视台网站建设中信建设有限责任公司项目人员配置
  • 菏泽网站建设菏泽wordpress5.0.2好用吗
  • 自己的电脑做服务器,并建网站营销网站模板html
  • Wordpress调用搜索seo培训教程
  • 服务器搭建网站用什么系统网站建设 技术方案
  • 网站建设课程报告网站建设有哪些类型
  • 免费手机网站空间长沙专业网站设计平台
  • 溧阳网站建设哪家好网络推广有用吗
  • 人才网站cms做网站石家庄
  • 音乐类网站建设选题背景网络营销服务外包
  • 网上商城网站开发需求说明书设计类网站排名
  • php旅游网站论文中国执行信息公开网信息查询
  • ps网站设计怎么做软件开发成本估算表
  • 用凡科做网站的费用网站建设自动适应功能
  • 评网网站建设自己做国际网站
  • 申请网站怎么申请ai中如何做网站切图
  • 青岛制作网站的wordpress网站内容
  • 惠阳市网站建设定制型网站建设推广
  • 公司网站用什么系统平江做网站的公司
  • 团购网站模板编辑首页网店如何引流与推广
  • 网络营销师怎么考企业网站seo成功案例
  • 网站开发和软件开发哪个好wordpress放哪
  • 博兴网站建设合肥建设云app
  • 学院网站建设时间控制变更申请表网站上传后后台进不去
  • 找设计方案的网站高端网站建设公司哪家更专业
  • 中小企业网站营销型网站要点
  • 医疗网站建设资讯动态表白网站制作
  • 个人网站名称怎么起大连住房和城乡建设官网
  • 淄博网站的优化岳阳网站设计公司