前言:

今天补充一下 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 功能,将使得服务间的调用,更加轻松、简约、高效。

Taurus.MVC 微服务框架 入门开发教程:项目集成:7、微服务间的调用方式(调整):引用程序集及代码下载(新增)的更多相关文章

  1. Taurus.MVC 微服务框架 入门开发教程:项目部署:1、微服务应用程序常规部署实现多开,节点扩容。

    系列目录: 本系列分为项目集成.项目部署.架构演进三个方向,后续会根据情况调整文章目录. 本系列第一篇:Taurus.MVC V3.0.3 微服务开源框架发布:让.NET 架构在大并发的演进过程更简单 ...

  2. Taurus.MVC 微服务框架 入门开发教程:项目部署:2、让Kestrel支持绑定多个域名转发,替代Ngnix使用。

    系列目录: 本系列分为项目集成.项目部署.架构演进三个方向,后续会根据情况调整文章目录. 本系列第一篇:Taurus.MVC V3.0.3 微服务开源框架发布:让.NET 架构在大并发的演进过程更简单 ...

  3. Taurus.MVC 微服务框架 入门开发教程:项目部署:3、微服务应用程序版本升级:全站升级和局部模块升级。

    系列目录: 本系列分为项目集成.项目部署.架构演进三个方向,后续会根据情况调整文章目录. 本系列第一篇:Taurus.MVC V3.0.3 微服务开源框架发布:让.NET 架构在大并发的演进过程更简单 ...

  4. Taurus.MVC 微服务框架 入门开发教程:项目集成:1、服务端:注册中心、网关(提供可运行程序下载)。

    系列目录: 本系列分为项目集成.项目部署.架构演进三个方向,后续会根据情况调整文章目录. 本系列第一篇:Taurus.MVC V3.0.3 微服务开源框架发布:让.NET 架构在大并发的演进过程更简单 ...

  5. Taurus.MVC 微服务框架 入门开发教程:项目集成:2、客户端:ASP.NET Core(C#)项目集成:应用中心。

    系列目录: 本系列分为项目集成.项目部署.架构演进三个方向,后续会根据情况调整文章目录. 本系列第一篇:Taurus.MVC V3.0.3 微服务开源框架发布:让.NET 架构在大并发的演进过程更简单 ...

  6. Taurus.MVC 微服务框架 入门开发教程:项目集成:5、统一的日志管理。

    系列目录: 本系列分为项目集成.项目部署.架构演进三个方向,后续会根据情况调整文章目录. 本系列第一篇:Taurus.MVC V3.0.3 微服务开源框架发布:让.NET 架构在大并发的演进过程更简单 ...

  7. Taurus.MVC 微服务框架 入门开发教程:项目集成:4、默认安全认证与自定义安全认证。

    系列目录: 本系列分为项目集成.项目部署.架构演进三个方向,后续会根据情况调整文章目录. 本系列第一篇:Taurus.MVC V3.0.3 微服务开源框架发布:让.NET 架构在大并发的演进过程更简单 ...

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

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

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

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

  10. Taurus.MVC 微服务框架 入门开发教程:项目部署:6、微服务应用程序Docker部署实现多开。

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

随机推荐

  1. 大模型时代的PDF解析工具

    去年(2023年)是大模型爆发元年.但是大模型具有两个缺点:缺失私有领域知识和幻觉.缺失私有领域知识是指大模型训练时并没有企业私有数据/知识,所以无法正确回答相关问题.并且在这种情况下,大模型会一本正 ...

  2. nohup操作

    nohup操作 背景:vscode 连接服务器远程运行时经常会出现断连需要重新输入密码,如果是在终端跑程序那么中断后无法再恢复在终端的输出,为了能够让程序保留实验结果或需要长时间跑程序而无需值守,需要 ...

  3. Zookeeper学习笔记-安装

    zookeeper官网地址https://zookeeper.apache.org/ 1.卸载CentOS自带的open jdk,安装oracle jdk(1.8) 2.时间同步 #安装ntpdate ...

  4. KingbaseES Json 系列四:Json数据操作函数二

    KingbaseES Json 系列四--Json数据操作函数二(JSONB_PRETTY,JSONB_STRIP_NULLS,JSON_OBJECTAGG,JSON_EQUAL,JSON_EXIST ...

  5. Android记账本界面实现

    <!--activity_main.xml-->1 <?xml version="1.0" encoding="utf-8"?> 2 & ...

  6. MogDB备机处于standby need-repair(WAL)状态

    MogDB 备机处于 standby need-repair(WAL)状态 本文出处:https://www.modb.pro/db/402820 问题现象 Mogdb 主备环境,备机检查发现 Sta ...

  7. 通过 Traefik Hub 暴露家里的网络服务

    Traefik Hub 简介 ️Reference: 你的云原生网络平台 -- 发布和加固你的容器从未如此简单. Traefik Hub 为您在 Kubernetes 或其他容器平台上运行的服务提供一 ...

  8. 全新适配鸿蒙生态,Cocos引擎助力3D应用开发

    原文链接:https://mp.weixin.qq.com/s/rCACesJ4QxRuU2NRjIvbDQ,点击链接查看更多技术内容: 一.适配HarmonyOS背景 HarmonyOS 3.1版本 ...

  9. HarmonyOS:NativeWindow 开发指导

      场景介绍 NativeWindow是HarmonyOS本地平台化窗口,表示图形队列的生产者端.开发者可以通过NativeWindow接口进行申请和提交Buffer,配置Buffer属性信息. 针对 ...

  10. This version of Android Studio cannot open this project, please retry with Android Studio 4.0 or newer.

    前言 遇到的问题,This version of Android Studio cannot open this project, please retry with Android Studio 4 ...