主頁 > .NET開發 > Taurus.MVC V3.0.3 微服務開源框架發布:讓.NET 架構在大并發的演程序序更簡單。

Taurus.MVC V3.0.3 微服務開源框架發布:讓.NET 架構在大并發的演程序序更簡單。

2022-08-03 09:27:21 .NET開發

前方:

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

上篇文章介紹過:工業制造行業的低代碼開發平臺思維架構圖

規劃中涉及到了微服務,近些天經過努力和不斷的代碼與反復壓力測驗,終于出來一個簡單的穩定版本了,

Taurus.MVC 微服務框架說明:

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

1、服務端:網關、注冊中心

2、客戶端:微服務應用程式,

因此,即可以做為服務端運行,也可以做為客戶端運行,下面進行簡單演示:

新建空專案,引入Taurus.MVC微服務框架

1、新建一個任意空Web專案,以NET6為示例,在Nuget上參考Taurus.MVC,這里引入第2個Taurus.MVC.Core NET Core版本,

 

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",//設定啟動的運行地址,可觸發Kestrel運行時啟動微服務,

"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應用程式 入門開發教程 系列,
著作權宣告:本文原創發表于 博客園,作者為 路過秋天 本文歡迎轉載,但未經作者同意必須保留此段宣告,且在文章頁面明顯位置給出原文連接,否則視為侵權,
個人微信公眾號
創業QQ群:617713515
Donation(掃碼支持作者):支付寶:
Donation(掃碼支持作者):微信:

轉載請註明出處,本文鏈接:https://www.uj5u.com/net/500713.html

標籤:.NET技术

上一篇:VSTO踩坑記錄(1)- 從零開始開發outlook插件

下一篇:單例模式使用餓漢式和懶漢式創建一定安全?很多人不知

