前言:
今天補(bǔ)充一下?Taurus.MVC 微服務(wù)教程,介紹一下微服務(wù)中針對(duì)RPC方面調(diào)整或新增的功能。
之前系列文章目錄:
Taurus.MVC 微服務(wù)框架 入門開發(fā)教程:項(xiàng)目集成:1、服務(wù)端:注冊(cè)中心、網(wǎng)關(guān)(提供可運(yùn)行程序下載)。
Taurus.MVC 微服務(wù)框架 入門開發(fā)教程:項(xiàng)目集成:2、客戶端:ASP.NET?Core(C#)項(xiàng)目集成:應(yīng)用中心。
Taurus.MVC 微服務(wù)框架 入門開發(fā)教程:項(xiàng)目集成:3、客戶端:其它編程語言項(xiàng)目集成:Java集成應(yīng)用中心。
Taurus.MVC 微服務(wù)框架 入門開發(fā)教程:項(xiàng)目集成:4、默認(rèn)安全認(rèn)證與自定義安全認(rèn)證。
Taurus.MVC 微服務(wù)框架 入門開發(fā)教程:項(xiàng)目集成:5、統(tǒng)一的日志管理。
Taurus.MVC 微服務(wù)框架 入門開發(fā)教程:項(xiàng)目集成:6、微服務(wù)間的調(diào)用方式:Rpc.StartTaskAsync。
在當(dāng)前版本的 Taurus.MVC 中,變更了 Rpc 的調(diào)用方式,同時(shí)引入了微服務(wù)間調(diào)用的程序集生成下載,或代碼引用。
下面一起看看相關(guān)的介紹。
1、Taurus.MVC 微服務(wù) Rpc?的調(diào)用方式變更說明:
A、名稱空間變更:
Rpc 相關(guān)功能,從微服務(wù) Taurus.MicroService 名稱空間變更到 Taurus.Plugin.Rpc 名稱空間下。
B、調(diào)用方式變更:
調(diào)用方式:從Rpc.XXXAsync 變更為:Rest.XXXAsync 系列,起手勢(shì)有點(diǎn)小變,方法不變。
C、增加同步調(diào)用方法:
例如:
方法:Rest.StartTaskAsync(......) 對(duì)應(yīng)異步
方法:Rest.StartTask(......) 對(duì)應(yīng)同步
下面是一個(gè)使用示例:
public void Start() { string postUrl = "http://192.168.100.11:27257/api/port"; RpcTaskRequest request = new RpcTaskRequest(); request.HttpMethod = "GET"; request.Url = postUrl; RpcTaskResult result = Rest.StartTask(request); if (result.Headers.Count > 0) { Response.AppendHeader("Port", result.Headers["Port"]); } Write(result.Text); return; }
整體說明:
Taurus.Plugin.Rpc.Rest 類提供一種基于REST方式的高性能的調(diào)用方法,適用于微服務(wù)間的調(diào)用,也適用于平時(shí)的網(wǎng)絡(luò)請(qǐng)求,作為微服務(wù)間的通訊基礎(chǔ)。
由于后續(xù)針對(duì)Taurus.MVC 微服務(wù)增加了新的封裝調(diào)用方式,微服務(wù)間的調(diào)用將不再直接使用Rest調(diào)用,而是采用下面封裝好的類庫。
2、Taurus.MVC 微服務(wù)?演示示例啟動(dòng):
對(duì)于常規(guī)的 Rpc 遠(yuǎn)程調(diào)用,如gRpc等,通常需要編寫很多代碼或配置項(xiàng),這將很大程度影響開發(fā)效率。
而 Taurus.MVC?將解決這一點(diǎn),可以直接在注冊(cè)中心下載封裝好的 Rpc調(diào)用類庫。
為了演示,下面將啟動(dòng)示例程序:
1、啟動(dòng)微服務(wù)注冊(cè)中心:(這里監(jiān)聽 8000 端口)
2、啟動(dòng)微服務(wù)客戶端A:(從啟動(dòng)項(xiàng)中可看出只注冊(cè)了 /api/ 服務(wù))
3、Taurus.MVC 微服務(wù) Rpc?的調(diào)用方式二:下載程序集:
下面教和演示如何下載程序集:
1、首先進(jìn)入注冊(cè)中心管理后臺(tái):在微服服主菜單 MS-Host 中如下圖
管理后臺(tái)默認(rèn)路徑:/admin/login
2、點(diǎn)擊 api 模塊接口,在下方的列表中點(diǎn)擊?Download:
將引出以下界面,該界面可以自定義生成的 dll 名稱(同時(shí)也影響名稱空間)
按默認(rèn),直接點(diǎn)確定,即可下載:
默認(rèn)瀏覽器會(huì)對(duì)dll類型做出提示,常規(guī)操作正常保留即可。?
重點(diǎn)說明:
動(dòng)態(tài)生成的 dll 運(yùn)行時(shí)版本,將和微服務(wù)客戶端的版本一致: 比如微服務(wù)客戶端是部署成.NET8,那么生成的dll,只能在>=Net8的版本使用。 如果其它調(diào)用端的版本低怎么辦? 下面會(huì)介紹介紹代碼模式來解決這個(gè)問題。
4、Taurus.MVC 微服務(wù) Rpc?的調(diào)用方式二:使用程序集:
接下來,我們可以在任意的其它微服務(wù)客戶端中,引用該下載的dll,即可實(shí)現(xiàn)調(diào)用客戶端,
在引用調(diào)用微服務(wù)之前,我們需要先將運(yùn)行環(huán)境配置好,確保自身也是微服務(wù)客戶端環(huán)境。
下面進(jìn)行演示示例(以 .NET 8?為示例):
1、新建空項(xiàng)目,并引用 Taurus.MVC:
2、啟用 Taurus.MVC
var builder = WebApplication.CreateBuilder(args); builder.Services.AddTaurusMvc(); var app = builder.Build(); app.UseTaurusMvc(); app.UseStaticFiles(); app.Run();
3、進(jìn)入管理后臺(tái),將項(xiàng)目調(diào)整為微服務(wù)客戶端
新建如下兩個(gè)文件夾,只有存在Views文件夾,MVC框架才會(huì)生成管理后臺(tái)。
管理后臺(tái)默認(rèn)路徑:/admin/login
填寫配置,啟動(dòng)微服務(wù)客戶端,當(dāng)然,也可以通過配置項(xiàng)啟動(dòng):
{ "appSettings": { "MicroService.Client.Name": "*", "MicroService.Client.RcUrl": "http://192.168.100.105:8000" } }
4、添加并使用RpcProxy類庫:
在程序中引用下載的RpcProxy.dll,然后類庫基本信息見如下圖:
A、名稱空間:Taurus.Plugin.MicroService.Proxy 這是基本名稱空間。
B、RpcProxy 類為下載的 dll 名稱。
C、API 為客戶端注冊(cè)的模塊名。
D、API 下面的方法為接口名稱。
E、API 下面的類名(以Para結(jié)尾)則為對(duì)應(yīng)方法的參數(shù)類
了解了基本的信息,下面看一個(gè)簡(jiǎn)單示例:
public class RpcController : Taurus.Mvc.Controller { public string GetHelloResult() { var rpcTask = RpcProxy.API.Hello(null); if (rpcTask.Result.IsSuccess) { return rpcTask.Result.Text; } else { return "None"; } } }
調(diào)用輸出結(jié)果:
對(duì)于調(diào)用 Hello 方法的參數(shù),如果不需要參數(shù),也不需要特殊請(qǐng)求頭,可以傳null。?
再給一個(gè)演示示例,包含文件上傳:
public string UploadFileResult() { RpcProxy.API.FilePara filePara = new RpcProxy.API.FilePara(); filePara.File = HttpPostedFileCreator.Create("a.webp");//圖片默認(rèn)在/wwwroot/目錄下 var rpcTask = RpcProxy.API.File(filePara); if(rpcTask.Result.IsSuccess) { return rpcTask.Result.Text; } else { return rpcTask.Result.Error.Message; } }
運(yùn)行結(jié)果:
重點(diǎn)說明:
1、使用該類庫前,需要確保引用了 Taurus.MVC,并確認(rèn)運(yùn)行環(huán)境也是微服務(wù)客戶端。
2、如果方法有參數(shù),則有一個(gè)對(duì)的方法名+Para 類,如上的Hello方法對(duì)應(yīng)的參數(shù)為:HelloPara 類。
3、如果方法沒有參數(shù),則由默認(rèn)RestDefaultPara 參數(shù)類服務(wù)。
4、參數(shù)類除了自身的屬性為對(duì)應(yīng)的參數(shù),還有一個(gè)Header參數(shù),用于設(shè)置請(qǐng)求頭。
5、涉及文件上傳的,由 HttpPostedFileCreator.Create 方法來提供。
4、Taurus.MVC 微服務(wù) Rpc?的調(diào)用方式三:使用代碼:
如果在整體微服務(wù)系列中,使用的 .NET?或 .NET Core?版本不一致,會(huì)導(dǎo)致其它客戶端可能無法正確引用程序集,因此,框架代碼了代碼的方式。
下面看使用過程:
1、回到注冊(cè)中心的管理后臺(tái):
2、點(diǎn)擊ViewCode:
彈出以下提示,效果和下載 dll 的一致。
?點(diǎn)擊確定:
默認(rèn)看到的代碼,沒有格式化,可以瀏覽器右鍵并點(diǎn)擊: 查看頁面源代碼(可以看到代碼經(jīng)過了格式化,整齊了很多)
3、在項(xiàng)目中新建一個(gè)類,比如 RpcProx.cs,然后把該代碼Copy過去即可。?
其效果和直接引用下載的程序集是一致的。
目前為了簡(jiǎn)約,生成的dll程序集,或代碼,是沒有帶注釋的,若覺得對(duì)接口理解不清楚,可以在注冊(cè)中心點(diǎn)擊:ToDoc,即可進(jìn)入接口文檔。
總結(jié):
新改進(jìn)提供的Taurus Rpc?功能,可以簡(jiǎn)化微服務(wù)間的調(diào)用,不用再手動(dòng)敲寫模塊名稱、調(diào)用路徑,及手動(dòng)獲取主機(jī)信息來實(shí)現(xiàn)負(fù)載均衡,這一切,由框架內(nèi)置實(shí)現(xiàn)提供了。文章來源:http://www.zghlxwxcb.cn/news/detail-857587.html
新的Taurus?Rpc?功能,將使得服務(wù)間的調(diào)用,更加輕松、簡(jiǎn)約、高效。文章來源地址http://www.zghlxwxcb.cn/news/detail-857587.html
到了這里,關(guān)于Taurus.MVC 微服務(wù)框架 入門開發(fā)教程:項(xiàng)目集成:7、微服務(wù)間的調(diào)用方式(調(diào)整):引用程序集及代碼下載(新增)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!