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

个人网站备案通过后招商外包服务公司

个人网站备案通过后,招商外包服务公司,wordpress 获取文章分类id,图书销售网站网页设计模板资料链接:https://download.csdn.net/download/ly1h1/90731290 1.效果 基于Ocelot,实现对3个微服务的轮询调用,实现不停机更新,无缝更新; 2.环境要求 1.部署环境:腾讯云的轻量化应用服务器 2.系统环境&…

资料链接:https://download.csdn.net/download/ly1h1/90731290

1.效果

基于Ocelot,实现对3个微服务的轮询调用,实现不停机更新,无缝更新;

2.环境要求

1.部署环境:腾讯云的轻量化应用服务器

2.系统环境:Window Server 2016

3..net托管包:dotnet-hosting-9.0.4-win.exe

3.配置开放端口号

 3.1 端口号说明:端口5000(服务1),端口5001(服务2),端口5002(服务3),端口5010(Ocelot)

3.2 在服务器管理平台上的开放以上4个端口号

2.3 配置入站规则端口号

4.服务1的代码

4.1 Program.cs

var builder = WebApplication.CreateBuilder(args);// 添加Swagger
builder.Services.AddEndpointsApiExplorer();
builder.Services.AddSwaggerGen(c =>
{c.SwaggerDoc("v1", new() { Title = "ServerAPI1", Version = "v1" });
});builder.WebHost.ConfigureKestrel(serverOptions => { }).UseUrls("http://*:5000"); // 允许所有Hostbuilder.Services.AddControllers();
var app = builder.Build();// 配置Swagger
if (app.Environment.IsDevelopment())
{app.UseSwagger();app.UseSwaggerUI(c => c.SwaggerEndpoint("/swagger/v1/swagger.json", "ServerAPI1 v1"));
}app.UseRouting();
app.MapControllers();app.Run();

4.2 接口

