前方:

开源地址:https://github.com/cyq1162/Taurus.MVC

上篇文章介绍过:工业制造行业的低代码开发平台思维架构图

规划中涉及到了微服务,近些天经过努力和不断的代码与反复压力测试,终于出来一个简单的稳定版本了。

Taurus.MVC 微服务框架说明:

1、框架自带集成了以下功能:

1、服务端:网关、注册中心

2、客户端:微服务应用程序。

因此,即可以做为服务端运行,也可以做为客户端运行,下面进行简单演示:

新建空项目,引入Taurus.MVC微服务框架

1、新建一个任意空Web项目,以NET6为示例,在Nuget上引用Taurus.MVC,这里引入每2个的NETCore版本。

2、Program.cs 手动添加启动代码:

var builder = WebApplication.CreateBuilder(args);
builder.WebHost.UseUrls(CYQ.Data.AppConfig.GetApp("Host"));//启动端口外置到配置文件。
builder.Services.AddHttpContext();//必要1
builder.Services.Configure<KestrelServerOptions>(x => x.AllowSynchronousIO = true).Configure<IISServerOptions>(x => x.AllowSynchronousIO = true);//必要2:开启同步IO读取,对POST请求有用到。 var app = builder.Build();
app.UseHttpContext();//必要3
app.UseTaurusMvc(app.Environment);//必要4
app.Run();

补充说明:如果是.net framework 版本,引用时默认会在web.config自动生成以下启动配置:

<configuration>
<system.web>
<httpModules>
<!--Taurus IIS应用程序池:经典模式(下运行,开启此配置)-->
<add name="Taurus.Core" type="Taurus.Core.UrlRewrite,Taurus.Core" />
</httpModules>
</system.web>
<system.webServer>
<modules>
<!--Taurus IIS应用程序池:集成模式(下运行,开启此配置)-->
<add name="Taurus.Core" type="Taurus.Core.UrlRewrite,Taurus.Core" />
</modules>
</system.webServer>
</configuration>

1、注册中心:配置成为注册中心

appsettings.json 配置项:

{
"AppSettings": {
"MicroService.Server.Name": "RegCenter",//设置为服务端运行的:注册中心

"MicroService.App.RunUrl": "http://localhost:9000",//设置启动的运行地址,可触发默认微服务启动。

"Host": "http://*:9000"
}
}

发布运行,即成为注册中心(也具备网关功能)

看到第一二行有输出信息即为成功。

注册中心故障转移:

复制一份注册中心的程序,修改端口,再补上指向主地址的配置即可:

"MicroService.Server.RegUrl": "http://localhost:9000",//注册中心地址

2、网关:配置成为网关

这里将发布后的项目,复制一份,改一下配置文件:

{
"AppSettings": {
"MicroService.Server.Name": "Gateway",//服务名称
"MicroService.Server.RegUrl": "http://localhost:9000",//注册中心地址 "MicroService.App.RunUrl": "http://localhost:9001",
"Host": "http://*:9001"
}
}

运行,即成为网关中心

看到第一二行输出,即为成功,并间隔性从注册中心读取服务列表。

3、微服务应用

复制一份项目做为微服务应用,直接使用Taurus.MVC的WebAPI功能添加一个Hello的控制器。

进行客户端应用配置:

{
"AppSettings": { //控制器所在的程序集名称
"Taurus.Controllers": "WebAPI", "MicroService.Client.Name": "Hello",//配置要注册的模块名称,可以多个逗号分隔,可以注册域名(实现域名绑定)
"MicroService.Client.RegUrl": "http://localhost:9000",//注册中心地地址 "MicroService.App.RunUrl": "http://localhost:9002",
"Host": "http://*:9002"
}
}

然后发布,运行即可:

看第一二行,运行成功后,客户端会定时保持注册同步。

微服务负载均衡:

仅需要将客户端,复制多份,修改启动端口,直接运行,网关会自动采用轮循的方式负载均衡。

整体运行效果:

1、直接访问应用程序:

2、通过网关访问:

3、访问注册中心(注册中心也可以当网关用)

总结:

本篇介绍微服务框架的最基本使用,在任意开发框架上,引用Taurus.MVC的Nuget包,加上最简的几行配置,即可成为微服务的任意一端。

V3.0.3 已实现的功能:

------------------V3.0.3【新增内置微服务(网关和注册中心)功能】----------------
1、新增:注册中心服务注册。(2022-07-23)
2、新增:网关代理转发。(2022-07-23)
3、新增:网关安全效验([MicroService]属性标记时接口仅允许微服务间调用)。(2022-07-24)
4、新增:网关集群。(2022-07-25)
5、新增:注册中心故障转移。(2022-07-25)
6、新增:服务间调用方法提供。(2022-07-26)
7、优化:路由寻址与代理转发的兼容。(2022-07-27)
8、优化:统一日志监控方案,方便问题定位。(2022-07-28)
9、新增:文件代理转发,支持作为网站网关。(2022-07-29)
10、优化:Taurus.Core.Controller 去掉方法与属性:方法【CheckFormat】、属性【Sort、Order】。(2022-07-29)
11、新增:Kestrel下网关和服务启动后触发请求(配置项:MicroService.App.RunUrl)。(2022-07-29)
12、新增:Kestrel 实现多域名绑定转发。(2022-07-29)
13、优化:大量微服务的注册性能优化和并发测试。(2022-07-30)
14、优化:服务端和客户端各自独立。(2022-07-31)
15、新增:兼容微软mvc框架引用即可成为微服务端。(2022-08-01)
16、新增:完成Web的Cookie转发。(2022-08-01)
17、新增:控制台日志输出,方便调试。(2022-08-01)

微服务的其它内容细节,会在后续的教程文章中讲述到。

后续,针对Taurus.MVC ,会重新补充三个系列教程:

1、Taurus.MVC WebAPI 入门开发教程 系列。
2、Taurus.MVC 微服务框架 入门开发教程 系列。
3、Taurus.MVC Web应用程序 入门开发教程 系列。

