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, 凭证管理, 安全专业人员, 应用现代化, 架构重构, 源代码分析, 系统审计, 软件现代化, 逆向工程, 遗留系统