这两天和一朋友讨论这样一个问题:你认为公司的架构怎样,有哪些缺点?
    
     其实在回答这个问题之前,有一些概念需要搞清楚,那就是什么是架构?
    
     目前对于架构还并未有一个统一的标准及定义,所以架构的概念就会因为每个人不同而不同,如果尝试问一百人关于架构的理解,可能有一百个答案。
    
     我开始做基础架构到现在已经有两年时间了,但对架构的理解也并不深,有时感觉无从说起,总觉的是一个无形的东西。下面我就总结下我个人对架构的理解,下面纯属个人理解。
    
     第一:架构分层,这里我将架构分为以下两层:
    
          1:基础架构,这也是由于架构本身的一大特点,具备基础性,它的基础性可以这样理解:通常涉及解决各种关键问题的通用方案,即重用性概念,以及涉及系统设计中影响深远的各种方案决策,影响深远说明一旦确定再次修改的代码往往过大。
         
          示例1:各种中间件,中间件就是对某些组件的一种包装,比如我们的系统在访问数据库是需要同时支持多种类型的数据库,比如SQL SERVER,MYSQL ,ORCAL,等等,为了在各种系统访问数据时形成统一的管理,我们可以编写一个通用化的组件来解决此种问题,达到管理容易,编写简单的目的。
          示例2:各种通用服务,例如为所有项目提供分布式缓存系统,所有的项目数据都可以通过它来完成数据的缓存,以加强系统性能。
          示例3:面向服务概念SOA的实现,通过SOA可以使复杂的业务系统得到解耦。
          示例4:项目的分层,比如分几层,每层的功能,想到之间的关系等。
         
          2:对于全局的组织,全局的结构控制,为特定需求提供特殊解决方案,这类重在设计思维。
         
          示例1:如何将复杂系统化分成N个子系统;
          示例2:如何实现系统的非功能性需求,比如并发性,稳定性,可扩展性等等;
          示例3:设计方案的选择,评估等。

下面是我对于架构的分层结构图:


          
     第二:架构所关心的问题有哪些,通过这些问题,就会发现架构的概念是如此之大,并非三言两语就能说明白的。
    
          1:全局组织和全局结构
          2:数据存取协议
          3:各种组件的功能定义
          4:软件的物理部署
          5:设计方案的选择
          6:架构评估与实现
         
     第三:架构都有哪些重要作用
    
         1:它是项目干系人进行交流的手段。它代表了系统公共的最高层次抽象,系统相关的很大部分人员均可将它作为互相理解的基础,以此达成共识;
         2:上面说到架构具备基础性,所以具备可传递性与可重性的特点,架构层次上的重用性与代码级的重用性有本质区别,它意味着架构的决策能在相似的需求中出现在多个系统中,体现在决策,而不是实现细节;
         3:它是早期设计决策的体现,这些决策比以后的开发,设计以及编码以后期的维护工作重要的多。
        
     第四:需要注意的几个观点,为了更加正确的认识架构,需要正确对待类似下面的观点
    
         1:框架(Framework),框架在一定程度上容易让人理解为架构,其实框架只是架构内容中的一种,代码级别的组件,不能认为搞搞框架就是架构的全部了。比如我们写的各种是间件,为某种特定需求开发的某种具备特殊功能的组件。

2:写大量的中间件是架构吗?是,但它也只属于架构的一小部分,说的准确点是框架的一部分;

3:SOA算架构吗,当然算,它就是上面我理解的基础架构一部分,但这些均只是架构的冰山一角;

4:某公司成功的架构模式能直接移置到另外一家公司的项目中吗?这个问题不能武断,我认为如果项目类型大致相同,移置的可能性会比较大,否则就需要慎重,比如我们不能将一个C/S架构上的思想直接移到到B/S架构的项目上,它们之间的差距是非常大的,即使勉强移置,也需要非常明确以后需要改进的地方,比如说性能问题,原来的架构所应用的环境对性能要求不高,所以运行良好,但如果不变的移置到互联网项目了,郁闷的事就会出来了。
        
      第五:如何表示软件架构,可以通过非常经典的4+1视图模型来从5个不同的视角来反映系统的整体架构:
           1:逻辑视图,主要体现的是系统需求,在逻辑视图中,系统会被抽象成一堆的功能抽象,这些抽象主要是来自需求。功能分解有两个功能,第一:进行功能分析;第二:可以提取不同功能模块中可重用点。
           2:进程视图,它主要体现系统中的一些非功能性需求,侧重于系统运行时的特征,例如:系统的性能,稳定性,申缩性,并发性,容错能力,分布式等等。
           3:物理视图,它主要考虑的是系统的部署问题,比如部署在什么样的硬件上,解决系统的拓扑结构,通信等问题,比如数据库的备份容灾方案等。
           4:开发视图,主要解决系统的组织以及管理,比如如何划分子系统,如何编写要重用性组件等。
           5:场景视图,它联系以上四个视图,是系统活动的重要抽象,它用来解决在特定场景上分析一个特定的视图。

下面是它们的关系图
           

总结:架构是一个大概念,不会有统一的定义,每个公司每个项目都会对架构产生影响,只有根据实际情况出发,才有可能开发出最适合自己公司项目的架构模式。

