认识 Known

Known 是什么、能帮你做什么、需要哪些前置知识,以及开源仓库几个项目怎么分工。

最后更新

Known 是基于 Blazor 原生能力构建的 Razor 类库 + 应用框架:同一份 razor 代码能跑成浏览器、桌面或一体服务;112 个组件全部自研、零外部 UI 库依赖;启动装配只需一次调用就把组件、模块、菜单、数据层、鉴权全部串起来。

它想解决什么问题

做后台管理系统、工业现场终端、内部工具的同学都会碰到同一堆重复劳动:登录、菜单、表格分页、表单校验、主题切换、多语言、深浅色、离线部署、桌面打包。传统做法要么"框架 + 一堆第三方 UI + 一堆 npm 包"的组合,要么每个项目从头攒一遍。Known 把这一整套沉到框架里,让业务代码只写差异。

能力全景

Known 的公开面大致分成七块,每一块都对应文档里的一节:

  • 组件库(112 个):基础、布局、表单、数据展示、反馈、媒体、设备、页面、AI 九大类,都继承同一个 BaseComponent。见组件通用约定与顶级菜单 组件。
  • 应用装配:AddKnown / AddKnownClient / AddKnownWeb / AddKnownDesktop 四个入口,加上你业务插件里自封装的 AddMyApp(AppType)。见应用装配。
  • 模块与插件式装配:Config.AddModule<T>() 一次反射扫 [WebApi] [Service] [Menu] [AppMenu] [Table],把整个程序集接进路由与元模型。见模块与插件式装配。
  • 前后端契约:一份 [WebApi] 接口,客户端 ServiceProxy<T> 发 HTTP,服务端 AddKnownWeb 摊成 Minimal API 端点;桌面 AddKnownDesktop 直接绑本地实现。见前后端契约。
  • 数据层:Database + DatabaseOption 提供 ADO.NET 抽象与八种方言(SQLite / SQL Server / MySQL / PostgreSQL / Oracle / DM / Access),不锁 ORM、可自己接 EF/Dapper。见数据层与 Database 契约。
  • 鉴权与身份:IAuthProvider 统一"当前用户 + 菜单/Tab/顶栏显隐",Cookie 面向人、Bearer 面向机器两条路线。见鉴权与身份。
  • 运行时 Schema 渲染(默认路径,预览):一份 *.schema.json 描述实体(含 enum 下拉、ref 外键、children 一对多子表)+ 页面(blocks 所见即所发区块树,或 views + layout 声明式)+ menu 导航树,SchemaRegistry 在运行时直接把它渲染成能用的页面、非破坏性建表、/runtime/{Key} 先页后实体分派、侧栏自动装配——不生成任何 .razor,你要写的只剩后端 [Hook] 钩子。当某页确实要脱离 Schema、把代码拿到手长期维护时,再走可选的代码生成 Eject。见运行时 Schema 渲染。

另外框架自带主题与深浅色、多语言、密度、控件强调色、PWA 与桌面宿主等横切能力。想让 Claude / QoderWork 等 AI 编码智能体按上面这些约定直接帮你写出能编译的 Known 代码,可装上随文档站发布的 AI 智能体技能(Agent Skill)。

前置知识

Known 面向已经会 C# + Blazor 基础的开发者:

  • C# 泛型、异步 Task、扩展方法、特性(Attribute)。
  • Blazor 组件、@page 路由、[Parameter] / [Inject] / EventCallback。
  • Razor 语法与 .razor 文件的组织方式。

如果你只会前端框架(Vue/React)而不熟 Blazor,先照着 五分钟跑起来 跑一遍——Known 的抽象层足够薄,跟着样例抄一遍比啃文档更快。

开源仓库分工

Apache-2.0 授权,仓库在 gitee.com/known/Known。目录一眼看懂:

项目 角色 一句话说明
Known 核心 RCL Razor 类库:组件、装配入口、数据层、鉴权、本地化、图标、App.razor。所有其它工程都引用它
KnownApp 业务插件示例 一个"订单 + 组件示例"的示范应用;AppConfig.cs 里的 AddKnownApp(AppType) 演示"业务插件自封装装配入口"的推荐写法
KnownWasm 纯前端宿主 Microsoft.NET.Sdk.BlazorWebAssembly,只出静态站;接口打外部 API
KnownWeb 全栈一体宿主 Microsoft.NET.Sdk.Web,同进程 serve WASM 客户端 + 挂 [WebApi] 端点 + Cookie 鉴权 + SQLite
KnownWin 桌面宿主 Microsoft.NET.Sdk.Razor + WinForms BlazorWebView,接口进程内直调,本地 SQLite
Known.Cli / Known.CodeGen 命令行脚手架 项目初始化与代码骨架生成;用 known new 一键建项目,见五分钟跑起来
Known.Demo 在线示例 组件 菜单里每页"能改能跑"卡片背后的示例集

你将学到

跟着这套文档走完,你会知道:

  1. 怎么把 Known 装进任意 Blazor 项目 —— 五分钟跑起来
  2. 一个刚跑起来的 Known 项目长什么样、每个目录谁负责什么 —— 项目结构导览
  3. 三种运行形态(WASM / Server / Hybrid)分别怎么选、怎么装 —— 三种运行形态
  4. 组件的通用参数、Value / ValueChanged 双向绑定、UIService 全局消息 —— 组件通用约定
  5. 一个业务模块(页面 + 服务 + 数据 + 菜单)怎么被一次反射扫进路由 —— 模块与插件式装配
  6. 标准 CRUD 如何一行页面代码都不写——一份 JSON Schema 换来页面、菜单、建表与增删改查,你只写后端钩子 —— 运行时 Schema 渲染
  7. 前后端接口怎么只写一份就同时充当 HTTP 契约与进程内直调 —— 前后端契约
  8. 数据库怎么挂进 DI、Database 提供哪些方法、Result / PagingResult 长什么样 —— 数据层与 Database 契约

许可与社区

框架 Apache-2.0,永久无功能墙。另有一条独立闭源的产品化服务线(托管运营、团队协作、SSO 等配套)与本仓库平行,代码不共享。Bug / 建议:Gitee Issue / PR;产品问题:联系我们。

下一步

先看一屏能背下来的东西:五分钟跑起来——把 Known 装进任意 Blazor 项目、跑通第一个页面。

微信公众号二维码 扫码关注公众号
QQ 交流群二维码 扫码加入 QQ 群