lms框架模块详细说明

文件目录
  • 控制模块的界定
  • 控制模块的相互依赖
  • 微服务架构申请注册时特定运行控制模块
  • 应用ContainerBuilder 申请注册服务项目
  • 运用复位方式和终止方式
  • 开源系统详细地址与文本文档

控制模块的界定

一般地,开发人员假如要想在一个自定的程序流程集(包)中申请注册有关的服务项目,或是在运用复位或终止时实行一段自定的编码,那麼您很有可能必须将该程序流程集(包)界定为一个控制模块。

lms架构存有二种种类的控制模块:

  1. 开发人员根据承继LmsModule就可以界定一个一般控制模块类;
  2. 还可以根据承继StartUpModule界定一个服务项目申请注册运行控制模块类。

比如:


// 一般种类控制模块类
public class CustomHostModule : LmsModule
{
}

// 运行控制模块类,仅有该种类的控制模块才能够被容许在搭建服务项目中被特定为运行控制模块
[DependsOn(typeof(ZookeeperModule),
        typeof(DotNettyTcpModule),
        typeof(MessagePackModule),
        typeof(RpcProxyModule),
        typeof(TransactionTccModule),
        typeof(AutoMapperModule)
)]
public class NormHostModule : StartUpModule
{
}

::: tip

  1. 开发人员要想实行一个控制模块,必须在微服务架构时特定该控制模块,或者根据DependsOn特点立即或者间接性的依靠该控制模块。

  2. 仅有运行控制模块类才能够在服务服务申请注册时特定该控制模块为申请注册的运行控制模块。
    :::

控制模块的相互依赖

lms架构的控制模块根据DependsOn特点特定控制模块的相互依赖,lms架构适用根据立即或者间接性的依靠控制模块。比如: NormHostModule控制模块依靠了DotNettyTcpModule控制模块,DotNettyTcpModule控制模块依靠了RpcModule控制模块,微服务架构申请注册时特定NormHostModule为运行控制模块。那麼依据控制模块相互依赖,RpcModule控制模块会被运用载入,并在于DotNettyTcpModuleNormHostModule实行服务项目申请注册方式和复位方式。

开发人员只必须根据DependsOn特点在类立即就可以特定该控制模块依靠的控制模块,在运用运行全过程中,会依据控制模块的相互依赖开展排列。并进行服务项目申请注册方式和特定的复位方式。

比如,NormHostModule的控制模块相互依赖以下所显示:

    [DependsOn(typeof(ZookeeperModule),
        typeof(DotNettyTcpModule),
        typeof(MessagePackModule),
        typeof(RpcProxyModule),
        typeof(TransactionTccModule),
        typeof(AutoMapperModule)
    )]
    public class NormHostModule : StartUpModule
    {
    }

微服务架构申请注册时特定运行控制模块

在搭建微服务架构时,必须特定运行的控制模块。

比如:


private static IHostBuilder CreateHostBuilder(string[] args)
{
    return Host.CreateDefaultBuilder(args)
            .RegisterLmsServices<NormHostModule>() //特定运行的控制模块,lms架构管束了该控制模块种类务必为运行控制模块类(StartUpModule)
        ;
}

一般地,开发人员能够依据微服务项目挑选申请注册lms架构默认设置的控制模块,lms架构给予以下三个服务项目运行控制模块(NormHostModuleWebHostModuleWsHostModule),lms架构给出的默认设置运行控制模块会帮客户特定该种类的微服务架构运用必须依靠什么控制模块。

开发人员假如必须自定控制模块,那麼,相对应的,开发人员必须在控制模块相互依赖中申明依靠该控制模块。因此,一般地,假如您必须自定控制模块,那麼相对应的,您很有可能必须自定服务项目申请注册运行控制模块。

您能够根据承继StartUpModule或者承继该lms架构给予的默认设置运行服务项目控制模块(NormHostModuleWebHostModuleWsHostModule),界定您的运行控制模块,并在您界定的运行控制模块中依靠您的自定控制模块。

比如:


[DependsOn(typeof(ZookeeperModule),
        typeof(DotNettyTcpModule),
        typeof(MessagePackModule),
        typeof(RpcProxyModule),
        typeof(TransactionTccModule),
        typeof(AutoMapperModule),
        typeof(CustomHostModule),
)]
public class CustomNormHostModule : StartUpModule
{
}

// 或者

[DependsOn(typeof(CustomHostModule)
)] // 控制模块的相互依赖也会被承继
public class CustomNormHostModule : NormHostModule
{
}

应用ContainerBuilder 申请注册服务项目

在界定的控制模块中,开发人员能够根据调用RegisterServices方式,根据ContainerBuilder目标开展服务项目申请注册。

比如:

protected override void RegisterServices(ContainerBuilder builder)
{
    builder.RegisterType<MessagePackTransportMessageDecoder>().AsSelf().AsImplementedInterfaces().InstancePerDependency();
    builder.RegisterType<MessagePackTransportMessageEncoder>().AsSelf().AsImplementedInterfaces().InstancePerDependency();
}

运用复位方式和终止方式

开发人员能够根据再次自定控制模块的Initialize方式在微服务架构运用运作时实行该控制模块特定的编码,根据调用Shutdown方式在运用终止时实行该控制模块特定的编码。

public virtual Task Initialize([NotNull]ApplicationContext applicationContext)
{
    // 微服务架构运用实行时,特定该端编码
    return Task.CompletedTask;
}

public virtual Task Shutdown([NotNull]ApplicationContext applicationContext)
{
    // 微服务架构运用终止时,特定该端编码
    return Task.CompletedTask;
}

开源系统详细地址与文本文档

GitHub: https://github.com/liuhll/lms

gitee: https://gitee.com/liuhll2/lms

开发人员文本文档: http://docs.lms-fk.com/

评论(0条)

刀客源码 游客评论