转载于:https://www.cnblogs.com/ASPNET2008/archive/2011/10/16/2213789.html

我对架构的理解-概念篇相关推荐

  1. ORM查询语言(OQL)简介--概念篇

    相关文章内容索引: ORM查询语言(OQL)简介--概念篇 ORM查询语言(OQL)简介--实例篇 ORM查询语言(OQL)简介--高级篇:脱胎换骨 ORM查询语言(OQL)简介--高级篇(续):庐山 ...

  2. SAP SD基础知识之组织架构设计-Shipping Point篇

    SAP SD基础知识之组织架构设计-Shipping Point篇 今天博主项目上不太忙,关键用户在做单元测试,那就再写一篇吧,作为组织架构设计的完结篇. Shipping Point,即装运点,同信 ...

  3. Hugepages你用了吗?--原理概念篇

    Hugepages你用了吗?----原理概念篇 Hugepages你用了吗?----测试案例篇      引子 系统进程是通过虚拟地址访问内存,但是CPU必须把它转换程物理内存地址才能真正访问内存.为 ...

  4. 从零开始学架构3 - 高可用篇

    从零开始学架构3 - 高可用篇 从0开始学架构.高可用篇 22 | 想成为架构师,你必须知道CAP理论 CAP 定理(CAP theorem)又被称作布鲁尔定理(Brewer's theorem),是 ...

  5. 从零开始学架构4 - 可扩展篇

    从零开始学架构4 - 可扩展篇 32 | 可扩展架构的基本思想和模式 今天我们进入架构可扩展模式的学习,这部分内容包括分层架构.SOA 架构.微服务和微内核等,先来聊聊架构的可扩展模式. 可扩展的基本 ...

  6. 从新手到架构师,一篇就够:从100到1000万高并发的架构演进之路

    1.引言 本文以设计淘宝网的后台架构为例,介绍从一百个并发到千万级并发情况下服务端的架构的14次演进过程,同时列举出每个演进阶段会遇到的相关技术,让大家对架构的演进有一个整体的认知.文章最后汇总了一些 ...

  7. 一、网络游戏架构的前世今生——计算篇

    上文: 网络游戏架构的前世今生(2) 网络游戏架构的前世今生--计算篇 计算方案演进 游戏的分类 会话游戏的简单架构 分服.合服.全球同服 计算方案演进 游戏的分类 游戏的分类方式有很多种,从玩家容易 ...

  8. 对前端架构的理解 - 分层与抽象

    大厂技术  高级前端  Node进阶 点击上方 程序员成长指北,关注公众号 回复1,加入高级Node交流群 可能一些同学会认为前端比较简单而不需要架构,或者因为前端交互细节杂而乱难以统一抽象,所以没办 ...

  9. 【学习笔记】 科目一之概念篇

    [学习笔记] 科目一之概念篇 概念题方法 1)抓重点:科目一设计知识范围太广,不要妄想所有知识点都复习到,这是不可能的,我们的目标是45分几个而不是考高分,复习时间有限,所以要学会抓重点,比如法律条文 ...

最新文章

  1. 在ASP.NET中值得注意的两个地方
  2. 关于举办第十五届全国大学生智能汽车竞赛浙江赛区选拔赛的通知
  3. java.net.Socket 解析
  4. 【Python CheckiO 题解】The Most Numbers
  5. C语言学习笔记---向函数传递结构信息
  6. April 24, 17:30-20:00, 1479, Concentration-compactness/Rigidity method lecture 3 by Yang Lan
  7. 【转载】推荐系统的十大挑战
  8. 传爱立信两大股东欲弹劾CEO卫翰思 股价应声反弹
  9. 微信接口_收货地址共享
  10. Android HPSocket SE_SOCKET_CREATE (3)
  11. Lyra:一种用于语音压缩的新型极低比特率编解码器
  12. 贷款广告投放行为观察:价格高企主要客户是小贷公司,朋友圈转化效果最好
  13. 飞桨EasyDL闪退解决方法
  14. 当前时间转换成日期格式
  15. 「解决方案」Acrel-2000Z变电站综合自动化系统
  16. [编译原理]FIRST集合FOLLOW集的介绍和求解
  17. Python 爬取 Google Map POI
  18. matlab humoments,应用于数字图像识别的Hu矩缩放不变性分析
  19. 使用python处理wps表格_【使用Python操作XLS文件+wps中叫et+】 - #1
  20. sql 获取上级 上上级

热门文章

  1. java套接字数据对不上,服务器不从多个客户端(Java套接字)接收数据
  2. c语言 freopen txt_C语言的文件操作 freopen
  3. python中定义字典数据类型使用什么符号_python数据类型之字典类型-dict
  4. BertEmbedding的各种用法
  5. 【视频】TFLearn深度学习库,20行Python代码实现情感分类
  6. 遍历所有点的最短路径python_Python:如何优化所有可能的最短路径的计数?
  7. java 日期相减得分钟_java日期相减得到分钟??????
  8. 基于W5300和FPGA的实时数据采集系统设计
  9. python微控制器编程从零开始下载_Python微控制器编程从零开始(使用MicroPython)...
  10. 配置kafka Server