首页 > 编程语言 >Taurus.MVC 微服务框架 入门开发教程:项目集成:7、微服务间的调用方式(调整):引用程序集及代码下载(新增)

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

时间:2024-04-25 10:57:23浏览次数:19  
标签:调用 服务 Taurus Rpc MVC 集及 客户端

前言:

今天补充一下 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,Rpc,MVC,集及,客户端
From: https://www.cnblogs.com/cyq1162/p/18123872

相关文章

  • Spring MVC拦截器实现,记录访问请求日志
    SpringMVC拦截器实现,记录访问请求日志1.创建拦截器类并实现HandlerInterceptor拦截器packagecom.jxdinfo.hussar.sys.interceptor;importcom.jxdinfo.hussar.base.entity.UserInfo;importcom.jxdinfo.hussar.common.util.UserUtils;importcom.jxdinfo.hussar.core.util......
  • SpringMVC学习总结 + 【手写SpringMVC底层机制核心】
    SpringMVC笔记SpringMVC介绍基本介绍SpringMVC是WEB层框架,接管了Web层组件,支持MVC的开发模式/开发架构SpringMVC通过注解,让POJO成为控制器,不需要继承类或者实现接口SpringMVC采用低耦合的组件设计方式,具有更好扩展和灵活性.支持REST格式的URL请求.SpringMV......
  • ASP.NET MVC4.0+EF+LINQ+bui+bootstrap+网站+角色权限管理系统(1)
    ASP.NETMVC4.0+EF+LINQ+bui+bootstrap+网站+角色权限管理系统(1) 本系列的的角色权限管理主要采用Dotnet MVC4工程内置的权限管理模块Simplemembership实现,主要有关文件是InitializeSimpleMembershipAttribute.cs和AccountModels.cs下面是对这两个文件的了解和改造 WebSe......
  • 如何在ASP.NET MVC中的角色中设置权限?
    如何在ASP.NETMVC中的角色中设置权限? 在ASP.NETMVC中,可以通过使用角色和权限来实现访问控制。下面是在ASP.NETMVC中设置角色权限的步骤:创建角色:首先,需要创建角色来表示不同的用户组。可以使用ASP.NET提供的RoleManager类来创建和管理角色。可以在IdentityConfig.cs文......
  • ASP.NET MVC4.0+EF+LINQ+bui+网站+角色权限管理系统(6)
    ASP.NETMVC4.0+EF+LINQ+bui+网站+角色权限管理系统(6) 快过年了,公司事情忙,好几天没有继续写博客,今天开始写账户模块系统登录,账户管理以及登录日志,首先新建登录日志数据表: ViewCode然后更改模型:AccountModels.cs ViewCode创建登录日志模型:M_UsersLoginLogs.cs View......
  • MVCC学习圣经:一文穿透MySQL MVCC,吊打面试官
    文章很长,且持续更新,建议收藏起来,慢慢读!疯狂创客圈总目录博客园版为您奉上珍贵的学习资源:免费赠送:《尼恩Java面试宝典》持续更新+史上最全+面试必备2000页+面试必备+大厂必备+涨薪必备免费赠送:《尼恩技术圣经+高并发系列PDF》,帮你实现技术自由,完成职业升级,薪......
  • SpringMVC
    SpringMVC1、回顾MVC1.1什么是mvcMVC是模型(Model)、视图(View)、控制器(Controller)的简写,是一种软件设计规范。是将业务逻辑、数据、显示分离的方法来组织代码。MVC主要作用是降低了视图与业务逻辑间的双向偶合。MVC不是一种设计模式,MVC是一种架构模式。当然不同的MVC存......
  • Taurus.MVC 性能压力测试(ap 压测 和 linux 下wrk 压测):.NET 版本
    前言:上次发布了:Taurus.MVC性能压力测试(ap压测和linux下wrk压测):.NETCore版本今天计划准备压测一下.NET版本,来测试并记录一下Taurus.MVC 框架在.NET 版本的性能,以便后续持续优化改进。为了方便对比,本文章的电脑环境和测试思路,尽量和上文保持一致,以便方便对比。下......
  • SSM整合(Spring、SpringMVC、Mybatis)
    第一步:新建一个Webx项目第二步:导入相关依赖包第三步:配置Spring核心配置文件第四步:配置SpringMVC核心配置文件第五步:配置web.xml文件......
  • 第五节:框架版本打升级(CoreMvc8.x + EFCore8.x)
    一.基础升级1. 版本升级  将各个类库、项目都升级为.Net8.0  2.AutoFac升级  【AutoFac6.4.0】升级到 【8.0.0】  【Autofac.Extensions.Depend8.0.0】升级到 【9.0.0】 3.基本库升级  【System.Text.Json7.0.2】升级到【8.0.3】  ......