C4 图表查看器和编辑器
- 作者
- C4 图表查看器和编辑器
系列: UML and Software Architecture
C4 图示查看器与编辑器:MassiveDiag Playground
在 MassiveDiag 中使用 C4 模型图示
MassiveDiag Playground 提供强大的 C4 图示查看器与编辑器,可将基于文本的图示代码实时转换为专业的系统架构可视化图。作为一款出色的 C4 模型实时编辑器,它让你在开发过程中即时查看和优化软件架构图。
无论你需要:
- C4 图示代码转 SVG 用于网页文档,
- C4 图示代码导出为 Word 文档 用于技术规范,
- C4 模型代码转 PNG 用于演示,
- C4 模型转 PDF 用于正式文档,
MassiveDiag Playground 都能轻松满足,带来流畅的工作流程。
什么是 C4 模型?
C4 模型 是由 Simon Brown 提出的一种分层软件架构可视化方法。它通过四个层级的图示,为软件系统文档提供标准化表达方式:
- 上下文图(Context) - 展示系统与外部交互的整体视角
- 容器图(Container) - 展示系统的主要技术架构
- 组件图(Component) - 展示容器内部的逻辑组件
- 代码图(Code) - 展示实现细节(可选)
MassiveDiag 是功能强大的 C4 模型代码图示生成器,让开发者与架构师更容易掌握架构可视化。
C4 图示代码入门
上下文图示例
@startuml
!include https://raw.githubusercontent.com/plantuml-stdlib/C4-PlantUML/master/C4_Context.puml
title Internet Banking System 的系统上下文图
Person(customer, "银行客户", "银行拥有个人账户的客户。")
System(banking_system, "网上银行系统", "允许客户查看账户信息并进行付款。")
System_Ext(mail_system, "邮件系统", "内部 Microsoft Exchange 邮件系统。")
System_Ext(mainframe, "主机银行系统", "存储客户、账户、交易等核心银行信息。")
Rel(customer, banking_system, "使用")
Rel(banking_system, mail_system, "发送邮件")
Rel(banking_system, mainframe, "使用")
@enduml
容器图示例
@startuml
!include https://raw.githubusercontent.com/plantuml-stdlib/C4-PlantUML/master/C4_Container.puml
title Internet Banking System 的容器图
Person(customer, "银行客户", "银行拥有个人账户的客户。")
System_Boundary(c1, "网上银行系统") {
Container(web_app, "Web 应用", "Java 和 Spring MVC", "提供静态内容和单页应用。")
Container(spa, "单页应用", "JavaScript 和 Angular", "为客户提供所有网银功能。")
Container(mobile_app, "移动应用", "Xamarin", "为客户提供部分网银功能。")
Container(api, "API 应用", "Java 和 Spring MVC", "通过 JSON/HTTPS API 提供功能。")
Container(database, "数据库", "Oracle", "存储用户信息、认证数据、访问日志等。")
}
System_Ext(mainframe, "主机银行系统", "存储客户、账户、交易等核心银行信息。")
System_Ext(email, "邮件系统", "内部 Microsoft Exchange 邮件系统。")
Rel(customer, web_app, "使用", "HTTPS")
Rel(customer, spa, "使用", "HTTPS")
Rel(customer, mobile_app, "使用")
Rel(web_app, spa, "传递到浏览器")
Rel(spa, api, "调用 API", "JSON/HTTPS")
Rel(mobile_app, api, "调用 API", "JSON/HTTPS")
Rel(api, database, "读写", "JDBC")
Rel(api, mainframe, "调用 API", "XML/HTTPS")
Rel(api, email, "发送邮件")
@enduml
如何使用 MassiveDiag 查看 C4 图示
1. 编写或生成 C4 模型代码
你可以自己编写 C4 模型代码,也可以借助 AI 工具如 ChatGPT 生成基础结构。
@startuml Basic Sample
!include https://raw.githubusercontent.com/plantuml-stdlib/C4-PlantUML/master/C4_Container.puml
Person(admin, "管理员", $sprite="person2", $link="https://github.com/plantuml-stdlib/C4-PlantUML/blob/master/LayoutOptions.md#hide_person_sprite-or-show_person_spritesprite")
System_Boundary(c1, "示例系统", $link="https://github.com/plantuml-stdlib/C4-PlantUML") {
Container(web_app, "Web 应用", "C#, ASP.NET Core 2.1 MVC", $descr="对比多个 Twitter 时间线", $link="https://github.com/plantuml-stdlib/C4-PlantUML/blob/master/LayoutOptions.md")
}
System(twitter, "Twitter", $link="https://github.com/plantuml-stdlib/C4-PlantUML")
Rel(admin, web_app, "使用", "HTTPS", $link="https://plantuml.com/link")
Rel(web_app, twitter, "获取推文", "HTTPS", $link="https://plantuml.com/link")
@enduml
2. 将代码粘贴到 MassiveDiag Playground
前往 MassiveDiag Playground —— 无需安装,无需注册,直接粘贴或上传你的代码。
3. 选择 C4 图示类型
系统会自动识别图示类型,也可以手动选择 “C4 PlantUML”。
4. 创建图示
点击 “Create Diagram” 即可将代码转化为可视化图示。
5. 编辑与优化
使用双栏界面可:
- 实时编辑代码并预览图示更新
- 直接在 SVG 图中进行可视化调整
6. 导出你需要的格式
支持多种导出选项:
- SVG:适合网页使用
- PNG:适合演示文稿
- PDF:适合正式文档
- Word 文档:适合技术规范
- React JSX:适合网页组件集成
C4 图示的实际应用场景
软件架构文档
C4 图示可用于不同层次的系统设计文档:
- 上下文图:供非技术干系人了解系统
- 容器图:供开发团队把握结构
- 组件图:用于开发实施阶段的规划
技术规格说明
为以下文档生成架构图:
- 系统提案书
- 架构决策记录(ADR)
- 技术需求文档
团队培训与知识传递
通过视觉化系统总览,帮助新成员快速了解:
- 系统边界与交互方式
- 技术栈组成
- 各组件的功能职责
关于 C4 图示与 MassiveDiag 的常见问题
C4 有何区别于其他图示方法?
C4 提供 标准化、分层级的架构建模方式,帮助不同角色理解系统架构。
使用 C4 图示查看器是否需要编程经验?
具备基础的代码语法知识有帮助,但并非必需。
可以协作编辑 C4 图示吗?
当然可以,你可以 分享图示代码 或 导出图像文档 供团队审阅。
如何将 C4 图示集成到我的文档中?
- 导出为 SVG/PNG 用于网页或演示
- 导出为 PDF/Word 用于正式文档