系统架构——
从核心概念上讲,架构是一套构建系统的规则;从表象上看,软件架构是一套模板,以文档、代码、工具程序等方式表现。
软件架构的成果是一套模板,这套模板会通过一种方式去组织,这个组织形式也很重要,应该从不同视角去表现,以适合不同人去理解和应用。
常用架构设计模——
很多OO设计原则和设计模式同样适用与架构设计,架构中使用这些原则的主要目的是为了使架构具有更好的可维护性和可复用性,并使架构具有稳定性,这些目的也是一个架构的核心价值所在。
模式的定义也不统一,一般是这样的解释,每个模式描述了一个在我们周围不断重复发生的问题以及该问题解决方案的核心。(在古代流传至今的“三十六计”就是三十六个模式,对中国人来说,这可能是让人最容易理解模式概念的一个类比。)使用模式能够减少设计的难度,更能加快设计人员之间交流和沟通。 以下是几个常用的顶层架构设计的模式
1) 分层模式
2) MVC模式
3) 客户/服务器模式
4) 流程处理模式
AOP——
AOP是OOP的延续,是Aspect Oriented Programming的缩写,意思是面向方面编程。AOP实际是GoF设计模式的延续,设计模式孜孜不倦追求的是调用者和被调用者之间的解耦,AOP可以说也是这种目标的一种实现。AOP是近两年比较热门的技术,给我们带来了一个新的视角和软件架构方法。
通过使用AOP技术,可以把分散在多个模块中共同的行为分离出来统一编程,减少重复代码。 AOP和OO、SOA一样,都是架构设计中的重要视角。
1) 基本原理
AOP机制一般都需要开发语言和编译器支持,Java和.C#都支持。实现AOP有不同的方法,常见的方法是利用代理机制,其基本原理是为“其他对象提供一种代理,以控制对这个对象的访问”。
2) 常见使用AOP技术的地方
Authentication 权限验证
Caching 缓存
Context passing 内容传递
Error handling 错误处理
Lazy loading 懒加载
Debugging  调试
logging, tracing, profiling and monitoring 记录跟踪 优化 校准
Performance optimization 性能优化
Persistence  持久化
Resource pooling 资源池
Synchronization 同步
Transactions 事务
3) AOP也可以用于封装业务逻辑
比如,进销存软件中,更多模块的功能操作都需要重新计算库存,所以可以把库存计算分离出来,用AOP技术偶合到那些功能模块中。
在业务功能模块中用AOP技术很多情况下都不是很经济,因为业务逻辑复杂多变,可能经过仔细分析抽取出共性代码会因为一个需求变化而变得不再适用,不如用普通方法实现需求变化来得方便和简单。因此,AOP技术在做基础框架平台、组件容器时用得比较多。
SOA——
每个人都可以从不同的视角来理解SOA,从程序员的角度,SOA是一种全新的开发技术,新的组件模型,比如说Web Service;从架构设计师的角度,SOA就是一种新的设计模式,方法学;从业务分析人员的角度,SOA就是基于标准的业务应用服务。
Service-architecture.com将SOA定义为:“本质上是服务的集合。服务间彼此通信,这种通信可能是简单的数据传送,也可能是两个或更多的服务协调进行某些活动。服务间需要某些方法进行连接。所谓服务就是精确定义、封装完善、独立于其他服务所处环境和状态的函数。”
Looselycoupled.com将SOA定义为:“按需连接资源的系统。在SOA中,资源被作为可通过标准方式访问的独立服务,提供给网络中的其他成员。与传统的系统结构相比,SOA规定了资源间更为灵活的松散耦合关系。”
Gartner则将SOA描述为:“客户端/服务器的软件设计方法,一项应用由软件服务和软件服务使用者组成……SOA与大多数通用的客户端/服务器模型的不同之处,在于它着重强调软件组件的松散耦合,并使用独立的标准接口。”
从概念的角度,SOA是一种构造分布式系统的方法,它将业务应用功能以服务的形式提供给最终用户应用或其他服务。
SOA架构的基本要求:
SOA在相对较粗的粒度上对应用服务或业务模块进行封装与重用;
服务间保持松散耦合,基于开放的标准, 服务的接口描述与具体实现无关;
灵活的架构 --服务的实现细节,服务的位置乃至服务请求的底层协议都应该透明;
架构设计中的SOA视角
在架构设计中,SOA是一个非常重要的视角。SOA以一种粗粒度的角度去分解系统的不同功能,去分析不同功能服务之间的关系和接口,不同功能服务之间是松散偶合的。SOA也是解决不同系统功能集成和异构系统之间功能互用的一个比较不错的解决办法。
一般提到SOA时,都会把它和Web Service联系到一起,因为目前Web Service是最能表达SOA架构的技术。
SOA的引申
SOA的出现应该说是一个必然的过程,是软件行业发展中必然会出现的一个概念。软件一开始是一些代码行,代码行多了之后就成了代码块或者叫子程序,然后就继续发展出了函数,随着OO的出现,为了便于管理函数出现了类和类库,类库多到难以管理的时候出现了组件的概念,当软件复杂到组件这个概念仍现粒度太细的时候,就出现了服务这个概念,系统架构就对应出现了SOA概念。由此可以推论,不久以后,软件业一定还会出现粒度更大的软件概念,它由多个服务组成。
现在是SOA发展的初级阶段,SOA为在线服务的商业模式提供了很好的技术手段,随着可用的服务越来越多,服务越来越方便和可靠,一定会出现很多以服务(狭义的概念,指软件的某项功能)进行盈利的组织,一大类是专业的在线服务提供商,提供各种类型的软件功能,提供服务租赁;当可用服务爆炸式增长后,寻找到合适的服务会越来越难,这时就会出现另一类公司――在线服务集成商,他们对无数的在线服务进行评测和筛选,然后按照客户的需求或行业的需求提供服务包解决方案。
ESB——
ESB(Enterprise Service Bug,企业服务总线)是一种在松散耦合的服务和应用之间标准的集成方式。它可以作用于:
* 面向服务的架构 -分布式的应用由可重用的服务组成
* 面向消息的架构 - 应用之间通过ESB发送和接受消息
* 事件驱动的架构 - 应用之间异步地产生和接收消息
通俗地说,ESB就是在SOA架构中实现服务间智能化集成与管理的中介。它与SOA的关系是:ESB是逻辑上与SOA 所遵循的基本原则保持一致的服务集成基础架构,它提供了服务管理的方法和在分布式异构环境中进行服务交互的功能。ESB实现了SOA三个基本要求中的第三个。
ESB是特定环境下(SOA架构中)实施EAI的方式,应为
被集成的对象被明确定义为服务,而不是传统EAI中各种各样的中间件平台
ESB明确强调消息(Message)处理在集成过程中的作用
事件驱动成为ESB的重要特征
ESB适用场景
ESB应该构筑在完善的SOA架构上,它应该做的事是服务集成。它的常见应用模式是
协议转换模型,用于当服务的请求者与服务提供者基于不同协议时的消息转换情形;
消息广播模式,用于事件驱动多个动作或者消息广播的情形;
服务匹配模式,用于需要动态选择服务提供者的情形,例如可以根据消息的内容,或负载情况,或服务级别约定(SLA),来为服务请求者选择合适的服务。
铭铭整理 来源网络  