標籤雲
其他(157675) Python(38076) JavaScript(25376) Java(17977) C(15215) 區塊鏈(8255) C#(7972) AI(7469) 爪哇(7425) MySQL(7132) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5869) 数组(5741) R(5409) Linux(5327) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4554) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2429) ASP.NET(2402) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) 功能(1967) .NET技术(1958) Web開發(1951) python-3.x(1918) HtmlCss(1915) 弹簧靴(1913) C++(1909) xml(1889) PostgreSQL(1872) .NETCore(1853) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • WebAPI簡介

    Web體系結構: 有三個核心:資源(resource),URL(統一資源識別符號)和表示 他們的關系是這樣的:一個資源由一個URL進行標識,HTTP客戶端使用URL定位資源,表示是從資源回傳資料,媒體型別是資源回傳的資料格式。 接下來我們說下HTTP. HTTP協議的系統是一種無狀態的方式,使用請求/ ......

    uj5u.com 2020-09-09 22:07:47 more
  • asp.net core 3.1 入口:Program.cs中的Main函式

    本文分析Program.cs 中Main()函式中代碼的運行順序分析asp.net core程式的啟動,重點不是剖析原始碼,而是理清程式開始時執行的順序。到呼叫了哪些實體,哪些法方。asp.net core 3.1 的程式入口在專案Program.cs檔案里,如下。ususing System; us ......

    uj5u.com 2020-09-09 22:07:49 more
  • asp.net網站作為websocket服務端的應用該如何寫

    最近被websocket的一個問題困擾了很久,有一個需求是在web網站中搭建websocket服務。客戶端通過網頁與服務器建立連接,然后服務器根據ip給客戶端網頁發送資訊。 其實,這個需求并不難,只是剛開始對websocket的內容不太了解。上網搜索了一下,有通過asp.net core 實作的、有 ......

    uj5u.com 2020-09-09 22:08:02 more
  • ASP.NET 開源匯入匯出庫Magicodes.IE Docker中使用

    Magicodes.IE在Docker中使用 更新歷史 2019.02.13 【Nuget】版本更新到2.0.2 【匯入】修復單列匯入的Bug,單元測驗“OneColumnImporter_Test”。問題見(https://github.com/dotnetcore/Magicodes.IE/is ......

    uj5u.com 2020-09-09 22:08:05 more
  • 在webform中使用ajax

    如果你用過Asp.net webform, 說明你也算是.NET 開發的老兵了。WEBform應該是2011 2013左右,當時還用visual studio 2005、 visual studio 2008。后來基本都用的是MVC。 如果是新開發的專案,估計沒人會用webform技術。但是有些舊版 ......

    uj5u.com 2020-09-09 22:08:50 more
  • iis添加asp.net網站,訪問提示:由于擴展配置問題而無法提供您請求的

    今天在iis服務器配置asp.net網站,遇到一個問題,記錄一下: 問題:由于擴展配置問題而無法提供您請求的頁面。如果該頁面是腳本,請添加處理程式。如果應下載檔案,請添加 MIME 映射。 WindowServer2012服務器,添加角色安裝完.netframework和iis之后,運行aspx頁面 ......

    uj5u.com 2020-09-09 22:10:00 more
  • WebAPI-處理架構

    帶著問題去思考,大家好! 問題1:HTTP請求和回傳相應的HTTP回應資訊之間發生了什么? 1:首先是最底層,托管層,位于WebAPI和底層HTTP堆疊之間 2:其次是 訊息處理程式管道層,這里比如日志和快取。OWIN的參考是將訊息處理程式管道的一些功能下移到堆疊下端的OWIN中間件了。 3:控制器處理 ......

    uj5u.com 2020-09-09 22:11:13 more
  • 微信門戶開發框架-使用指導說明書

    微信門戶應用管理系統,采用基于 MVC + Bootstrap + Ajax + Enterprise Library的技術路線,界面層采用Boostrap + Metronic組合的前端框架,資料訪問層支持Oracle、SQLServer、MySQL、PostgreSQL等資料庫。框架以MVC5,... ......

    uj5u.com 2020-09-09 22:15:18 more
  • WebAPI-HTTP編程模型

    帶著問題去思考,大家好!它是什么?它包含什么?它能干什么? 訊息 HTTP編程模型的核心就是訊息抽象,表示為:HttPRequestMessage,HttpResponseMessage.用于客戶端和服務端之間交換請求和回應訊息。 HttpMethod類包含了一組靜態屬性: private stat ......

    uj5u.com 2020-09-09 22:15:23 more
  • 部署WebApi隨筆

    一、跨域 NuGet參考Microsoft.AspNet.WebApi.Cors WebApiConfig.cs中配置: // Web API 配置和服務 config.EnableCors(new EnableCorsAttribute("*", "*", "*")); 二、清除默認回傳XML格式 ......

    uj5u.com 2020-09-09 22:15:48 more
最新发布
  • C#多執行緒學習(二) 如何操縱一個執行緒

    <a href="https://www.cnblogs.com/x-zhi/" target="_blank"><img width="48" height="48" class="pfs" src="https://pic.cnblogs.com/face/2943582/20220801082530.png" alt="" /></...

    uj5u.com 2023-04-19 09:17:20 more
  • C#多執行緒學習(二) 如何操縱一個執行緒

    C#多執行緒學習(二) 如何操縱一個執行緒 執行緒學習第一篇:C#多執行緒學習(一) 多執行緒的相關概念 下面我們就動手來創建一個執行緒,使用Thread類創建執行緒時,只需提供執行緒入口即可。(執行緒入口使程式知道該讓這個執行緒干什么事) 在C#中,執行緒入口是通過ThreadStart代理(delegate)來提供的 ......

    uj5u.com 2023-04-19 09:16:49 more
  • 記一次 .NET某醫療器械清洗系統 卡死分析

    <a href="https://www.cnblogs.com/huangxincheng/" target="_blank"><img width="48" height="48" class="pfs" src="https://pic.cnblogs.com/face/214741/20200614104537.png" alt="" /&g...

    uj5u.com 2023-04-18 08:39:04 more
  • 記一次 .NET某醫療器械清洗系統 卡死分析

    一:背景 1. 講故事 前段時間協助訓練營里的一位朋友分析了一個程式卡死的問題,回過頭來看這個案例比較經典,這篇稍微整理一下供后來者少踩坑吧。 二:WinDbg 分析 1. 為什么會卡死 因為是表單程式,理所當然就是看主執行緒此時正在做什么? 可以用 ~0s ; k 看一下便知。 0:000> k # ......

    uj5u.com 2023-04-18 08:33:10 more
  • SignalR, No Connection with that ID,IIS

    <a href="https://www.cnblogs.com/smartstar/" target="_blank"><img width="48" height="48" class="pfs" src="https://pic.cnblogs.com/face/u36196.jpg" alt="" /></a>...

    uj5u.com 2023-03-30 17:21:52 more
  • 一次對pool的誤用導致的.net頻繁gc的診斷分析

    <a href="https://www.cnblogs.com/dotnet-diagnostic/" target="_blank"><img width="48" height="48" class="pfs" src="https://pic.cnblogs.com/face/3115652/20230225090434.png" alt=""...

    uj5u.com 2023-03-28 10:15:33 more
  • 一次對pool的誤用導致的.net頻繁gc的診斷分析

    <a href="https://www.cnblogs.com/dotnet-diagnostic/" target="_blank"><img width="48" height="48" class="pfs" src="https://pic.cnblogs.com/face/3115652/20230225090434.png" alt=""...

    uj5u.com 2023-03-28 10:13:31 more
  • C#遍歷指定檔案夾中所有檔案的3種方法

    <a href="https://www.cnblogs.com/xbhp/" target="_blank"><img width="48" height="48" class="pfs" src="https://pic.cnblogs.com/face/957602/20230310105611.png" alt="" /></a&...

    uj5u.com 2023-03-27 14:46:55 more
  • C#/VB.NET:如何將PDF轉為PDF/A

    <a href="https://www.cnblogs.com/Carina-baby/" target="_blank"><img width="48" height="48" class="pfs" src="https://pic.cnblogs.com/face/2859233/20220427162558.png" alt="" />...

    uj5u.com 2023-03-27 14:46:35 more
  • 武裝你的WEBAPI-OData聚合查詢

    <a href="https://www.cnblogs.com/podolski/" target="_blank"><img width="48" height="48" class="pfs" src="https://pic.cnblogs.com/face/616093/20140323000327.png" alt="" /><...

    uj5u.com 2023-03-27 14:46:16 more