《.NET应用架构设计:原则、模式与实践》新书博客--试读-1.2 正确理解设计的含义

简介:

1.2  正确理解设计的含义

    虽然我们常常把“架构”和“设计”放在一起,总称为“架构设计”,其实从严格的意义上来说,“架构”和“设计”是两个概念,这里不是故意玩文字的游戏,而是两者的关注点确实是不一样的。
 
1.2.1  设计的重要性
 
    设计主要是指一个思考和求证的过程。在这个思考的过程中,针对某个需要解决的问题,提出一些可行方案,同时给出相应的计划。
 
    一般来说,软件就是用来解决某个问题的,因为这个问题比较大,或者比较复杂,所以往往不得不分解,“分而治之”。大的问题不断被分解,最终成为一个个可以解决的小问题。设计指明了如何解决一个个的问题,并提出了方案和计划,只有这样,才能最后确保整个软件的问题被解决,也才能确保软件按照计划来进行。
 
1.2.2  架构和设计的关系
 
    正如之前所说,架构和设计是两个不同的概念,它们也出现在不同的阶段。当软件系统的架构确定之后,设计就开始了。
 
    架构与系统的业务需求往往是紧密联系的,理论上来说,架构不是很关注系统最后搭建在哪个技术平台上例如:或是J2EE上,或是.NET上),但实际上,很多时候我们在考虑架构创建的同时,也考虑了系统将要运行的技术平台。
 
    设计是与系统的实现相关的。设计将架构所关注的那些高层抽象的需求与具体的技术实现联系起来,从而考虑如何实现系统所需要的稳定性、安全性,甚至是考虑采用哪种模式等。在设计阶段,还要决定在以后开发的过程中应采用哪种实现方法论进行开发例如,是TDD,还是DDD或是BDD
    用一张图来说明架构和设计的相互关系,如图1-5所示
1-5  架构与设计的关系图
    在图1-5中,业务需求是系统架构的决定性因素,软件设计和开发在架构确定之后开始进行,而开发过程又是在设计的基础上进行的。
 
    为了进一步说明架构和设计的关系,加深读者的理解,下面就以一个汽车制造的例子类比阐述之。
 
    汽车厂的机械工程师(可以理解为机车行业的架构师)为一款新型的汽车设计了一个蓝图,我们可以将这个蓝图理解为机械工程师为汽车创建的架构。在这个蓝图中,包含了一些高层抽象的需求:
q  汽车的规格、大小和各个组成部分。
q  汽车引擎的容量。
q  汽车的类型。
q  最大的承载能力。
 
    机械工程师在蓝图中标明了设计和生产汽车所需要的一些环境,同时也包含了一些约束条件,例如生产汽车的预算和时间期限等。但是在蓝图中没有包含设计引擎的细节,也不包含会使用什么样的钢材,使用什么的轮胎等。而这些都将会由汽车设计工程师来决定,这些工程师基于公司现有的生产能力和技术来选择最佳的策略,以确保他们的选择可以实现蓝图的需求。
 
    汽车的生产流水线将会按照汽车工程师的设计和指定的技术来进行,这个过程将包含轧钢选材、选择合适的生产设备组装各个零部件,烘烤油漆,安全测试等。
 
    图1-6把汽车的生产过程和软件开发过程做了个对比映射。
1-6  工业生产与软件开发对比图
    在设计过程中,有时候一个架构蓝图有多个可行的实现方案,而这些方案又各有利弊,那么设计人员必须在满足蓝图需求的前提下,选择尽可能地满足系统相关利益人关注点的方案。如图1-7所示。
1-7  架构蓝图实现
    京东地址: http://book.360buy.com/10893935.html
    卓越地址: http://www.amazon.cn/mn/dp/B006NS2N0S




















本文转自yanyangtian51CTO博客,原文链接:http://blog.51cto.com/yanyangtian/749112  ,如需转载请自行联系原作者


