引言
在现代软件架构中,高层业务需求与底层代码实现之间的差距往往是项目失败的关键所在。利益相关者需要上下文,开发人员需要结构,而架构师需要一种共享的语言。C4 模型 (上下文、容器、组件与代码已成为在不同抽象层级上可视化软件架构的行业标准。
本指南专门聚焦于容器图——C4 模型的第二个层级——并以“互联网银行系统”作为实际案例进行研究。我们将探讨如何利用Visual Paradigm,的AI 聊天机器人以及VPasCode脚本语言来高效地创建、维护和演进这些图表。通过将 AI 驱动的辅助与基础设施即代码(Infrastructure-as-Code)原则相结合,团队可以将静态图表转化为动态演进的架构文档。

核心概念:C4 容器层级
在 C4 模型中,容器代表一个应用程序或数据存储。它是一个运行时边界,封装了行为和技术选型。基于提供的互联网银行系统图表,以下是核心概念:
1. 容器与组件的区别
切勿将 C4 容器与 Docker 容器或 UML 组件混淆。在本图表中:
-
用户界面(单页应用):在浏览器中运行的 JavaScript 单页应用。
-
后端(API 应用):一个处理业务逻辑的 Java/Spring Boot 服务。
-
对账存储与数据库:专用的
容器数据库分别代表 NoSQL 和关系型数据库技术的元素。
2. 关系与协议
C4 图中的箭头必须同时标注意图和技术。所提供的图表很好地体现了这一最佳实践:
-
Rel(ui, backend, "发送 JSON/HTTPS API 请求", "JSON/HTTPS")清晰地定义了契约。 -
Rel(backend, coreBanking, "调用 API...", "XML/HTTPS")突出了遗留系统的集成模式。 -
Rel(ses, customer, "发送电子邮件...", "电子邮件")展示了异步出站通信。
3. 系统边界
该Container_Boundary(system, "互联网银行系统")将内部容器与外部系统(System_Ext)区分开来。这种视觉上的区分能立即让读者了解团队拥有哪些部分以及依赖哪些外部系统(例如 AWS SES、核心银行系统)。
工具协同效应:Visual Paradigm + AI 聊天机器人 + VPasCode
手动创建和维护 C4 图容易出错。Visual Paradigm(VP)、AI 聊天机器人与 VPasCode 的结合创造了一个强大的工作流。

为何使用此技术栈?
| 工具 | 角色 | 在 C4 建模中的优势 |
|---|---|---|
| Visual Paradigm | 建模平台 | 原生支持 C4、企业级仓库、多格式导出以及与需求的可追溯性。 |
| AI 聊天机器人 | 智能助手 | 根据自然语言生成 VPasCode,验证 C4 语法,建议缺失的关系,并解释架构决策。 |
| VPasCode | 脚本语言 | 基于文本的图表定义(类似于 PlantUML),支持版本控制,可实现 CI/CD 集成,并支持批量编辑。 |
工具之间的关系
这些工具形成了一个反馈循环:
-
AI 聊天机器人充当人类意图与机器可读的 VPasCode 之间的翻译器。
-
VPasCode作为单一事实来源,与应用程序代码一同存储在 Git 中。

-
Visual Paradigm将 VPasCode 渲染为交互式图表,为其添加元数据,并发布给相关方。
当您更新 VPasCode(手动或通过 AI)时,Visual Paradigm 会自动刷新图表。当您要求 AI“添加缓存层”时,它会直接修改 VPasCode,同时保留布局指令,例如LAYOUT_TOP_DOWN().
实际示例:网上银行系统
以下是网上银行系统容器图的完整 VPasCode 源代码。此代码展示了在 Visual Paradigm 生态系统中正确使用 C4-PlantUML 标准库的方法。

@startuml
!include https://raw.githubusercontent.com/plantuml-stdlib/C4-PlantUML/master/C4_Container.puml
skinparam vpDiagramType C4modelContainerDiagram
LAYOUT_TOP_DOWN()
LAYOUT_WITH_LEGEND()
title 网上银行系统 - 容器图
Person(customer, "个人银行客户", "使用该系统查看账户余额和进行支付操作的银行客户。")
Container_Boundary(system, "网上银行系统") {
Container(staticContent, "静态内容", "HTML, CSS, JavaScript", "向客户的 Web 浏览器提供 HTML、CSS 和 JavaScript 文件。)
Container(ui, "UI(单页应用)", "JavaScript", "在客户浏览器中运行的基于 JavaScript 的 Web 应用程序。提供网上银行界面并向后端发起 API 请求。)
Container(backend, "后端(API 应用)", "Java, Spring Boot", "通过 JSON/HTTPS API 提供网上银行功能。处理业务逻辑、协调请求,并与数据存储和外部系统通信。)
ContainerDb(statementStore, "对账单存储", "NoSQL 数据库", "存储以 PDF 文件形式呈现的银行账户对账单。后端从中读取和写入数据。)
ContainerDb(database, "数据库", "RDBMS", "存储用户账户信息、访问日志和其他结构化数据。后端从中读取和写入数据。)
}
System_Ext(ses, "Amazon Web Services 简单邮件服务 (SES)", "后端用于向客户发送电子邮件的云邮件服务提供商。)
System_Ext(coreBanking, "核心银行系统", "一个外部的单体软件系统,处理客户账户、交易管理和账簿余额等核心银行功能。)
Rel(customer, staticContent, "将静态内容加载到浏览器")
Rel(staticContent, ui, "将 UI 交付给浏览器")
Rel(customer, ui, "与 UI 交互以查看余额和进行支付", "HTTPS")
Rel(ui, backend, "发送 JSON/HTTPS API 请求", "JSON/HTTPS")
Rel(backend, statementStore, "读取和写入", "PDF")
Rel(backend, database, "读取和写入", "SQL")
Rel(backend, coreBanking, "调用 API 处理核心交易", "XML/HTTPS")
Rel(backend, ses, "发送事务性电子邮件", "HTTPS")
Rel(ses, customer, "向客户递送电子邮件", "电子邮件")
@enduml 利用 AI 聊天机器人处理此图表
无需手动编写上述代码,您可以使用Visual Paradigm AI 聊天机器人,并配合如下提示词:
“为网上银行系统生成一个 C4 容器图。包含一个客户、一个基于 JavaScript 的单页应用前端、一个 Spring Boot 后端、一个用于账户的 RDBMS、一个用于 PDF 对账单的 NoSQL 存储、一个用于电子邮件的 AWS SES,以及一个通过 XML/HTTPS 连接的外部核心银行系统。”
AI 将生成语法正确的VPasCode,然后将其粘贴到 Visual Paradigm 中。对于现有图表,您可以询问:
“审查此容器图。是否存在缺失的安全边界或未标记的协议?”
这将使架构师的角色从 绘制转变为 验证与优化.
容器图最佳实践
-
始终明确技术:切勿仅写“数据库”。应写“PostgreSQL 15”或“MongoDB Atlas”。技术选择直接影响部署与运维考量。
-
为每条箭头添加标签:未标记的箭头含义模糊。请使用以下格式:
"描述", "技术/协议". -
使用布局指令:
LAYOUT_TOP_DOWN()和LAYOUT_WITH_LEGEND()以确保团队成员图表的一致性。 -
对您的 VPasCode 进行版本控制:将图表视为代码。使用拉取请求来审查架构变更。
-
将容器保持在运行时边界内:如果两个模块一起部署并共享进程,它们可能属于同一个容器。如果它们独立扩展,则应为不同的容器。
结论
“C4 容器图”是连接业务上下文与技术实现的关键工件。通过采用 Visual Paradigm作为您的建模平台,VPasCode 作为您的版本控制源格式,以及 AI 聊天机器人 作为您的智能协作者,您将架构文档从过时的交付物转变为动态、协作的资产。
互联网银行系统示例清晰地展示了该方法如何简洁地捕捉复杂的集成——从单页应用(SPA)到遗留核心银行系统——同时保持对工程师和利益相关者的可读性。采用此工具链,可确保您的架构不仅设计精良,而且沟通顺畅、维护良好,并始终与不断演进的系统保持一致。











