一起谈.NET技术,用好Visual Studio 2010进行层架构设计

简介:   微软已经把VS 2010(Visual Studio 2010 Ultimate)功能融入到软件应用生命周期管理(ALM)中。在架构设计方面则是通过新的架构层关系图(Architecture Layer Diagram),以图形化的方式描述系统架构,从而使得项目中的技术人员或非技术人员都能以模型透过图形化的方式进行协作与设计,以及定义企业的系统功能。

  微软已经把VS 2010(Visual Studio 2010 Ultimate)功能融入到软件应用生命周期管理(ALM)中。在架构设计方面则是通过新的架构层关系图(Architecture Layer Diagram),以图形化的方式描述系统架构,从而使得项目中的技术人员或非技术人员都能以模型透过图形化的方式进行协作与设计,以及定义企业的系统功能。

  Visual Studio 2010提供针对不同功能层面的分析工具来辅助程序代码进行逆向工程。Layer Diagram可从高阶面来看架构;Architecture Explorer能从特定点切入,只探索我们所关心的部分;.NET Class Diagram则可分析详细部分的Class结构。逆向工程类型可分为静态与动态,静态指的是整个程序代码的静态结构,如组件或类别间的关系;动态则是程序代码执行的顺序,如某个程序代码区段相关方法调用与响应顺序。

  静态的逆向工程,主要有三个工具:Architecture Explorer、Layer Diagram和Class Diagram。Layer Diagram可以让我们以高层角度来分析整个软件结构,细腻程度可以自由选择,从项目、Namespace、Classs、到方法都可以。本文将重点讲述VS2010静态逆向工程(Static Reverse Engineering)在软件架构层关系图设计方面的新功能应用。

  Visual Studio 2010架构层关系图设计

  在现实的项目中,我们需要分析别人的代码,或者约束团队的代码架构。当我们已经对现有程序的基本架构有了初步了解时,则想对现有架构进行进一步的分析并维护代码架构的逻辑。例如,当我们的项目为模型-视图-控制器(MVC,Model View Controller)架构风格创建架构应用的时候,让我们确保它是实际执行的方式。

  (1)创建一个层图(Building a Layer Diagram)

  首先,让我们创建一个新层架构使用菜单(命令为Architecture|New Diagram|Layer Diagram)。创建一个空层图,在图层设计器中可以指定设计(在Toolbox中拖曳元素实现层设计)架构层,可以得到所有我们所确定的形式与基本层,如图1所示。

图1  设计MVC架构层图类的实现

  如上图所示,这是一个典型的软件架构,需要实现物理与逻辑架构图的关联,我们通过拖动相应的执行层与实际类来实现。当放入图层类实现后,我们可以在该系统中用鼠标右键单击设计图面,在弹出的菜单中选择Generate Dependencies(生成依赖)命令,来建立依赖关系。

  一旦完成这一过程,最后将得到一个架构层图。层管理器(Layer Explorer)可以用来看到每一层的内容,以及架构层彼此之间的关系。

  (2)更新实现(Updating Your Implementation)

  在MVC架构模式中,我们不希望看到“Web→Model”层的直接对话模式,这种情况往往发生在团队中其他人编写的代码直接访问了数据层,而不通过合适的业务逻辑(这是一个非常容易犯的错误)。可以通过图层设计器删除依赖线来解决。当删除依赖线后,可以用鼠标右键单击图形,在弹出菜单中选择Validate Architecture(验证架构)命令,如图2所示。

图2  删除错误逻辑

  Visual Studio将分析所有的依赖和任何违反该层图关系的查询。这个错误结果将会出现在错误列表中,如图3所示。 

图3  错误结果列表

  现在,我们可以通过修复自己的代码,重复验证架构体系直到没有违反层关系的代码依赖出现为止。

  (3)执行中生成分层(Enforcing Layering in the Build)

  我们要保持一个干净的架构,并且知道未来将发生的问题,例如,对错误的分析和验证,可以审视到架构代码漂移,执行开发任务时进行对该错误的修复。我们需要一种方法来保持同步(sync)。为了解决这个问题,我们将添加一个新的TFS生成定义,将使用门控签入(Gated Check-in)来执行架构,如图4所示。