转载于:https://blog.51cto.com/mingxinzhicheng/8496

软件架构的相关概念小汇相关推荐

  1. 游戏玩家行为基本模式的初探小汇(转)

    游戏玩家行为基本模式的初探小汇(转)[@more@] 众所周知,游戏的设计应该以玩家为中心,游戏的成功与否决定于玩家对此款游戏的满意度.那么,玩家在游戏中究竟是处于一种什么样的位置?玩家有哪些基本的行 ...

  2. 【Protle99SE】PCB中各层的含义【小汇】

    忽然发现,对solder和paste,layer和plane这两对有些糊涂了,摘录网络中的文章如下: [http://www.360doc.com/content/10/0608/15/514342_ ...

  3. iOS开发的知名大牛博客小汇

    王巍的博客:王巍目前在日本横滨任职于LINE.工作内容主要进行Unity3D开发,8小时之外经常进行iOS/Mac开发.他的陈列柜中已有多款应用,其中番茄工作法工具非常棒. http://onevca ...

  4. 游戏玩家行为基本模式的初探小汇

    众所周知,游戏的设计应该以玩家为中心,游戏的成功与否决定于玩家对此款游戏的满意度.那么,玩家在游戏中究竟是处于一种什么样的位置?玩家有哪些基本的行为?笔者玩游戏多年,也作了一些研究,并于最近整理出了一 ...

  5. Java泛型学习资料小汇

    <Effective Java>的第二版,第5章 泛型 ★★★★★ 2008年5月出的<Effective Java>的第二版涵盖了Java SE 5和Java SE 6. 其 ...

  6. linux账号安全小汇

    /etc/passwd中包含有用户的登录名 /etc/shadow中包含有用户密码的加密算法后的结果和其他一些辅助信息 /etc/login.defs 中参数PASS_MIN_LEN 8(口令最小长度 ...

  7. sizeof运算符运算结果小汇

    文章目录 sizeof运算符的结果部分地依赖于其作用的类型 sizeof运算符的结果部分地依赖于其作用的类型 对char或者类型为char的表达式执行sizeof运算,结果得1 对引用类型执行size ...

  8. 【实用】Linux系统知识小汇

    命令与配置 提示:一个知识点以多种方式来问答,才能更牢固的记忆,某些命令多实际操作,方可轻松记住. 执行(kill -9 0或kill -kill 0)命令可以使用户退出系统返回到login状态 在s ...

  9. 移动100m宽带慢的要死_【今日小知识】卡吗?慢吗?移动千兆路由器带你飞

    时常听到有小伙伴抱怨: "为什么我家都换上了千兆宽带, 网速还这么慢,是不是宽带不好用?" 别着急!!小汇汇来帮你捋一捋我们享受到的网络都经历了什么:移动运营商 → 光猫 → 路由 ...

最新文章

  1. Enrichment plot的另一种展示
  2. MIT类人机器人开始耍杂技了,看这个后空翻它漂亮吗?
  3. 蓝桥杯--2012--取球游戏
  4. 实验四十一、×××(IPSec)的配置
  5. Online Learning场景下实时新闻热点机器学习训练实践
  6. Oracle buffer状态深入剖析
  7. boost::process::posix相关的测试程序
  8. 使用sqlite3创建数据库表的时候须要注意
  9. DVWA Command Injection 练习总结
  10. CSDN2013博客之星评选(求投票支持)
  11. flyway常用配置_flyway的使用
  12. 孪生网络图像相似度_Siamese network 孪生神经网络一个简单神奇的结构
  13. 数学建模竞赛和matlab
  14. 侧入式LED背光源优缺点分析
  15. 笔记本设置WiFi热点命令操作
  16. video视频标签 自动播放autoplay 失效问题
  17. 显示器信号时有时无并无html,电脑开机显示器无信号、键盘鼠标不亮解决方法...
  18. QT中将文件夹内文件名称显示到tableview,对显示的文件名双击直接打开文件
  19. 6 静态成员与友元【C++】
  20. 小米air2se耳机只有一边有声音怎么办_不到200元 小米蓝牙耳机Air2 SE是真香党的选择吗?...

热门文章

  1. linux设备驱动归纳总结
  2. PHP获取今天开始和结束的时间戳
  3. iOS9基础知识(OC)笔记
  4. Linux 内核分析 之一:How Computer Works 实验
  5. struts 数据库连接
  6. XSLT基本语法和第一个实例
  7. linux异常 - 无法分配内存
  8. AspectJ的注解开发AOP:异常抛出通知的学习
  9. ”dpkg: 处理归档 /var/cache/apt/archives/XXXXXX(--unpack)时出错“的解决方法
  10. 异常详细信息: System.Web.HttpException: 请求在此上下文中不可用