# NCF 模块化开发思想

NCF 采用模块化的思想构建,在系统底层的支持库基础之上,所有的功能模块都以“模块”的形式出现,“一切皆模块”。

例如,数据管理功能可以是一个模块、系统内核可以是一个模块、管理后台可以是一个模块,以及业务层面的购物车可以是一个模块、支付可以是一个模块、评价可以是一个模块,等等。甚至可视化创建模块的功能本身也是一个模块。

使用 NCF 的模块化开发有诸多的好处,比如:

  1. 小粒度功能开发,方便解耦和单元测试;
  2. 模块间可以相互调用,方便功能重用;
  3. 小粒度发布(支持Nuget包发布),方便共享模块功能;
  4. 方便代码和功能移植;
  5. 提供统一的模块化接口,方便系统集成(甚至是现有系统经过简单修改就可以作为一个模块集成到到 NCF);
  6. 可视化模块模板,以及多类型自由选择的接口实现,快速构建业务基础代码;
  7. 独立模块的安装、卸载可以做到完全数据库表隔离,互不影响,可靠性高;
  8. 独立模块可以小粒度单独升级,不影响其他模块;
  9. 等等。

# 模块代号

NCF 的模块内部代号:Xncf,其中 X 即 Extension(可扩展)、Unknown(未知)之意,ncf 即表明此模块根植于 NCF 大框架。

# 命名规则

每一个 Xncf 模块都需要具备一个全局唯一的模块名称,格式如:

Senparc.Xncf.DatabaseToolkit

此名称被 . 分成 3 个部分:

部分 说明
Senparc 组织名称,用于标记提供该模块的组织、公司或个人
Xncf 固定字符,表明这是一个 Xncf 模块
DatabaseToolkit 功能描述,如同一个功能下还有子模块,可以继续用 . 继续分割下一级,如:Senparc.Xncf.DatabaseToolkit.Backup

# Q&A:是否可以不使用模块化开发?

Q:我的系统比较简单,也不需要考虑移植、弹性或扩展,是否可以直接在 NCF 上进行开发?

A:当然可以。加载模块只是为了方便重和系统解耦用而已,NCF 适用于大多数开发场景,包括单体应用、分布式、容器、微信等移动端、跨平台 Hybrid 应用,等等。