using Microsoft.AspNetCore.Mvc;
using ServerAPI1.Models;namespace ServerAPI1.Controllers
{[ApiController][Route("api/[controller]")][Produces("application/json")]public class ValuesController : ControllerBase{/// <summary>/// 获取服务基本信息/// </summary>[HttpGet("info")][ProducesResponseType(200)]public IActionResult GetInfo(){return Ok(new { Service = "ServerAPI1", Port = 5000 });}/// <summary>/// 计算服务 (A+B)/// </summary>/// <param name="model">输入参数</param>[HttpPost("calculate")][ProducesResponseType(200)][ProducesResponseType(400)]public IActionResult Calculate([FromBody] TestModel model){if (!ModelState.IsValid) return BadRequest(ModelState);return Ok(new { Result = 123 + 321, Input = model });}}
}

4.2 数据模型

using System.ComponentModel.DataAnnotations;namespace ServerAPI1.Models
{public class TestModel{[Required][StringLength(100)]public string AAA { get; set; }[StringLength(200)]public string BBB { get; set; }}
}

5.服务2的代码

5.1  Program.cs

var builder = WebApplication.CreateBuilder(args);// 添加Swagger
builder.Services.AddEndpointsApiExplorer();
builder.Services.AddSwaggerGen(c =>
{c.SwaggerDoc("v1", new() { Title = "ServerAPI2", Version = "v1" });
});builder.WebHost.ConfigureKestrel(serverOptions => { }).UseUrls("http://*:5001"); // 允许所有Hostbuilder.Services.AddControllers();
var app = builder.Build();// 配置Swagger
if (app.Environment.IsDevelopment())
{app.UseSwagger();app.UseSwaggerUI(c => c.SwaggerEndpoint("/swagger/v1/swagger.json", "ServerAPI2 v1"));
}app.UseRouting();
app.MapControllers();app.Run();

5.2 接口

using Microsoft.AspNetCore.Mvc;
using ServerAPI2.Models;namespace ServerAPI2.Controllers
{[ApiController][Route("api/[controller]")][Produces("application/json")]public class ValuesController : ControllerBase{/// <summary>/// 获取服务元数据/// </summary>[HttpGet("info")][ProducesResponseType(200)]public IActionResult GetInfo(){return Ok(new { Service = "ServerAPI2", Port = 8016 });}/// <summary>/// 字符串转换服务/// </summary>/// <param name="model">输入参数</param>[HttpPost("calculate")][ProducesResponseType(200)][ProducesResponseType(400)]public IActionResult Transform([FromBody] TestModel model){if (!ModelState.IsValid) return BadRequest(ModelState);return Ok(new { Result = $"{model.AAA}-{model.BBB}".ToUpper() });}}
}

5.3 数据模型

    using System.ComponentModel.DataAnnotations;namespace ServerAPI2.Models{public class TestModel{[Required][StringLength(100)]public string AAA { get; set; }[StringLength(200)]public string BBB { get; set; }}}

6.服务3的代码

6.1 Program.cs

var builder = WebApplication.CreateBuilder(args);// 添加Swagger
builder.Services.AddEndpointsApiExplorer();
builder.Services.AddSwaggerGen(c =>
{c.SwaggerDoc("v1", new() { Title = "ServerAPI3", Version = "v1" });
});builder.WebHost.ConfigureKestrel(serverOptions => { }).UseUrls("http://*:5002"); // 允许所有Hostbuilder.Services.AddControllers();
var app = builder.Build();// 配置Swagger
if (app.Environment.IsDevelopment())
{app.UseSwagger();app.UseSwaggerUI(c => c.SwaggerEndpoint("/swagger/v1/swagger.json", "ServerAPI3 v1"));
}app.UseRouting();
app.MapControllers();app.Run();

6.2 接口

using Microsoft.AspNetCore.Mvc;
using ServerAPI3.Models;namespace ServerAPI3.Controllers
{[ApiController][Route("api/[controller]")][Produces("application/json")]public class ValuesController : ControllerBase{/// <summary>/// 获取服务元数据/// </summary>[HttpGet("info")][ProducesResponseType(200)]public IActionResult GetInfo(){return Ok(new { Service = "ServerAPI4", Port = 8016 });}/// <summary>/// 字符串转换服务/// </summary>/// <param name="model">输入参数</param>[HttpPost("calculate")][ProducesResponseType(200)][ProducesResponseType(400)]public IActionResult Transform([FromBody] TestModel model){if (!ModelState.IsValid) return BadRequest(ModelState);return Ok(new { Result = $"{model.AAA}-{model.BBB}".ToUpper() });}}
}

6.3 数据模型

    using System.ComponentModel.DataAnnotations;namespace ServerAPI3.Models{public class TestModel{[Required][StringLength(100)]public string AAA { get; set; }[StringLength(200)]public string BBB { get; set; }}}

7.Ocelot的代码

7.1 Program.cs

using Ocelot.DependencyInjection;
using Ocelot.Middleware;var builder = WebApplication.CreateBuilder(args);// 强制指定 Kestrel 端口(优先级最高)
builder.WebHost.ConfigureKestrel(serverOptions =>
{serverOptions.ListenAnyIP(5010); // 监听所有IP的5010端口
});builder.Configuration.AddJsonFile("ocelot.json", optional: false, reloadOnChange: true);
builder.Services.AddOcelot(builder.Configuration);var app = builder.Build();
await app.UseOcelot();
app.Run();

7.2 ocelot.json

{"Routes": [{"DownstreamPathTemplate": "/api/values/{action}","DownstreamScheme": "http","DownstreamHostAndPorts": [{"Host": "192.168.0.102","Port": 5000}, // ServerAPI1{"Host": "192.168.0.102","Port": 5001} ,// ServerAPI2{"Host": "192.168.0.102","Port": 5002} // ServerAPI3],"UpstreamPathTemplate": "/balanced-api/values/{action}","UpstreamHttpMethod": [ "GET", "POST" ],"LoadBalancerOptions": {"Type": "RoundRobin" // 轮询策略}}],"GlobalConfiguration": {"BaseUrl": "http://192.168.0.102:5010"}
}

8.生成发布文件

8.1 选中发布项目,右键点击发布

8.2 选择文件发布,选择文件路径,部署模式为独立,目标运行时为win-x64。

8.3 生成publish文件

9.文件拷贝到服务器的制定目录下

10.点击5个文件夹内部的exe,即可运行;

http://www.dtcms.com/a/446227.html

相关文章:

  • 手机网站建设的重点步骤电商网站毕业设计论文
  • 国内网站设计案例欣赏网站推广方法
  • 【LaTeX】 11 LaTeX 字体与间距控制
  • MySQL的联合索引以及其最左前缀原则
  • 小迪web自用笔记55
  • Principal v6.15 中文汉化版安装教程|Mac .dmg 文件安装步骤详解
  • Quantum transfer learning学习笔记
  • 台州做网站多少钱济南建设工程交易网
  • ASP3605电源芯片的性能优化与改进思路
  • 兰亭妙微高端网站设计方案:为什么模板站无法体现品牌价值?
  • 【深度学习01】快速上手 PyTorch:环境 + IDE+Dataset
  • 免费源码html网站怎么做一个个人网页
  • 怎样做网站赚流量什么是域名为什么需要它
  • 南通外贸建站网络系统管理属于什么专业类别
  • 做公号模版网站东莞计算机培训机构哪个最好
  • Doris专题5- Rollup与查询
  • 爬虫与自动化技术深度解析:从数据采集到智能运维的完整实战指南——千亿级商品比价系统架构与自动化运维
  • XMLHttpRequest 发送json 格式的数据,servlet 接收
  • PCIe协议之复位篇之Fundamental Reset (Cold or Warm Reset) 和 HotReset(一)
  • 数据结构与算法:合集1.0版
  • Redis 常见面试题
  • PostgreSQL透明加密(TDE)技术深度解析:从实现原理到国密合规实践
  • 86-dify案例分享-Qwen3-VL+Dify:从作业 OCR 到视频字幕,多模态识别工作流一步教,附体验链接
  • [ClaudeCode指北] Windows 本地 MCP 服务器配置与管理指南
  • 【LeetCode热题100(34/100)】合并 K 个升序链表
  • 怎么建设网站数据库广告营销策略分析
  • 英文网站营销邢台论坛网
  • 【第十六周】自然语言处理的学习笔记01
  • 企业logo设计报价wordpress终极优化
  • 进程与线程的区别和适用场景