博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
《.NET应用架构设计:原则、模式与实践》新书博客--试读-1.1-正确认识软件架构...
阅读量:6587 次
发布时间:2019-06-24

本文共 1415 字,大约阅读时间需要 4 分钟。

第1部分  架构与设计的原则和模式

第1章        架构与设计的流程和核心概念

    很多的开发人员(不管其处于那个阶层)对架构设计特别着迷,甚至达到了痴迷和神往的地步。不过,学习编程相对而言可能是一件比较容易的事情(只要有好的学习态度和编程习惯,然后掌握一定的技术,很快就可以成为一个比较出色的开发人员),若要想练就架构设计的能力却不是那么容易。
 
    架构,近似于艺术,有着对美的要求和对完美的追求,但它又和艺术不一样,比如:架构设计可以在软件中实实在在的体现出来,一个合适的架构会让系统有很好的灵活性和伸缩性,并且会使软件开发有良性循环;相反,一个不合适的架构则很容易导致软件在变化的需求中崩溃,甚至会让开发进入“死亡行军”的状况中。就因为如此,架构才会显得如此神秘,同时又让人难舍对它的追求。
 
    本书将会和大家一起探讨有关架构的话题,不过,架构相关内容覆盖面很广,想要通过一本书就把它讲清楚几乎是不可能的,本书以实践角度出发,着重讲述了架构设计中可以采用的原则和模式,以及一些思想方面,希望在大家的架构之路上能够献上一点绵薄之力。
 
    本章是全书中理论最多的一章,主要是希望大家对架构师、架构设计有一定的了解,为理解后续的章节打下基础。
 

1.1  正确认识软件架构

    不同的人对架构有着不一样的理解。无论是在建筑行业、软件行业,还是在网络或书本上,“架构”一词有着各种各样的解释。在编程的世界中,很多对架构的解释都是从技术的层面来定义的,而且在不同的技术或平台上面,对架构的定义又不太一样,甚至有些定义和理解失去了其原本的核心意思,这就使得部分架构学习者感到迷茫。
 
    如果认为“架构”是一个简单的实体,能够用一份文档或一张图纸来描述,那么你就错了。确实,架构师在为系统创建架构时经常要做出很多与设计相关的决定,而且会以用文档的形式记录下来,但是架构和文档又不是等同的,之所以要以文档的形式保存,主要是为了便于以后对这些设计决定进行审核和修改,并且将其作为构建软件时的约束和指导。
 

1.1.1 什么是架构

    首先,让我们来看看架构的一个定义:
    软件架构是对系统的高层视角,或者是对系统的抽象。它关注的是某些对完成这个系统有着最大帮助的方面,例如:可用性、稳定性,以及灵活性。同时,架构对如何达到这些目的给出了指导和约束。
 
    如果要用最简单的方式来理解上面的定义,可以这样说:软件架构就是软件系统的一张蓝图。
 
    下面我们用一个比较浅显的类比来说明这个“蓝图”的含义。
    相信大家对冶金行业中的“浇筑”或多或少有一些了解。浇筑就是把液体材料倒在一个有着特定形状的沙模中,然后等液体冷却之后得到想要的产品或特定形状材料的过程。在这个过程中,盛放液体的沙模引导着液体慢慢成形,最后得到我们预想的结果。
 
   其中,有一点要注意的是,沙模的特性(比如形状和大小)和倒入其中的液体是没有任何联系的,换句话说:沙模和液体是完全分离的,但是沙模又必须和液体在一起才能生产出所要的产品。
 
    架构就好比上面例子中的沙模,软件项目就好比用于浇筑的液体。正如浇筑一样,架构引导着项目,最后得到了我们想要的结果。同时,我们也可以得出:软件的架构和实现这个系统的代码是没有很严格的关系的,这也就是我们常说的架构是平台无关的。架构可确保开发的过程在一定的限制或规则下进行。
   
    对于沙模来说,如果没有浇筑液体的存在,它基本就没有任何作用;架构也是立足项目的特定需求来设计的!
 
    当当网:
    京东地址:
    卓越地址:

转载地址:http://dhqno.baihongyu.com/

你可能感兴趣的文章
hdu2141Can you find it?
查看>>
值类型和引用类型 (转)
查看>>
Abstract (抽象类、接口、重写、覆写、重载)
查看>>
Axure RP 8 下载 激活可以使用的授权码、用户名、秘钥等
查看>>
20155303 2016-2017-2 《Java程序设计》第四周学习总结
查看>>
各种 mv power cell
查看>>
设计模式二之工厂模式
查看>>
c语言基础课第三次作业
查看>>
成本最低的Elance提现方式 — Moneybookers
查看>>
使用Settings Bundle为程序添加设置项(续)使用plist文件永久存储
查看>>
MogileFS系统简单配置实例
查看>>
转:禁止360随身wifi驱动自动安装
查看>>
OpenGL绘制复杂图形
查看>>
【转】[C# 基础知识系列]专题九 :深入理解泛型可变性
查看>>
AS3.0 学习笔记002
查看>>
map, hash_map, multimap的使用及区别
查看>>
UVa11997K Smallest Sums(优先队列)
查看>>
NLog配置文件根节点
查看>>
ComBoBox重写
查看>>
poj - 3278 Catch That Cow
查看>>