图4  设置签入方式

  当使用门控签入后,提交所有更改到TFS中时,必须先通过所有正常的测试(干净的构建、通过测试用例等),现在构建的做法将符合验证步骤,并通过在TFS中的检测来防止更多的风险侵入。

  如果进行全新的代码开发,我们就可以在开始阶段通过层图来进行逻辑设计,并努力执行设计方案,保证开发阶段与设计不偏离,团队人员的代码不漂移出架构。如果从现有的资源框架开始,我们也可以通过Visual Studio 2010的层图功能找到理想的逻辑分析与设计工作方法。一旦我们的物理和逻辑同步,就可以通过自动化(例如门控签入)进行强制执行,避免“漂移”发生。

目录
相关文章
|
7月前
|
API C++ Windows
Visual C++运行库、.NET Framework和DirectX运行库的作用及常见问题解决方案,涵盖MSVCP140.dll丢失、0xc000007b错误等典型故障的修复方法
本文介绍Visual C++运行库、.NET Framework和DirectX运行库的作用及常见问题解决方案,涵盖MSVCP140.dll丢失、0xc000007b错误等典型故障的修复方法,提供官方下载链接与系统修复工具使用指南。
1685 2
|
7月前
|
存储 缓存 安全
某鱼电商接口架构深度剖析:从稳定性到高性能的技术密码
某鱼电商接口架构揭秘:分层解耦、安全加固、性能优化三维设计,实现200ms内响应、故障率低于0.1%。详解三层架构、多引擎存储、异步发布、WebSocket通信与全链路防护,助力开发者突破电商接口“三难”困境。
|
8月前
|
数据采集 监控 JavaScript
移动端性能监控探索:鸿蒙 NEXT 探针架构与技术实现
阿里云 ARMS 团队倾力打造的鸿蒙 NEXT SDK,为鸿蒙应用提供了业界领先的全链路监控解决方案。这不仅仅是一个 SDK,更是您洞察用户体验、优化应用性能的智能伙伴。
870 73
|
7月前
|
人工智能 自然语言处理 安全
AI助教系统:基于大模型与智能体架构的新一代教育技术引擎
AI助教系统融合大语言模型、教育知识图谱、多模态交互与智能体架构,实现精准学情诊断、个性化辅导与主动教学。支持图文语音输入,本地化部署保障隐私,重构“教、学、评、辅”全链路,推动因材施教落地,助力教育数字化转型。(238字)
1213 23
|
7月前
|
监控 Cloud Native 测试技术
.NET技术深度解析:现代企业级开发指南
每日激励:“不要一直责怪过去的自己,他曾经站在雾里也很迷茫”。我是蒋星熠Jaxonic,一名在代码宇宙中探索的极客旅人。从.NET Framework到.NET 8,我深耕跨平台、高性能、云原生开发,践行领域驱动设计与微服务架构,用代码书写技术诗篇。分享架构演进、性能优化与AI融合前沿,助力开发者在二进制星河中逐光前行。关注我,共探技术无限可能!
.NET技术深度解析:现代企业级开发指南
|
7月前
|
Java Linux 虚拟化
【Docker】(1)Docker的概述与架构,手把手带你安装Docker,云原生路上不可缺少的一门技术!
1. Docker简介 1.1 Docker是什么 为什么docker会出现? 假定您在开发一款平台项目,您的开发环境具有特定的配置。其他开发人员身处的环境配置也各有不同。 您正在开发的应用依赖于您当前的配置且还要依赖于某些配置文件。 您的企业还拥有标准化的测试和生产环境,且具有自身的配置和一系列支持文件。 **要求:**希望尽可能多在本地模拟这些环境而不产生重新创建服务器环境的开销 问题: 要如何确保应用能够在这些环境中运行和通过质量检测? 在部署过程中不出现令人头疼的版本、配置问题 无需重新编写代码和进行故障修复
633 2
|
7月前
|
人工智能 API 数据库
Semantic Kernel .NET 架构学习指南
本指南系统解析微软Semantic Kernel .NET架构,涵盖核心组件、设计模式与源码结构,结合实战路径与调试技巧,助你从入门到贡献开源,掌握AI编排开发全栈技能。
742 2
|
8月前
|
Cloud Native API 开发者
Gemini 2.5 Flash 技术拆解:从 MoE 架构到阿里云生态落地指南
2025年9月,谷歌Gemini 2.5 Flash发布,性能提升5%、成本降24%,引发行业关注。其MoE架构、百万上下文与“思考”范式,助力阿里云开发者高效构建云原生应用。本文解析技术内核,结合汽车、物流等案例,提供落地指南与避坑建议,展望大模型与流计算融合前景。
893 6