30

模块与字典管理

简介

本项目是一个基于.NET平台的模块化系统,专注于模块和字典的动态管理与扩展。系统通过服务层接口提供灵活的配置和管理能力,支持开发者快速扩展新功能。

核心目标

  • 动态管理模块和字典。
  • 提供可扩展的服务层接口。
  • 支持多平台部署(Web、Maui、Wasm等)。

项目结构

1. 主目录结构

  1. Known

    • 主项目,包含核心配置和服务实现。
    • 关键文件:
      • AppConfig.cs:全局配置。
      • ServiceBase.cs:服务基类。
      • Database.cs:数据库操作封装。
  2. Known.Core

    • 核心逻辑层,定义实体和服务接口。
    • 关键文件:
      • SysModule.cs:模块实体。
      • SysDictionary.cs:字典实体。
  3. Plugins

    • 插件目录,支持功能扩展。
    • 示例插件:
      • Known.Admin:管理后台插件。
      • Known.Cells:Excel处理插件。
  4. Shared

    • 共享库,包含通用工具和数据库驱动。
    • 关键文件:
      • Database.cs:多数据库支持(SQL Server、MySQL等)。
classDiagram
    class Known {
        +AppConfig
        +ServiceBase
    }
    class Known.Core {
        +SysModule
        +SysDictionary
    }
    class Plugins {
        +Known.Admin
        +Known.Cells
    }
    Known --> Known.Core: 依赖
    Plugins --> Known: 插件扩展

核心组件

1. 模块管理

  • 实体类SysModule.cs
    定义模块的基本属性(名称、图标、权限等)。
  • 服务接口ModuleService.cs
    提供模块的增删改查和动态加载功能。

代码示例

// SysModule.cs
public class SysModule {
    public string Name { get; set; }
    public string Icon { get; set; }
}

2. 字典管理

  • 实体类SysDictionary.cs
    存储键值对数据,支持多级分类。
  • 服务接口CodeService.cs
    实现字典的动态查询和缓存。

架构概述

系统采用分层架构:

  1. 表现层:Blazor组件(如ModulePage.razor)。
  2. 服务层AdminServicePlatformService
  3. 数据层Database.cs支持多数据库。
flowchart TD
    A[Blazor页面] --> B[服务层]
    B --> C[数据层]
    C --> D[数据库]

详细组件分析

1. 模块扩展

步骤

  1. 继承PluginBase类。
  2. 实现IPlugin接口。
  3. 注册到PluginConfig

示例

public class CustomModule : PluginBase {
    public override void ConfigureServices(IServiceCollection services) {
        services.AddScoped<IModuleService, CustomModuleService>();
    }
}

依赖关系分析

关键依赖

  1. Known.Core → Known
    核心层依赖主项目的配置和服务基类。
  2. Plugins → Shared
    插件依赖共享库的数据库工具。

优化建议

  • 减少插件与核心层的直接耦合,改用事件总线。

性能优化建议

  1. 字典缓存:在CodeService中实现内存缓存。
  2. 异步加载:模块初始化使用async/await

常见问题解答

Q:如何添加新字典类型?
A:继承SysDictionary并注册到CodeService


总结

本文档详细介绍了系统的模块和字典管理机制,涵盖架构、核心组件及扩展方法。通过分层设计和插件化支持,系统具备高可扩展性。