v4.0 · 开发中 开发阶段,接口随时会动

一份 Schema, 长出一整套后台。

Known 是基于 Blazor 的元数据驱动全栈框架:120+ 组件、运行时 Schema 渲染、审批流引擎、 报表、系统管理与权限、整包插件懒加载与内建智能体,同一份 .razor 跑在 Server、WebAssembly 和桌面宿主上。 默认路径下你不写一行前端代码,也不生成任何页面文件。

看路线图
Apache-2.0 开源 零第三方 UI 依赖 .NET 10 · Blazor RCL
{
  "key": "order",
  "name": "订单",
  "fields": [
    { "name": "code",   "label": "单号", "type": "string" },
    { "name": "amount", "label": "金额", "type": "decimal",
      "sum": true },
    { "name": "customer", "label": "客户", "type": "ref",
      "ref": "customer" }
  ],
  "menu": { "parent": "business", "icon": "file-text" }
}
<Table TItem="Order" Items="rows" Selectable="true">
    <Column TItem="Order" Title="单号" Field="Code" />
    <Column TItem="Order" Title="客户" Field="Customer" />
    <Column TItem="Order" Title="金额" Field="Amount"
            Align="right" />
    <RowActions>
        <Button Kind="link" Text="编辑"
                OnClick="() => Edit(context)" />
    </RowActions>
</Table>
[Service]
public class MyAgent : IAgentService
{
    // 框架只定契约,不绑厂商、不碰密钥
    public async Task<AgentReply> AskAsync(
        AgentRequest req, CancellationToken ct)
    {
        var text = await llm.CompleteAsync(req.Messages, ct);
        return AgentReply.Text(text);
    }
}
120+开箱即用组件
9组件分类
3运行宿主同源
0第三方 UI 依赖
为什么要用它

重复的活,框架干完;复杂的事,留给你

增删改查、权限菜单、主题国际化、弹窗提示这些每套后台都要重写一遍的东西,框架里已经是现成的。

运行时 Schema 渲染

一份 *.schema.json 描述实体、页面与菜单,框架在运行时直接渲染成能用的页面,并做非破坏性建表。不生成任何 .razor。

零手写页面非破坏性建表

内建智能体

顶栏自带对话抽屉:气泡、技能条、页面上下文、附件、语音、流式与会话都在壳子里。框架只定契约,不绑任何模型厂商。

IAgentService流式多模型

120+ 组件,9 大分类

布局、基础、表单、数据、反馈、媒体、设备、页面与 AI 组件,统一继承 BaseComponent,Class / Style / Disabled 一致。

主题化无三方依赖

插件式模块

Config.AddModule<T>() 扫描程序集,把整个业务模块的页面、菜单、服务、实体自动接进框架,按领域水平切分。

按需加载

一份接口 = 前后端契约

ServiceProxy 让客户端直接消费与 [WebApi] 服务端接口同签名的接口,不用手写 HttpClient 样板。

ServiceProxy强类型

主题与国际化

明暗双主题、CSS 令牌驱动、切换不闪;文案走 LocalService 词条化,框架自带中英词典。

i18n暗色模式

整包插件懒加载

一个插件一个工程:浏览器首屏只下核心壳、进菜单时按需下载整包,页面 @inject 的 [WebApi] 服务由包壳现场兜底、页面代码一字不改。Server / 桌面等价 eager、零回归。

按需加载零改页面

审批流引擎

可视化流程 + 运行时引擎:会签 / 或签、并行网关扇出汇聚、子流程派生唤醒、节点钩子与真实通知投递,单据按状态流转。

会签/或签并行网关子流程

报表 · 套打

数据集 → 可视化向导拖拽成图;透视 / 图表 / 套打画布所见即所得,一键导出 Excel 与打印。

透视图表套打导出

系统管理与权限

账号 / 角色 / 组织架构 / 数据字典 / 个人中心开箱即用;菜单即权限,还能细到列级与按钮级显隐,改角色即刻生效。

八页后台列级权限
不只是前端

前端只是壳,后端那一半也在框里

登录、角色、菜单权限、接口契约、在线会话 —— 服务端不是留给你自己接的,AddKnownCore() 加 UseKnown() 两句就装好。

  • Cookie 登录 + 角色授权

    AddKnownCore() 一句话装好 Cookie 认证与授权管线,IAuthProvider 可换成你自己的用户体系。

  • 接口即契约,实现另起

    [WebApi] 标接口、[Service] 标实现,框架把接口方法映射成 HTTP 端点;客户端拿同一份接口直接调(ServiceProxy),一份契约两端复用。

  • 菜单即权限

    [Menu("订单管理", Roles = "管理员,财务")] 写清谁能看见:侧栏按登录人装配,直接敲 URL 也会被页面守卫挡回首页;还能细到列级与按钮级显隐(Perm / HideColumns)。

  • 在线会话与强制下线

    登录用户的 SessionId 随认证 Cookie 走,在线名单、吊销门禁与心跳同源,踢下线立即生效。

[WebApi]
public interface IOrderService
{
    Task<PagingResult<Order>> QueryAsync(PagingCriteria c);
    Task<Result> SaveAsync(Order info);
}
[Service]
public class OrderService(Database db) : IOrderService
{
    public Task<PagingResult<Order>> QueryAsync(PagingCriteria c)
        => db.QueryPageAsync<Order>(c);

    public Task<Result> SaveAsync(Order info)
        => db.SaveAsync(info);
}
// Program.cs:后端骨架只有这两句
builder.Services.AddKnownCore();   // Cookie 认证 + 授权

var app = builder.Build();
app.UseKnown();   // 把所有 [WebApi] 映射成真实端点

// 菜单即权限:Roles 决定谁能看见这一项
[Menu("订单管理", Icon = "file-text",
      Roles = "管理员,财务")]
跑在哪

同一份代码,三种宿主随便挑

业务代码、组件、Schema 全都不用改,换一个启动项目就换一种交付形态。

看源码

Blazor Server

内网系统首选:免下载、秒开、数据库就在身边。

WebAssembly

纯静态发布,扔到 CDN 就能跑,PWA 可离线。

WinForms 桌面

同一套页面内嵌进桌面壳,接串口、接相机、接打印机。

快速开始

三步,把后台跑起来

纯 Razor 类库,不需要额外的 NuGet 源,也没有 node 构建链。

装包

引入 NuGet 包,或在解决方案里直接引用工程。

dotnet add package Known

注册服务

核心服务、鉴权与菜单提供者一次装配完成。

builder.Services.AddKnown(o => o.Id = "MyApp");

引一次静态资源

样式与主题能力全在这里,不用手工拷贝。

_content/Known/css/web.css

先跑起来,再决定要不要全用

框架可以只当一个组件库用,也可以一路走到 Schema 驱动、智能体接管建模。中间任何一步停下来都不亏。

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