NeuCharFramework (NCF)
  • NCF - NeuCharFramework
  • 项目

    • 准备
    • NcfPackageSources 源码指南
    • 动态WebApiEngine
    • 部署
    • MCP(Model Context Protocol)模块
    • Senparc.AI
  • 帮助

    • 在线资源
    • 问答社区
    • QQ群(147054579)
    • Senparc微信SDK
  • Gitee
  • GitHub
  • English
  • 简体中文
GitHub
  • NCF - NeuCharFramework
  • 项目

    • 准备
    • NcfPackageSources 源码指南
    • 动态WebApiEngine
    • 部署
    • MCP(Model Context Protocol)模块
    • Senparc.AI
  • 帮助

    • 在线资源
    • 问答社区
    • QQ群(147054579)
    • Senparc微信SDK
  • Gitee
  • GitHub
  • English
  • 简体中文
GitHub
  • NCF 概要

    • NCF - NeuCharFramework
    • 关于 NCF
    • 环境要求
    • 前后端分离模式
    • Xncf模块简介
  • 准备开发

    • 获取 NCF 模板源码
    • 使用 Visual Studio 运行 NCF
    • 使用 CLI 运行 NCF
    • 安装
    • 管理员登录
    • 管理员后台
    • appsettings.json 配置
    • 模块管理
    • 获取文档
  • 配置

    • 入口文件
    • 数据库设置
    • appsettings.json 配置
    • Docker
    • Dapr
    • 配置多租户
    • Redis 缓存
  • Template 二次开发

    • NCF 模块化开发思想
    • XNCF 的构成
    • XNCF 二次开发接口与边界
    • 创建第一个 Xncf 模块
    • 当前 XNCF 模板结构
    • 实现自己的业务逻辑
    • 更新 Xncf 模块
    • 模块之间如何调用
    • 发布Xncf 模块到nuget.org
    • 更新基础库
    • 手工创建最小 XNCF 模块
    • 嵌入静态资源文件到NCF中
    • 发布本地Nuget包
    • 进阶
  • 数据库

    • 数据库设置
    • 多数据库支持
    • 指定数据库
    • 更新 Senparc.Service 项目的数据库迁移文件(Migrations)
    • 多数据库原理
    • 数据库停机坪(DatabasePlant)
    • 停机坪操作数据库迁移和更新
  • 单元测试

    • NCF 单元测试介绍
    • 开始开发
    • 进阶
    • 附录
  • Q&A

    • NCF名词解释
    • NCF常见问题
  • 新发布

    • 新功能
    • 升级指导
    • 日志

XNCF 的构成

本页属于 Template 二次开发,只说明模块的公共组成和使用约定,不展开框架 扫描源码。内容已按 Senparc.Xncf.XncfBuilder.Template 0.13.0 核对。

XNCF 是 NCF 中可被扫描、安装、启停和独立治理的模块单元。开发者通常使用 XNCF 模块生成器,不需要从空项目手工搭建全部结构。

最小模块注册类

每个模块需要一个带 [XncfRegister] 的 Register 类,继承 XncfRegisterBase 并实现 IXncfRegister:

using Senparc.Ncf.XncfBase;

namespace MyOrg.Xncf.Sample;

[XncfRegister]
public partial class Register : XncfRegisterBase, IXncfRegister
{
    public override string Name => "MyOrg.Xncf.Sample";
    public override string Uid => "A-FIXED-GLOBALLY-UNIQUE-GUID";
    public override string Version => "0.1.0";
    public override string MenuName => "Sample";
    public override string Icon => "fa fa-star";
    public override string Description => "Sample XNCF module";
}
  • Name 和 Uid 必须全局唯一;Uid 发布后不得随意改变。
  • Version 是模块生命周期版本,不等于 NuGet 包版本。
  • 安装、升级和卸载逻辑通过 InstallOrUpdateAsync()、 UninstallAsync() 实现。

二次开发应先阅读:XNCF 二次开发接口与边界。 只有在调试框架实现时,才需要继续查看 IXncfRegister 源码剖析。

加载顺序

[XncfOrder(x)] 按数字降序加载:

  • 0 或未设置:普通模块;
  • 1–5000:需要明确顺序的模块;
  • 58xx:AI 相关基础模块保留区;
  • 59xx:系统底层模块保留区。

普通业务模块不要占用系统保留区。

当前 Function 机制

当前 Function 不再通过 IXncfRegister.Functions 或 IXncfFunction 列表注册。 框架扫描 AppServiceBase 子类中带 [FunctionRender] 的方法,并把结果写入 模块的 FunctionRenderCollection。

推荐结构:

Application/
  AppServices/       带 [FunctionRender] 的应用服务
  DTOs/
    Request/         FunctionAppRequestBase 请求模型
    Response/        响应 DTO

详见:手工创建最小 XNCF 模块。

可选能力

按模块需要组合,不要求全部实现:

能力当前入口
数据库与迁移IXncfDatabase、Register.Database.cs
Razor AreaIAreaRegister、Register.Area.cs
Razor 运行时编译IXncfRazorRuntimeCompilation
中间件IXncfMiddleware
后台线程IXncfThread
FunctionAppServiceBase + [FunctionRender]
MCP ServerEnableMcpServer => true + MCP Tool 特性

推荐阅读顺序

  1. XNCF 二次开发接口与边界
  2. 创建第一个 XNCF 模块
  3. 当前模板结构
  4. 开发 XNCF
  5. 模块间调用
在 GitHub 上编辑此页
上次更新:
贡献者: JeffreySu, MLTechnology
Prev
NCF 模块化开发思想
Next
XNCF 二次开发接口与边界