Taurus.MVC V3.0.3 微服务开源框架发布:让.NET 架构在大并发的演进过程更简单。的更多相关文章

  1. .net core 自带分布式事务的微服务开源框架JMS

    事务的统一性是微服务的一个重点问题,简洁有效的控制事务,更是程序员所需要的.JMS的诞生,就是为了更简单.更有效的控制事务. 先看一段调用微服务的代码: using (var ms = new JMS ...

  2. Taurus.MVC 微服务框架 入门开发教程:项目部署:4、微服务应用程序发布到Docker部署(上)。

    系列目录: 本系列分为项目集成.项目部署.架构演进三个方向,后续会根据情况调整文章目录. 开源地址:https://github.com/cyq1162/Taurus.MVC 本系列第一篇:Tauru ...

  3. Taurus.MVC 微服务框架 入门开发教程:项目部署:5、微服务应用程序发布到Docker部署(下)。

    系列目录: 本系列分为项目集成.项目部署.架构演进三个方向,后续会根据情况调整文章目录. 开源地址:https://github.com/cyq1162/Taurus.MVC 本系列第一篇:Tauru ...

  4. Taurus.MVC WebAPI 入门开发教程1:框架下载环境配置与运行(含系列目录)。

    前言: Taurus.MVC 微服务版本已经发布了:Taurus.MVC V3.0.3 微服务开源框架发布:让.NET 架构在大并发的演进过程更简单. 以前都是框架发布时写点相关功能点的文章,没有形成 ...

  5. GJM : Taurus.MVC 2.0 开源发布:WebAPI开发教程 [转载]

    Taurus.MVC 2.0 开源发布:WebAPI开发教程 转载自http://www.cnblogs.com/cyq1162/p/6069020.html 因是新手  粘贴时有一个版权问题 本文原 ...

  6. 微服务开源生态报告 No.10

    「微服务开源生态报告」,汇集各个开源项目近期的社区动态,帮助开发者们更高效的了解到各开源项目的最新进展. 社区动态包括,但不限于:版本发布.人员动态.项目动态和规划.培训和活动. 非常欢迎国内其他微服 ...

  7. 微服务开源生态报告 No.7

    「微服务开源生态报告」,汇集各个开源项目近期的社区动态,帮助开发者们更高效的了解到各开源项目的最新进展. 社区动态包括,但不限于:版本发布.人员动态.项目动态和规划.培训和活动. 非常欢迎国内其他微服 ...

  8. 微服务开源生态报告 No.6

    「微服务开源生态报告」,汇集各个开源项目近期的社区动态,帮助开发者们更高效的了解到各开源项目的最新进展. 社区动态包括,但不限于:版本发布.人员动态.项目动态和规划.培训和活动. 非常欢迎国内其他微服 ...

  9. 微服务开源生态报告 No.5

    「微服务开源生态报告」,汇集各个开源项目近期的社区动态,帮助开发者们更高效的了解到各开源项目的最新进展. 社区动态包括,但不限于:版本发布.人员动态.项目动态和规划.培训和活动. 非常欢迎国内其他微服 ...

随机推荐

  1. windows 存储和切换 ip 配置

    我的虚拟机用的是桥接模式,在公司使用时设置的是静态 ip,但网段和家里面的不一样,就导致在公司和家里,我需要频繁修改 ipv4 的配置以适应不同的网络环境 Simple-IP-Config 工具解决了 ...

  2. 利用ArcEngine开发地图发布服务,将mxd文档一键发布成wmts,并根据需要对地图进行空间查询,返回客户端geojson

    一直想开发一个软件取代ArcGIS Server,该软件使用ArcEngine开发,以Windows Service形式发布,部署在服务端上,解决wmts地图服务发布和空间查询的问题,经过不断的研究. ...

  3. arts-week14

    Algorithm 923. 3Sum With Multiplicity - LeetCode Review Building a network attached storage device w ...

  4. 高危!Fastjson反序列化远程代码执行漏洞风险通告,请尽快升级

    据国家网络与信息安全信息通报中心监测发现,开源Java开发组件Fastjson存在反序列化远程代码执行漏洞.攻击者可利用上述漏洞实施任意文件写入.服务端请求伪造等攻击行为,造成服务器权限被窃取.敏感信 ...

  5. npm错误:Cannot find module ‘compression-webpack-plugin

    转自 (82条消息) 前端开发遇到Cannot find module 'compression-webpack-plugin'问题解决_brave_zhao的博客-CSDN博客 <div id ...

  6. atcoder abc 244

    atcoder abc 244 D - swap hats 给定两个 R,G,B 的排列 进行刚好 \(10^{18}\) 次操作,每一次选择两个交换 问最后能否相同 刚好 \(10^{18}\) 次 ...

  7. ElasticSearch7.3学习(三十一)----Logstash基础学习

    一.Logstash基本介绍 Logstash 是一个功能强大的工具,可与各种部署集成. 它提供了大量插件,可帮助你解析,丰富,转换和缓冲来自各种来源的数据(文件.数据库......).logstas ...

  8. C++ 炼气期之数据是主角

    1. 前言 数据在程序中的重要性,怎么强调都不为过,程序的本质就是通过提供数据处理逻辑,把数据从一种状态变成另一种状态的过程.处理逻辑一定是有针对性的,针对的是数据本身的特性. 只有了解了数据本身的内 ...

  9. ExtJS 布局-Column布局(Column layout)

    更新记录: 2022年6月1日 开始. 2022年6月4日 发布. 1.说明 使用列布局,可以将容器拆分为特定大小的列,并将子组件放置在这些列中. 可以设置子组件宽度值为: 百分比(相对父容器宽度) ...

  10. 为什么要使用TypeScript(Why Typescript?)

    客观原因 静态类型. 在编译期即可进行静态类型分析, 减少JS运行时类型错误. 语法功能强大 对于大型项目具有更好构建机制,加入了类.接口.泛型.模块等概念. 兼容JavaScript 与现存的Jav ...