EmeaAppGbb/appmodlab-reverse-engineering-legacy-apps-with-spec2cloud
GitHub: EmeaAppGbb/appmodlab-reverse-engineering-legacy-apps-with-spec2cloud
这是一个利用 Spec2Cloud 对 .NET 遗留代码库进行深度逆向工程,以生成系统现代化蓝图的实战演练项目。
Stars: 0 | Forks: 0
# 🕵️ 使用 SPEC2CLOUD 进行逆向工程 🔍
```
██████╗ ███████╗██╗ ██╗███████╗██████╗ ███████╗███████╗
██╔══██╗██╔════╝██║ ██║██╔════╝██╔══██╗██╔════╝██╔════╝
██████╔╝█████╗ ██║ ██║█████╗ ██████╔╝███████╗█████╗
██╔══██╗██╔══╝ ╚██╗ ██╔╝██╔══╝ ██╔══██╗╚════██║██╔══╝
██║ ██║███████╗ ╚████╔╝ ███████╗██║ ██║███████║███████╗
╚═╝ ╚═╝╚══════╝ ╚═══╝ ╚══════╝╚═╝ ╚═╝╚══════╝╚══════╝
███████╗███╗ ██╗ ██████╗ ███████╗███╗ ██╗ ██████╗
██╔════╝████╗ ██║██╔════╝ ██╔════╝████╗ ██║██╔════╝
█████╗ ██╔██╗ ██║██║ ███╗█████╗ ██╔██╗ ██║██║ ███╗
██╔══╝ ██║╚██╗██║██║ ██║██╔══╝ ██║╚██╗██║██║ ██║
███████╗██║ ╚████║╚██████╔╝███████╗██║ ╚████║╚██████╔╝
╚══════╝╚═╝ ╚═══╝ ╚═════╝ ╚══════╝╚═╝ ╚═══╝ ╚═════╝
```
## 🌆 概述
**任务简报** 📡
你已受命调查 **TransFleet Logistics** 应用程序 —— 一个拥有 **数十年** 业务逻辑、技术债务和架构谜团的复杂企业车队管理系统。你的任务是:使用 **Spec2Cloud** 逆向工程这个庞然大物,提取 API 契约,映射数据流,记录业务规则,并创建全面的现代化蓝图。
这不是典型的绿地开发。这是 **数字考古** 🏛️。你将深入探索:
- 🔥 车辆追踪混乱的 **150+ 数据库表**
- 💀 嵌套业务规则的 **1200 行服务类**
- 👻 徘徊在集成层的 **WCF 服务**
- 🧩 随处隐含关系的 **Entity Framework EDMX**
- ⚡ 像多米诺骨牌一样触发的 **Quartz.NET 作业链**
- 📡 广播实时车辆位置的 **SignalR 集线器**
**转折点:** 与表层的分析不同,Spec2Cloud 执行 **深度代码取证**,以提取隐藏的架构、深埋的契约和未记录的业务规则,正是这些让应用程序得以运转。
## 🎯 你将学到什么
**🕵️ 调查技巧**
- ✅ 对复杂企业代码库执行 **深度静态分析**
- ✅ 从遗留 Web API 控制器和 WCF 服务中提取 **API 契约**
- ✅ 从 Entity Framework EDMX 和迁移中逆向工程 **数据模型**
- ✅ 识别并编目嵌入在服务层代码中的 **业务规则**
- ✅ 映射 **集成点** 和外部系统依赖项
- ✅ 生成 **限界上下文映射** 用于微服务边界发现
- ✅ 根据提取的规范创建完整的 **现代化蓝图**
**💡 获得的侦探技能**
- 🔍 用于规范提取的代码模式识别
- 📊 依赖映射和架构可视化
- 🧩 从分散实体重构领域模型
- 🎯 从代码组织识别限界上下文
- 📝 技术债务文档记录和迁移规划
## 🛠️ 前置条件
**🔐 所需安全许可级别**
- 🎓 **C# & .NET 经验** — 你能不依赖解码器阅读 C# 代码
- 🏗️ **企业模式知识** — Repository、Specification、Domain Services 吓不到你
- 🌟 **Spec2Cloud 基础** — 先完成 [Spec2Cloud 简介 Lab](../appmodlab-spec2cloud-intro/)(推荐)
- 💻 **Visual Studio 2022** — 已安装 .NET Framework 4.7.2 支持
- 🐙 **Git & GitHub** — 用于克隆证据并推送你的发现
**🎮 可选增益道具**
- 🧠 对 WCF 服务的理解(遗留集成技术)
- 🗃️ SQL Server 知识(用于架构分析)
- 🚀 Azure 熟悉度(用于理解现代化目标)
## ⚡ 快速开始
**🚨 案件激活序列**
```
# 🔍 步骤 1:Clone the crime scene
git clone https://github.com/EmeaAppGbb/appmodlab-reverse-engineering-legacy-apps-with-spec2cloud.git
cd appmodlab-reverse-engineering-legacy-apps-with-spec2cloud
# 📂 步骤 2:Checkout the legacy branch(原始代码库)
git checkout legacy
# 🔧 步骤 3:在 Visual Studio 中打开 solution
start TransFleet.sln
# 🏗️ 步骤 4:Build 项目(编译证据)
# 在 Visual Studio 中:Build > Build Solution (Ctrl+Shift+B)
# 🎯 步骤 5:启动 investigation mode
gh copilot-cli
# 然后:“让我们用 Spec2Cloud 分析这个 codebase!”
```
**🎬 预期结果:**
你将在本地运行 TransFleet 应用程序,准备好进行深度分析。是时候戴上你的侦探帽了!🎩🔍
## 📁 项目结构
**🗂️ 证物保管室布局**
```
appmodlab-reverse-engineering-legacy-apps-with-spec2cloud/
│
├── 📋 APPMODLAB.md # Complete lab walkthrough & instructions
├── 📖 README.md # You are here! 👋
├── 🔧 .github/workflows/ # CI/CD pipelines for legacy build validation
│
├── 🏛️ TransFleet/ # THE LEGACY APPLICATION (branch: legacy)
│ ├── TransFleet.sln # Main solution file
│ ├── TransFleet.WebApi/ # 25+ API controllers (HTTP endpoints)
│ ├── TransFleet.Core/ # Service layer (1200-line classes 😱)
│ ├── TransFleet.Data/ # EF6 EDMX with 150+ entities
│ ├── TransFleet.WcfServices/ # WCF service contracts (legacy integrations)
│ ├── TransFleet.Jobs/ # Quartz.NET background jobs
│ └── TransFleet.Tests/ # 300+ unit tests (mostly green ✅)
│
├── 📊 SpecAnalysis/ # Spec2Cloud output (branch: solution)
│ ├── architecture-overview.md # Dependency maps & system diagrams
│ ├── api-contracts/ # OpenAPI specs extracted from controllers
│ ├── data-model/ # Reverse-engineered entity relationships
│ ├── business-rules/ # Cataloged business logic
│ ├── integration-specs/ # WCF & external system contracts
│ └── modernization-blueprint/ # Migration recommendations & strategy
│
└── 🎯 BoundedContexts/ # Discovered microservice boundaries
├── VehicleManagement/ # Partial implementation from specs
├── MaintenanceScheduling/ # Spec-driven microservice design
└── ComplianceReporting/ # DOT HOS compliance domain
```
**🌳 分支结构(调查检查点)**
| 分支 | 用途 | Emoji | 状态 |
|--------|---------|-------|--------|
| `main` | 包含文档的完整实验 | ✅ | 最终报告 |
| `legacy` | TransFleet 应用程序(原样) | 🏛️ | 犯罪现场 |
| `solution` | 生成的规范 + 部分实现 | 📊 | 案件侦破 |
| `step-1-static-analysis` | 代码结构分析输出 | 🔬 | 证据 #1 |
| `step-2-api-extraction` | API 契约 & 数据契约 | 📡 | 证据 #2 |
| `step-3-data-modeling` | 来自 EDMX & 迁移的数据模型 | 🗃️ | 证据 #3 |
| `step-4-business-rules` | 提取的业务规则规范 | 📜 | 证据 #4 |
| `step-5-integration-mapping` | WCF & 集成规范 | 🔌 | 证据 #5 |
| `step-6-modernization-blueprint` | 完整的现代化套件 | 🎯 | 最终蓝图 |
## 🏗️ 遗留技术栈
**⚙️ 犯罪现场发现的技术**
TransFleet 应用程序构建于 2010 年代中期的 **经典企业 .NET 技术栈**:
### **🔧 核心技术**
- 💀 .NET Framework 4.7.2 上的 **ASP.NET Web API 2**(不是 .NET Core!)
- 🗄️ 采用 Database-First 方式的 **Entity Framework 6**(到处都是 EDMX 文件)
- 📡 用于远程信息处理设备通信的 **WCF 服务**
- 🐘 **SQL Server 2014**,包含 150+ 个表(有些表有 1 亿多行数据)
### **⚡ 附加组件**
- 🔄 **Hangfire** — 后台作业处理
- 📻 **SignalR** — 实时车辆追踪更新
- 💉 **AutoFac** — 依赖注入容器
- ⏰ **Quartz.NET** — 计划的维护警报
- 📊 **SSRS** — 用于合规报告的 SQL Server Reporting Services
### **🧩 检测到的架构模式**
- 🏛️ 基于 EF6 的 Repository 模式
- 📋 用于业务规则的 Specification 模式
- 🎯 具有复杂编排的 Domain Services
- 🔌 用于外部集成的 Adapter 模式
- 🌐 用于 SignalR 实时消息传递的 Hub 模式
**⚠️ 复杂性因素:**
- 1200 行 `VehicleService.cs`,包含深度嵌套的逻辑 🤯
- 业务规则分散在 60 多个领域实体中
- 200 多个 Entity Framework 迁移(演变历史)
- 硬编码在 `ComplianceService.cs` 中的联邦 DOT 法规
- 带有空间计算的地理围栏规则引擎
## 🎯 目标
**🚀 现代化目的地**
在使用 Spec2Cloud 进行逆向工程后,你将拥有一份完整的 **现代化蓝图** 来指导转型:
### **🌟 未来架构**
- ☁️ Azure Container Apps 上的 **.NET 9 微服务**
- 📊 从遗留代码库分析中发现 **限界上下文**
- 🔌 已提取并优化的 **Clean API 契约**
- 🗃️ 基于逆向工程实体的 **现代数据模型**
- 📜 **已记录的业务规则**,准备重新实现
### **📐 规范输出**
- 🏗️ **架构概览** — 系统图和依赖映射
- 📡 **API 契约** — 所有端点的 OpenAPI 3.0 规范
- 🗄️ **数据模型规范** — 实体关系和架构文档
- 📋 **业务规则目录** — 以可读格式提取的逻辑
- 🔌 **集成规范** — 外部系统契约和协议
- 🎯 **限界上下文映射** — 推荐的微服务边界
- 📝 **迁移蓝图** — 分步现代化策略
**🎓 目标:**
逆向工程规范的质量和完整性 —— 这份蓝图让现代化变得 **可预测、可计划且成功**!🏆
## 🎮 使用 COPILOT CLI 进行实验演练
**🔍 调查阶段**
本实验使用 **GitHub Copilot CLI** 的代理模式来执行逆向工程。你将与 Copilot 交互以分析代码库并提取规范。
### **阶段 1:🕵️ 探索犯罪现场**
```
# EVIDENCE FOUND:理解 domain
@github copilot "Analyze the TransFleet solution structure and summarize the main components"
@github copilot "What business domain does this application serve? List the key workflows"
```
### **阶段 2:🔬 运行静态分析**
```
# INTEL GATHERED:代码结构和 dependencies
@github copilot "Use Spec2Cloud to analyze the code structure and generate a dependency map"
@github copilot "Identify the layers, patterns, and architectural style used in TransFleet"
```
### **阶段 3:📡 提取 API 契约**
```
# MYSTERY SOLVED:API endpoints 已记录
@github copilot "Extract OpenAPI specifications from all Web API controllers"
@github copilot "Document the WCF service contracts in the WcfServices project"
```
### **阶段 4:🗃️ 逆向工程数据模型**
```
# BLUEPRINT ACQUIRED:Database schema 已映射
@github copilot "Analyze the EDMX file and extract entity relationships"
@github copilot "Map the migration history to understand database evolution"
```
### **阶段 5:📜 识别业务规则**
```
# RULES OF ENGAGEMENT:Logic 已编目
@github copilot "Extract business rules from VehicleService, MaintenanceService, and ComplianceService"
@github copilot "Document the DOT Hours of Service compliance calculations"
```
### **阶段 6:🔌 映射集成点**
```
# EXTERNAL CONNECTIONS:Integration specs 已记录
@github copilot "Catalog all WCF service dependencies and external system integrations"
@github copilot "Document the telematics device communication protocol"
```
### **阶段 7:🎯 生成限界上下文**
```
# CONTEXT MAPPING:Microservice boundaries 已发现
@github copilot "Analyze the codebase and suggest bounded context boundaries for microservices"
@github copilot "Group the entities and services into logical domains"
```
### **阶段 8:🧠 审查和优化**
```
# HUMAN INSIGHT:Spec 验证与增强
@github copilot "Review the generated specifications for accuracy and completeness"
@github copilot "Add domain knowledge and correct any misinterpretations in the specs"
```
### **阶段 9:🏆 创建现代化蓝图**
```
# CASE CLOSED:完整的 specification suite 已组装
@github copilot "Generate a comprehensive modernization blueprint with migration recommendations"
@github copilot "Prioritize the bounded contexts for implementation order"
```
**📋 详细说明:**
请参阅 [APPMODLAB.md](./APPMODLAB.md) 获取包含截图、示例输出和故障排除提示的完整分步演练!🚀
## ⏱️ 时长
**🎯 预计调查时间**
- ⚡ **快速扫描:** 3 小时(仅核心分析)
- 🔍 **全面调查:** 5–7 小时(完整规范提取)
- 🏆 **深度挖掘:** 8+ 小时(包含优化和验证)
**⏰ 细分:**
| 阶段 | 时间 | 描述 |
|-------|------|-------------|
| 🕵️ 探索代码库 | 45 分钟 | 构建、运行、理解领域 |
| 🔬 静态分析 | 1 小时 | 依赖映射和架构 |
| 📡 API 提取 | 1.5 小时 | 从控制器和 WCF 生成 OpenAPI 规范 |
| 🗃️ 数据建模 | 1.5 小时 | EDMX 分析和实体关系 |
| 📜 业务规则 | 2 小时 | 服务层逻辑提取 |
| 🔌 集成映射 | 1 小时 | 外部系统文档记录 |
| 🎯 限界上下文 | 1 小时 | 微服务边界发现 |
| 🧠 审查和优化 | 1 小时 | 规范验证和增强 |
| 🏆 蓝图组装 | 30 分钟 | 最终现代化策略 |
**💡 专业提示:** 阶段之间休息一下!这是一场调查马拉松,而不是短跑。你的大脑需要时间来处理架构模式。🧠☕
## 📚 资源
**🔗 情报链接和参考**
### **📖 文档**
- 🌟 [Spec2Cloud 官方文档](https://github.com/Azure-Samples/spec2cloud) — 工具功能和使用方法
- 🎯 [GitHub Copilot CLI 指南](https://docs.github.com/en/copilot/github-copilot-in-the-cli) — 代理模式说明
- 🏗️ [现代化模式](https://learn.microsoft.com/azure/architecture/modernize) — Azure 架构指导
### **🎓 相关实验**
- 🌟 [Spec2Cloud 简介 Lab](../appmodlab-spec2cloud-intro/) — 先学习基础知识!
- 🔄 [遗留到现代化迁移 Lab](../appmodlab-legacy-migration/) — 规范之后的下一步
- ☁️ [Azure Container Apps 部署](../appmodlab-aca-deployment/) — 部署你的微服务
### **🛠️ 工具和技术**
- 💻 [Visual Studio 2022](https://visualstudio.microsoft.com/) — .NET 开发 IDE
- 🐙 [GitHub CLI](https://cli.github.com/) — GitHub Copilot CLI 集成
- 🗃️ [SQL Server Express](https://www.microsoft.com/sql-server/sql-server-downloads) — 用于本地测试的数据库
### **📚 技术深度解析**
- 🏛️ [Entity Framework 6 EDMX](https://learn.microsoft.com/ef/ef6/) — Database-First 建模
- 📡 [WCF 服务](https://learn.microsoft.com/dotnet/framework/wcf/) — 遗留服务技术
- 🎯 [领域驱动设计](https://martinfowler.com/bliki/BoundedContext.html) — 限界上下文解释
- 🔄 [绞杀植物模式](https://martinfowler.com/bliki/StranglerFigApplication.html) — 增量式现代化
### **🎮 社区和支持**
- 💬 [GitHub Discussions](https://github.com/EmeaAppGbb/appmodlabs/discussions) — 提问,分享发现
- 🐛 [报告问题](https://github.com/EmeaAppGbb/appmodlabs/issues) — 发现 Bug?告诉我们!
- 🌟 [贡献](../CONTRIBUTING.md) — 改进此实验以造福他人
## 🎊 最终任务简报
**🔍 这个实验的特别之处?**
这不是一个玩具应用程序。**TransFleet** 是一个具有以下特点的真实企业系统:
- ✅ **真实的复杂性** — 1200 行服务类,150+ 个表,WCF 集成
- ✅ **真实的模式** — Repository、Specification、Domain Services、Adapters
- ✅ **真实的挑战** — 技术债务、分散的业务规则、隐式依赖
- ✅ **真实的价值** — 可直接应用于现代化项目的技能
**🎯 你将获得:**
- 🧠 分析复杂遗留代码库的信心
- 🛠️ 用于逆向工程的 Spec2Cloud 专业知识
- 📊 一份完整的现代化蓝图
- 🚀 用于下一个企业迁移项目的技能
**🕵️ 谜团等待着你……**
TransFleet 代码库包含数十年的业务知识。你的使命:**提取它,记录它,并使其现代化**。
**案件状态:** 🔓 **进行中**
**首席调查员:** **你** 🎯
**目标:** **提取蓝图** 🏆
### 🎮 准备好开始调查了吗?
👉 **[开始实验:打开MODLAB.md](./APPMODLAB.md)** 👈
**🌟 由 EMEA APP GBB 团队用 ❤️ 构建 🌟**
```
╔═══════════════════════════════════════════════════════════╗
║ 🕹️ PRESS START TO BEGIN YOUR INVESTIGATION 🕹️ ║
║ ║
║ 🔍 EVIDENCE GATHERED · 📡 INTEL ANALYZED · 🎯 CASE ║
║ SOLVED WITH SPEC2CLOUD! 🏆 ║
╚═══════════════════════════════════════════════════════════╝
```
标签:Spec2Cloud, SQL, 云资产清单, 云迁移, 代码分析, 企业ERP, 凭证管理, 安全专业人员, 应用现代化, 架构重构, 源代码分析, 系统审计, 软件现代化, 逆向工程, 遗留系统