×

Known:基于 Blazor 的全栈业务开发框架,用 C# 写一切

独孤求败 独孤求败 发表于2026-05-01 23:00:26 浏览45 评论0

抢沙发发表评论

企业级后台管理系统(ERP、OA、CRM、MES、WMS)的开发,在国内 C# 技术栈团队里是一个极其常见的需求。通常的路径是:后端选 ASP.NET Core + EF Core,前端选 Vue/React + 某套 UI 库,前后端分开部署,接口联调来回折腾。如果还要支持桌面端、移动端,工作量更是翻倍。

Known 是一个由国内开发者 KnownChen 开发的基于 Blazor 的全栈业务开发框架,采用 Apache-2.0 开源协议。它的核心设计哲学很直接:用 C# 写一切——前端页面、后端服务、实体模型、验证逻辑、工作流回调、导入导出,全部用 C#。不需要写 JavaScript/TypeScript,也不需要前后端分离的接口联调。

https://github.com/known/Known

图片

一套代码,五种宿主

Known 最直观的亮点是多端统一开发。同一套业务代码可以通过不同的宿主程序运行:

  • Blazor Server

    服务端渲染,适合内网部署
  • Blazor WebAssembly

    纯前端运行,后端提供 API
  • WinForm (WebView2)

    Windows 桌面应用
  • .NET MAUI

    跨平台移动/桌面应用(iOS/Android/Windows/Mac)
  • Photino

    轻量级跨平台桌面宿主

通过 AddKnownAddKnownCoreAddKnownWebAddKnownDesktop 不同的装配方法切换运行模式。桌面模式会自动关闭 SignalR Hub,因为本地调用不需要 WebSocket 通信。

对于只需要维护一套代码的中小型团队来说,这个能力是实打实的减负。

图片

自研轻量 ORM,不依赖 EF Core

大多数 .NET 业务框架会选 EF Core 做数据访问,Known 反其道而行,自研了一个轻量 Database 类。

它提供 QueryAsync<T>QueryPageAsync<T>InsertAsync<T>UpdateAsync<T>DeleteAsync<T> 等简洁 API,每种数据库有独立的 DbProvider 实现,目前已支持 7 种数据库:

数据库
场景
SQLite
默认数据库,开箱即用
SQL Server
企业级场景
MySQL / MariaDB
互联网常见方案
PostgreSQL
开源偏好
Oracle
传统企业
达梦数据库 (DM)
信创国产化
Access
遗留系统兼容

不依赖 EF Core 的好处是启动速度快、内存占用低、SQL 行为可预期。对于后台管理系统这个体量的应用来说,轻量 ORM 通常比 EF Core 更合适——不需要复杂的变更追踪、导航属性、级联删除,就是简单的 CRUD 加分页。

图片

约定优于配置的插件架构

Known 的架构是三层结构:核心层 → 插件层 → 宿主层

核心层提供基础能力(实体模型、数据访问、页面组件、权限菜单、工作流引擎);插件层按业务模块组织(系统管理、开发中心、Excel 导入导出、示例模块);宿主层决定运行在 Web、桌面还是移动端。

新增一个业务模块的过程几乎不需要修改任何中心化注册表。框架依赖特性(Attribute)进行自动发现和元数据注册:

[Service]       -> 自动注册依赖注入
[Client]        -> 自动注册客户端代理
[WebApi]        -> 自动生成动态 API 端点
[Menu]          -> 自动生成导航菜单
[Action]        -> 自动注册按钮权限
[Import]        -> 自动注册数据导入器
[Task]          -> 自动注册后台任务
继承 EntityBase  -> 自动注册实体模型
继承 FlowBase    -> 自动注册流程处理类

调用一次 Config.AddModule(assembly) 之后,框架扫描程序集,自动完成所有注册。"约定优于配置"让新增模块变成了纯粹的"写代码、编译、刷新"三步。

图片


图片


全栈 C# 页面构建

Known 的页面开发采用代码式构建(RenderTreeBuilder + 组件模型),而非 Razor 标记。基类体系包括 BasePageBaseTablePage<T>BaseForm<T>BaseTabPageBaseStepPage

页面配置通过 TableModel<T> 和 FormModel 在代码中声明,结合 [Column] 和 [Form] 特性实现元数据驱动。一个带查询、分页、批量操作的列表页面,大概只需要这样:

  • 定义实体类,加 [Column] 标注列标题和宽度
  • 继承 BaseTablePage<T>,配置表格模型
  • 框架自动生成表格、查询栏、分页器、操作按钮

