Taurus.MVC 微服務框架 入門開發教程:項目集成:7、微服務間的調用方式(調整):引用程序集及代碼下載(新增)

前言:

今天補充一下 Taurus.MVC 微服務教程,介紹一下微服務中針對RPC方面調整或新增的功能。

之前系列文章目錄:

Taurus.MVC 微服務框架 入門開發教程:項目集成:1、服務端:註冊中心、網關(提供可運行程序下載)。

Taurus.MVC 微服務框架 入門開發教程:項目集成:2、客戶端:ASP.NET Core(C#)項目集成:應用中心。

Taurus.MVC 微服務框架 入門開發教程:項目集成:3、客戶端:其它編程語言項目集成:Java集成應用中心。

Taurus.MVC 微服務框架 入門開發教程:項目集成:4、默認安全認證與自定義安全認證。

Taurus.MVC 微服務框架 入門開發教程:項目集成:5、統一的日誌管理。

Taurus.MVC 微服務框架 入門開發教程:項目集成:6、微服務間的調用方式:Rpc.StartTaskAsync。

在當前版本的 Taurus.MVC 中,變更了 Rpc 的調用方式,同時引入了微服務間調用的程序集生成下載,或代碼引用。

下面一起看看相關的介紹。

1、Taurus.MVC 微服務 Rpc 的調用方式變更說明:

A、名稱空間變更:

Rpc 相關功能,從微服務 Taurus.MicroService 名稱空間變更到 Taurus.Plugin.Rpc 名稱空間下。

B、調用方式變更:

調用方式:從Rpc.XXXAsync 變更爲:Rest.XXXAsync 系列,起手勢有點小變,方法不變。

C、增加同步調用方法:

例如:
方法:Rest.StartTaskAsync(......) 對應異步
方法:Rest.StartTask(......) 對應同步

下面是一個使用示例:

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方式的高性能的調用方法,適用於微服務間的調用,也適用於平時的網絡請求,作爲微服務間的通訊基礎。

由於後續針對Taurus.MVC 微服務增加了新的封裝調用方式,微服務間的調用將不再直接使用Rest調用,而是採用下面封裝好的類庫。

2、Taurus.MVC 微服務 演示示例啓動:

對於常規的 Rpc 遠程調用,如gRpc等,通常需要編寫很多代碼或配置項,這將很大程度影響開發效率。

而 Taurus.MVC 將解決這一點,可以直接在註冊中心下載封裝好的 Rpc調用類庫。

爲了演示,下面將啓動示例程序:

1、啓動微服務註冊中心:(這裏監聽 8000 端口)

2、啓動微服務客戶端A:(從啓動項中可看出只註冊了 /api/ 服務)

3、Taurus.MVC 微服務 Rpc 的調用方式二:下載程序集:

下面教和演示如何下載程序集:

1、首先進入註冊中心管理後臺:在微服服主菜單 MS-Host 中如下圖

管理後臺默認路徑:/admin/login

2、點擊 api 模塊接口,在下方的列表中點擊 Download:

將引出以下界面,該界面可以自定義生成的 dll 名稱(同時也影響名稱空間)

按默認,直接點確定,即可下載:

默認瀏覽器會對dll類型做出提示,常規操作正常保留即可。 

重點說明:

動態生成的 dll 運行時版本,將和微服務客戶端的版本一致:

比如微服務客戶端是部署成.NET8,那麼生成的dll,只能在>=Net8的版本使用。

如果其它調用端的版本低怎麼辦?

下面會介紹介紹代碼模式來解決這個問題。

4、Taurus.MVC 微服務 Rpc 的調用方式二:使用程序集:

接下來,我們可以在任意的其它微服務客戶端中,引用該下載的dll,即可實現調用客戶端,

在引用調用微服務之前,我們需要先將運行環境配置好,確保自身也是微服務客戶端環境。

下面進行演示示例(以 .NET 8 爲示例):

1、新建空項目,並引用 Taurus.MVC:

2、啓用 Taurus.MVC

var builder = WebApplication.CreateBuilder(args);
builder.Services.AddTaurusMvc();
var app = builder.Build();
app.UseTaurusMvc();
app.UseStaticFiles();
app.Run();

3、進入管理後臺,將項目調整爲微服務客戶端

新建如下兩個文件夾,只有存在Views文件夾,MVC框架纔會生成管理後臺。

管理後臺默認路徑:/admin/login

填寫配置,啓動微服務客戶端,當然,也可以通過配置項啓動:

{
  "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 爲客戶端註冊的模塊名。

D、API 下面的方法爲接口名稱。

E、API 下面的類名(以Para結尾)則爲對應方法的參數類
 

瞭解了基本的信息,下面看一個簡單示例:

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";
        }

    }
}

調用輸出結果:

對於調用 Hello 方法的參數,如果不需要參數,也不需要特殊請求頭,可以傳null。 

再給一個演示示例,包含文件上傳:

public string UploadFileResult()
{
    RpcProxy.API.FilePara filePara = new RpcProxy.API.FilePara();
    filePara.File = HttpPostedFileCreator.Create("a.webp");//圖片默認在/wwwroot/目錄下
    var rpcTask = RpcProxy.API.File(filePara);
    if(rpcTask.Result.IsSuccess)
    {
        return rpcTask.Result.Text;
    }
    else
    {
        return rpcTask.Result.Error.Message;
    }
}

運行結果:

重點說明:

1、使用該類庫前,需要確保引用了 Taurus.MVC,並確認運行環境也是微服務客戶端。
2、如果方法有參數,則有一個對的方法名+Para 類,如上的Hello方法對應的參數爲:HelloPara 類。

3、如果方法沒有參數,則由默認RestDefaultPara 參數類服務。

4、參數類除了自身的屬性爲對應的參數,還有一個Header參數,用於設置請求頭。

5、涉及文件上傳的,由 HttpPostedFileCreator.Create 方法來提供。

4、Taurus.MVC 微服務 Rpc 的調用方式三:使用代碼:

如果在整體微服務系列中,使用的 .NET 或 .NET Core 版本不一致,會導致其它客戶端可能無法正確引用程序集,因此,框架代碼了代碼的方式。

下面看使用過程:

1、回到註冊中心的管理後臺:

2、點擊ViewCode:

彈出以下提示,效果和下載 dll 的一致。

 點擊確定:

默認看到的代碼,沒有格式化,可以瀏覽器右鍵並點擊: 查看頁面源代碼(可以看到代碼經過了格式化,整齊了很多)

3、在項目中新建一個類,比如 RpcProx.cs,然後把該代碼Copy過去即可。 

其效果和直接引用下載的程序集是一致的。

目前爲了簡約,生成的dll程序集,或代碼,是沒有帶註釋的,若覺得對接口理解不清楚,可以在註冊中心點擊:ToDoc,即可進入接口文檔。

總結:

新改進提供的Taurus Rpc 功能,可以簡化微服務間的調用,不用再手動敲寫模塊名稱、調用路徑,及手動獲取主機信息來實現負載均衡,這一切,由框架內置實現提供了。

新的Taurus Rpc 功能,將使得服務間的調用,更加輕鬆、簡約、高效。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章