相关文章
|
存储 Shell Linux
快速上手基于 BaGet 的脚本自动化构建 .net 应用打包
本文介绍了如何使用脚本自动化构建 `.net` 应用的 `nuget` 包并推送到指定服务仓库。首先概述了 `BaGet`——一个开源、轻量级且高性能的 `NuGet` 服务器,支持多种存储后端及配置选项。接着详细描述了 `BaGet` 的安装、配置及使用方法,并提供了 `PowerShell` 和 `Bash` 脚本实例,用于自动化推送 `.nupkg` 文件。最后总结了 `BaGet` 的优势及其在实际部署中的便捷性。
779 10
|
8月前
|
存储 缓存
.NET 6中Startup.cs文件注入本地缓存策略与服务生命周期管理实践:AddTransient, AddScoped, AddSingleton。
记住,选择正确的服务生命周期并妥善管理它们是至关重要的,因为它们直接影响你的应用程序的性能和行为。就像一个成功的建筑工地,工具箱如果整理得当,工具选择和使用得当,工地的整体效率将会大大提高。
311 0
|
数据库 开发者
.NET 异步编程之谜:async/await 模式究竟隐藏着怎样的神奇力量?
【8月更文挑战第28天】在当今注重效率和响应性的软件开发领域,.NET 的 async/await 模式如同得力助手,简化异步代码编写,使代码更易理解和维护。通过后台执行耗时操作,如网络请求和数据库查询,避免阻塞主线程,显著提升系统响应性。此模式不仅适用于网络请求,还广泛应用于数据库操作和文件读写。合理使用 async/await 可大幅优化性能,但需注意避免过度使用、正确处理调用链及异常,以确保系统稳定性和高效性。深入探索 async/await,助您构建更出色的应用程序。
169 0
|
C# Android开发 iOS开发
2025年全面的.NET跨平台应用框架推荐
2025年全面的.NET跨平台应用框架推荐
628 23
|
存储 NoSQL MongoDB
.NET MongoDB数据仓储和工作单元模式封装
.NET MongoDB数据仓储和工作单元模式封装
236 15
|
开发框架 JavaScript 前端开发
精选2款.NET开源的博客系统
精选2款.NET开源的博客系统
209 8
|
敏捷开发 缓存 中间件
.NET技术的高效开发模式,涵盖面向对象编程、良好架构设计及高效代码编写与管理三大关键要素
本文深入探讨了.NET技术的高效开发模式,涵盖面向对象编程、良好架构设计及高效代码编写与管理三大关键要素,并通过企业级应用和Web应用开发的实践案例,展示了如何在实际项目中应用这些模式,旨在为开发者提供有益的参考和指导。
153 3
|
开发框架 监控 .NET
【Azure App Service】部署在App Service上的.NET应用内存消耗不能超过2GB的情况分析
x64 dotnet runtime is not installed on the app service by default. Since we had the app service running in x64, it was proxying the request to a 32 bit dotnet process which was throwing an OutOfMemoryException with requests >100MB. It worked on the IaaS servers because we had the x64 runtime install
316 5
|
JSON 算法 安全
JWT Bearer 认证在 .NET Core 中的应用
【10月更文挑战第30天】JWT(JSON Web Token)是一种开放标准,用于在各方之间安全传输信息。它由头部、载荷和签名三部分组成,用于在用户和服务器之间传递声明。JWT Bearer 认证是一种基于令牌的认证方式,客户端在请求头中包含 JWT 令牌,服务器验证令牌的有效性后授权用户访问资源。在 .NET Core 中,通过安装 `Microsoft.AspNetCore.Authentication.JwtBearer` 包并配置认证服务,可以实现 JWT Bearer 认证。具体步骤包括安装 NuGet 包、配置认证服务、启用认证中间件、生成 JWT 令牌以及在控制器中使用认证信息
550 2
|
数据采集 JSON API
.NET 3.5 中 HttpWebRequest 的核心用法及应用
【9月更文挑战第7天】在.NET 3.5环境下,HttpWebRequest 类是处理HTTP请求的一个核心组件,它封装了HTTP协议的细节,使得开发者可以方便地发送HTTP请求并接收响应。本文将详细介绍HttpWebRequest的核心用法及其实战应用。
764 6