UI 组件库基于 Ant Design Blazor,已内置 70+ 组件:KTable(表格)、KForm(表单)、KUpload(上传)、KChart(ECharts 图表)、KPdfView(PDF 查看器)、KBarcode(条码)、KQRCode(二维码)、KScanner(PDA 扫码)、KConsole(控制台日志)、KTreeTable(树表格)、KTimer(定时器)等。

主题系统支持亮色/暗色切换,通过 CSS 变量控制,框架还新增了 Semi 设计风格模板。

图片

低代码开发中心

Known 内置了一个开发中心(Known.Admin),提供了半低代码的业务模块搭建能力:

  • 在线表单配置

    动态表单设计、多种字段类型、数据绑定、验证规则
  • 在线页面配置

    表格配置、查询条件、列排序/汇总/导出
  • 代码生成

    基于实体自动生成实体类、DTO、服务接口/实现、页面组件、表单组件
  • WebApi 测试

    在线 API 调试、GET/POST、请求历史
  • 流程设计器

    可视化流程设计

页面支持 8 种区块类型:模块、表格、表单、详情、列表、图表、模板、AI。区块参数通过 JSON 持久化到数据库。开发者可以在设计器中拖拽配置一个基本的 CRUD 页面,不需要写任何代码。

工作流引擎与 AI 助手

工作流引擎内置审批流,提供 10 个生命周期钩子(OnCommiting、OnCommited、OnRevoking、OnVerified、OnStopping 等),适合请假、采购、工单、报销等单据审批场景。

AI 智能助手是 Known 的一个有意思的功能。内置三种模型接入方式:

接入方式
说明
OpenAI
云端大模型服务
Ollama
本地部署模型
Extend
自定义第三方/企业内部模型

支持流式输出IAsyncEnumerable<string>),会话持久化到数据库,内置聊天组件(ChatView.razor)可以直接嵌入业务页面。

图片

实体扩展属性:NoSQL 式的灵活性

EntityBase 有一个 Extension JSON 字符串字段,支持在运行时动态添加扩展属性而不需要修改数据库表结构。

entity.SetExtension("customField""some value");
varvalue = entity.GetExtension<string>("customField");

这在业务字段频繁变化、又不想每次加字段都跑一次迁移的场景下非常实用。实体同时具备了关系型数据库的结构化优势和 NoSQL 式的灵活性。

内置系统管理模块

开箱即用是 Known 的一个重要特点。框架自带完整的系统管理模块:

  • 用户管理(CRUD、密码重置、批量导入导出、角色分配)
  • 角色管理(权限分配、角色继承、URL 级别权限检查)
  • 组织机构(树形结构、拖拽调整)
  • 菜单管理(动态菜单、按钮权限、超链接菜单)
  • 数据字典(字典类别、扩展字段、子字典、多语言)
  • 系统日志(操作日志、登录日志、错误日志)
  • 定时任务(Cron 表达式、执行监控、暂停/恢复)
  • 编码规则(业务编码自动生成)
  • 多租户管理

这些模块不是 Demo,而是可以直接用于生产系统的完整功能。

适用场景

Known 适合以下几类团队和项目:

  • C# 为主的全栈团队

    不想学 JavaScript/TypeScript,希望前后端统一用 C#
  • 中后台管理系统

    ERP/OA/CRM/MES/WMS,需要快速交付
  • 平台化 SaaS 后台

    需要多租户、权限分级、动态菜单
  • 低代码/半低代码业务平台

    希望内置开发中心,让业务人员参与页面搭建
  • 需要多端部署的系统

    同一套代码同时运行在 Web 和桌面端

客观评价

优势

  • 真正的全栈 C#,不需要写前端代码
  • 自研轻量 ORM,启动快、内存低、行为可预期
  • 插件架构设计干净,新增模块几乎零配置
  • 内置系统管理 + 开发中心,开箱即用
  • 支持 7 种数据库,含达梦信创方案
  • Apache-2.0 协议,商业友好

需要注意的点

  • Blazor 生态相比 React/Vue 社区规模仍较小,第三方组件需要自己封装
  • 代码式页面构建(RenderTreeBuilder)的学习曲线比 Razor 标记略陡
  • 适合后台管理场景,不适合需要极致图形性能的 C 端产品

整体来看,Known 在国内 .NET 开源生态里是一个定位清晰、完成度高的产品。对于 C# 团队来说,如果目标就是快速交付一套可定制的企业级后台系统,Known 是一个值得认真评估的选择。


项目信息:

  • 官网:https://known.org.cn
  • Gitee:https://gitee.com/known/Known
  • GitHub:https://github.com/known/Known
  • NuGet:Known(当前版本 3.5.5)
  • 协议:Apache-2.0(商业友好)
  • 框架:.NET 8/9/10 + Blazor
  • QQ 社区:865982686


群贤毕至

访客