WTM框架详解

发布时间:2023-05-23

一、概述

WTM是一个基于ASP.NET Core和ElementUI的前后端分离的快速开发框架,包含基础模块如用户、权限、菜单、角色等的快速开发,提供了数据驱动界面自动生成、模型自动验证、代码生成器、可扩展插件、前后端分离等功能。 它可以帮助开发人员快速构建基于B/S架构的信息管理系统,增加代码的可维护性和可读性,减小开发成本和周期。

二、模块功能

以下是WTM框架中常用的模块功能:

1. 用户认证

WTM框架内置了用户认证功能,可以自定义用户实体、角色实体、资源申请实体,支持JWT、Cookie、Session等多种方式的身份验证机制。

2. 权限管理

WTM框架提供多种角色和权限控制方式,如角色继承、规则定制、资源管理,可以实现精细化的授权功能。

3. 模块化菜单管理

WTM框架支持快速生成左侧菜单栏,可以灵活配置菜单项、菜单图标,提供了简单的路由和重定向功能,支持嵌套菜单和权限控制。

4. 数据驱动界面生成

WTM框架提供了快速生成业务页面的功能,通过简单的配置即可自动生成对应的Vue/React页面,支持自定义前端框架和样式库。

5. 模型自动验证

WTM框架内置了数据验证模块,基于FluentValidation框架,支持链式验证、自定义验证器、错误返回等功能,方便进行参数校验和模型验证。

三、使用示例

1. 添加初始化配置

在ASP.NET Core项目的Startup.cs中添加WTM框架的初始化配置,如下所示:

public void ConfigureServices(IServiceCollection services)
{
    //添加WTM框架服务
    services.AddWTM(options =>
    {
        options.Global = new GlobalConfig
        {
            Author = "WTM",
            Mapper = MapperEnum.AutoMapper,
            ConnectionString = Configuration.GetConnectionString("DefaultConnection"),
            DbType = DbTypeEnum.SqlServer
        };
        options.InjectService = Assembly.GetAssembly(typeof(BaseService<>)).MakeInjectServices();
        options.Modules = new List<ModuleConfig>
        {
            new ModuleConfig{
                ClassName = "Demo",
                Author ="WTM",
                Area = "XXX",
                Description = "Demo示例",
                MiniProfiler = true,
                Roles = "Admin, System, Developer",
                UseCustomAuthorize = true
            }
        };
    });
}

2. 生成业务页面

通过代码生成器快速生成业务页面,可以使用命令行工具或通过Web页面进行操作。 命令行操作:

wtm codegen -f DemoEFContext -t Demo -a Demo -o D:\WTM-Demo -m Admin,System,Developer

Web操作:在Admin区域下的代码生成器中,输入项目名称、模块名称、数据源名称和生成路径,即可进行自定义配置的代码生成。

3. 扩展自定义功能

WTM框架支持插件化开发,可以通过继承框架提供的基础类和接口来实现自定义的功能,比如自定义数据驱动模板、自定义业务处理类等。 示例代码:

public class MyModule : BaseModule
{
    public override ModuleConfig Config => new ModuleConfig
    {
        ClassName = "MyModule",
        Description = "自定义模块",
        Author = "WTM",
        MiniProfiler = true,
        UseCustomAuthorize = true,
        Roles = ""
    };
    public override IMenu BuildMenu()
    {
        return this.MakeMenu(new MenuConfig
        {
            Order = int.MaxValue,
            Href = "/MyModule/Demo",
            Icon = "el-icon-menu",
            Text = "自定义模块",
            Children = new List<MenuConfig>()
        }) ;
    }
    public override IServiceCollection AddServices(IServiceCollection services)
    {
        services.AddTransient<IDemoService, DemoService>();
        return services;
    }
}

四、总结

WTM框架是一个适用于中小型信息管理系统快速开发的框架,具有快速、灵活、可扩展等特点,能够方便地进行业务开发和维护,同时提高代码的可读性和可维护性。