feat: 初始化NewLife Studio项目,完成基础框架与数据管理模块
何炳宏 authored at 2026-05-26 12:09:09
12.25 KiB
NewLife.Studio
# NewLife.Studio(Avalonia)— NewLife 团队全产品工作室窗口 Spec ## 背景:NewLife 开源团队 [NewLife 开发团队](https://github.com/NewLifeX)(又称"新生命团队")成立于 2002 年,是国内历史最悠久的 .NET 开源社区之一。团队以"学无先后达者为师"为理念,长期维护一套覆盖基础组件、数据中间件、通信协议、物联网、分布式平台的全栈 .NET 生态。 截至 2026 年,NewLife 在 NuGet 上发布了 90+ 个包,累计下载量超 580 万次,产品已成功应用于电力、高校、互联网、电信、交通、物流、工控、医疗、文博等行业。 ### NewLife 项目矩阵一览 | 分类 | 项目 | 年份 | 说明 | |---|---|---|---| | **基础组件** | | | | | | [NewLife.Core](https://github.com/NewLifeX/X) | 2002 | 核心库:日志、配置、缓存、网络、序列化、APM 性能追踪 | | | [NewLife.XCode](https://github.com/NewLifeX/NewLife.XCode) | 2005 | 大数据中间件 / 超级 ORM,单表百亿级,支持 MySQL/SQLite/SqlServer/Oracle/PostgreSQL/TDengine/InfluxDB/达梦/金仓/瀚高/DB2,自动分表、读写分离 | | | [NewLife.Net](https://github.com/NewLifeX/NewLife.Net) | 2005 | 网络库,单机千万级吞吐(2266万 tps),单机百万级连接(400万 Tcp) | | | [NewLife.Remoting](https://github.com/NewLifeX/NewLife.Remoting) | 2011 | RPC/Http 通信框架,高吞吐,物联网设备低开销易接入 | | | [NewLife.Cube](https://github.com/NewLifeX/NewLife.Cube) | 2010 | 魔方快速开发平台,用户权限/SSO/OAuth,单表 100 亿级验证 | | | [NewLife.Agent](https://github.com/NewLifeX/NewLife.Agent) | 2008 | 服务管理组件,安装为 Windows 服务 / Linux systemd 守护进程 | | | [NewLife.Zero](https://github.com/NewLifeX/NewLife.Zero) | 2020 | Zero 零代脚手架,项目模板:Web/WebApi/Service/Worker | | **中间件** | | | | | | [NewLife.Redis](https://github.com/NewLifeX/NewLife.Redis) | 2017 | Redis 客户端,微秒级延迟,百万级吞吐,内置消息队列,日均 80 亿+次调用验证 | | | [NewLife.RocketMQ](https://github.com/NewLifeX/NewLife.RocketMQ) | 2018 | RocketMQ 纯托管客户端,支持 Apache RocketMQ / 阿里云 / 华为云 / 腾讯云,十亿级验证 | | | [NewLife.MQTT](https://github.com/NewLifeX/NewLife.MQTT) | 2019 | MQTT 物联网消息协议,MqttClient / MqttServer,支持阿里云物联网平台 | | | [NewLife.MQ](https://github.com/NewLifeX/NewLife.MQ) | 2016 | 轻量级消息队列,无延迟分发,支持消费组和消息去重 | | | [NewLife.IoT](https://github.com/NewLifeX/NewLife.IoT) | 2022 | IoT 标准库,定义物联网领域的各种通信协议标准规范 | | | [NewLife.Modbus](https://github.com/NewLifeX/NewLife.Modbus) | 2022 | ModbusTcp / ModbusRTU / ModbusASCII 协议实现 | | | [NewLife.LoRa](https://github.com/NewLifeX/NewLife.LoRa) | 2016 | LoRa 协议库 | | **平台产品** | | | | | | [NewLife.Stardust](https://github.com/NewLifeX/NewLife.Stardust) | 2018 | 星尘分布式平台:节点管理/配置中心/注册中心/APM/日志中心/远程发布 | | | AntJob | 2019 | 蚂蚁调度,分布式大数据计算平台(实时/离线),万亿级验证 | | | FIoT | — | 物联网一体化平台 | | | NewLife.ERP | 2021 | 企业 ERP:产品/客户/销售/供应商管理 | ## Why NewLife 团队拥有 20+ 个核心产品与组件,覆盖数据库、缓存、消息队列、物联网协议、分布式平台等领域。当前缺少一个**统一的跨平台桌面工作室窗口**,让开发者 / 运维人员能够在**一个应用中**集中管理和操作这些产品,例如: - 通过 XCode 连接多数据库进行查询、建模、代码生成 - 连接 Redis 实例查看 Key、执行命令、监控性能 - 管理 MQTT 服务端 / 客户端,收发消息、查看 Topic - 管理 MQ / RocketMQ 消息队列,查看消息堆积、消费状态 - 浏览和管理星尘平台中的节点、应用、配置 - 其他 NewLife 组件的一站式操作 目前这些操作分散于命令行、各自的管理后台或第三方工具,缺乏统一入口和一致体验。 ## What Changes - **核心定位变更**:从"数据库管理工具"升级为 **NewLife 全产品工作室窗口** —— 以模块化/插件化架构统一承载 NewLife 生态所有产品的管理能力 - **模块化架构**:Studio 提供主框架(窗口管理、导航、布局、本地存储),各产品以独立 Module/Plugin 形式接入 - **MVP 首期模块**:数据库管理(Data Studio)作为首发模块,覆盖连接管理、元数据浏览、SQL 查询、导入导出、AI 助手 - **扩展点预留**:为 MQTT Studio、MQ Studio、Redis Studio、Stardust Console 等后续模块预留标准接口与 UI 扩展区 - 保留原有技术栈:Avalonia 跨平台 UI + NewLife.Core/NewLife.XCode 为核心依赖 - 保留原有 AI 助手体系,扩展为可感知当前激活模块(后续迭代) ## Impact - Affected specs: 新增模块化架构、Data Studio(原数据库管理)、AI 助手、插件机制、跨平台发布;后续扩展 MQTT Studio、MQ Studio、Redis Studio 等 - Affected code: 新建解决方案;Framework 框架层(Core / Store / AI);Providers 协议提供者层(Data);App Shell 壳层;Modules 模块层(DataStudio);Store(本地配置/加密) ## ADDED Requirements ### Requirement: Modular Studio Architecture 系统 SHALL 采用模块化/插件化架构,Studio Shell 提供主窗口框架,各产品功能以独立 Module 实现。 #### Scenario: Load Modules at Startup - **WHEN** Studio 启动 - **THEN** Shell 加载已注册的 Module 列表,展示导航项,并激活默认 Module #### Scenario: Switch Between Modules - **WHEN** 用户在导航栏切换 Module(如从 Data Studio 切换到 MQ Studio) - **THEN** Shell 切换内容区域,保持当前会话状态,不关闭未激活 Module 的后台连接(由用户显式关闭) ### Requirement: Studio Shell 系统 SHALL 提供统一的 Studio 主窗口(Avalonia),包含导航栏、内容区、状态栏、通用设置入口。 #### Scenario: App Startup - **WHEN** 用户启动应用 - **THEN** 展示 Studio 主窗口(导航栏/内容区/状态栏),无未处理异常导致退出 ### Requirement: Plugin / Module Interface 系统 SHALL 定义 `IStudioModule` 标准接口,第三方或后续模块可通过实现此接口接入 Studio。 #### Scenario: Register a New Module - **WHEN** 开发者新建模块项目,实现 IStudioModule 并注册 - **THEN** Studio 在下次启动时自动发现并加载该模块,无需修改 Shell 代码 --- ## Module 1: Data Studio(数据库管理,MVP 首发) ### Requirement: Connection Management 系统 SHALL 支持管理多数据库连接(SQLite MVP),包括创建、编辑、删除、测试连接、最近使用记录。 #### Scenario: Create SQLite Connection - **WHEN** 用户选择一个 SQLite 数据库文件并保存连接 - **THEN** 连接出现在连接列表中,可被打开并用于后续操作 #### Scenario: Test Connection - **WHEN** 用户点击"测试连接" - **THEN** 系统返回成功/失败与错误原因(如文件不存在、权限不足、文件损坏) ### Requirement: Database Session Handling 系统 SHALL 以"会话"形式管理已打开连接,支持复用并在关闭连接时释放资源。 ### Requirement: Metadata Browsing (SQLite MVP) 系统 SHALL 支持浏览数据库对象元数据,至少包含表、列、主键、索引与外键信息。 #### Scenario: Browse Tables - **WHEN** 用户展开连接对象树 - **THEN** 展示表列表,并可查看单表详情(列名、类型、是否可空、默认值、主键等) ### Requirement: SQL Query (SQLite MVP) 系统 SHALL 提供 SQL 编辑与执行能力,支持展示结果表格、执行耗时、影响行数、以及历史记录。 #### Scenario: Execute SELECT - **WHEN** 用户执行一条 SELECT 语句 - **THEN** 系统展示结果集(受最大行数限制),并展示执行耗时 ### Requirement: Import/Export 系统 SHALL 支持将查询结果或表数据导出为 CSV 与 JSON;导入能力预留扩展点。 #### Scenario: Export CSV - **WHEN** 用户在结果网格上执行"导出 CSV" - **THEN** 系统生成 CSV 文件,编码与分隔符可配置(默认 UTF-8 + 逗号) ### Requirement: Extensibility for Multi-DB 系统 SHALL 采用 Provider/Adapter 架构,便于后续加入 MySQL、SQLServer 等数据库与 XCode 增强能力(实体生成、模型同步)。 --- ## Module N: 后续模块扩展点(非 MVP,架构预留) ### 预留模块:MQTT Studio 操作 MQTT Broker,管理 Topic / Client、收发消息、查看连接状态。基于 NewLife.MQTT。 ### 预留模块:MQ Studio 操作 MQ 消息队列(NewLife.MQ / NewLife.RocketMQ),查看队列状态、消息堆积、消费进度。 ### 预留模块:Redis Studio 连接 Redis 实例,浏览 Key、执行命令、查看内存/命中率等监控指标。基于 NewLife.Redis。 ### 预留模块:Stardust Console 星尘平台控制台视窗,查看节点列表、应用运行状态、配置下发、APM 调用链等。基于 NewLife.Stardust。 ### 预留模块:Modbus Studio Modbus 调试工具,读写寄存器、扫描设备。基于 NewLife.Modbus / NewLife.IoT。 --- ## AI 助手(跨模块共享) ### Requirement: AI Assistant with Tool Calling 系统 SHALL 内置 AI 助手,支持"模型输出工具调用 → 系统执行工具 → 回填结果 → 模型继续推理"的闭环。AI 助手可感知当前激活的 Module,提供上下文相关的帮助。 #### Scenario: AI Analyzes Database - **GIVEN** 当前激活 Data Studio 模块 - **WHEN** 用户提出"分析今日订单" - **THEN** AI 可调用工具:列连接、打开连接、列出表、查看表结构、执行只读查询(带行数限制),最终输出分析汇总 ### Requirement: AI Safety Policy 系统 SHALL 对 AI 调用能力施加安全限制,默认只读并限制数据规模。 #### Scenario: AI Attempts Non-SELECT - **WHEN** AI 请求执行 INSERT/UPDATE/DELETE/DDL - **THEN** 系统拒绝执行并返回可解释的错误信息 #### Scenario: Row Limit Enforcement - **WHEN** AI 或用户执行查询返回大量数据 - **THEN** 系统按配置裁剪到最大行数,并提示已裁剪 --- ## 本地存储与安全 ### Requirement: Local Storage & Secret Handling 系统 SHALL 将连接信息、历史查询、AI 配置、Module 偏好存储在本地;敏感信息(如 API Key、密码)必须被保护(加密或系统凭据库)。 #### Scenario: Persist Connection - **WHEN** 用户保存连接信息 - **THEN** 重启应用后连接仍可用 --- ## MODIFIED Requirements 无(首次引入模块化架构,原数据库管理需求并入 Data Studio 模块)。 ## REMOVED Requirements 无。 ## Notes / Scope ### MVP 范围(v0.1) - Studio Shell(导航栏 + 内容区框架) - Module 接口与加载机制(IStudioModule) - Data Studio 模块:SQLite 连接管理、元数据浏览、SQL 查询、CSV/JSON 导出、AI 助手 - 本地存储(连接、历史、偏好、AI 配置) - 跨平台运行(Windows / Linux / macOS) ### 后续迭代(v0.2+) - Data Studio:MySQL / SQLServer / PostgreSQL 等多数据库支持、实体代码生成、模型同步 - MQTT Studio 模块 - MQ Studio 模块 - Redis Studio 模块 - AI 助手跨模块上下文感知 - 模块市场 / 在线安装 ### 技术约束 - AI Provider 类型(OpenAI 兼容 / Azure / 本地)在实现前需最终确认;本 Spec 要求"可插拔 Provider" - 导入 Excel 不纳入 MVP;避免引入不确定依赖 - 模块间依赖通过 Core 共享类型,禁止模块间直接引用 ### 目录结构约定 ``` src/ ├── Framework/ # 框架层 — 所有模块无条件引用 │ ├── Core/ # IStudioModule, DTOs, StudioServices │ ├── Store/ # 本地持久化 + 加密 │ └── AI/ # AI Provider + Tool Calling ├── Providers/ # 协议提供者层 — 模块按需引用 │ └── Data/ # IDataProvider, IDbSession, SQLite ├── App/ # Shell 壳程序 └── Modules/ # UI 模块 — 实现 IStudioModule └── DataStudio/ # 数据库管理模块 ``` 后续新增 MqttStudio / WebSocketStudio 时在 Providers/ 与 Modules/ 下创建对应目录。