oop soa cbd

  • 面向对象编程(Object-Oreinted Programming) 是一种编程范式。指在设计程序时大量运用类实例对象的方式。OOP一旦在项目中被运用,就成了时刻要考虑的东西。
  • 面向服务架构(Service-Oreinted Architecture) 是将软件设计成一组可互操做的服务的一套原则或方法论。一般在考虑系统架构时才会触及SOA。
  • 基于组件开发(Component-Based Development) 是一种软件工程实践,设计时一般要求组件之间高内聚,松耦合。其接口多是OO的,调用方式多是以Service的方式。基于组件开发关注系统层次、子系统边界和子系统间通信的的设计,处于代码层面但不像OOP的同样是时刻须要运用的东西。
 

面向XX就是为了解决系统成长过程当中遇到问题,而采用的一些范式。
举例来讲:你开始给一个企业作MIS系统。
当这个企业来很小的时候,用简单的面向对象编程,数据库+服务端+浏览器已经知足需求。不须要考虑面向组件开发和SOA.

慢慢的,这个企业长大了,当初简单的mis系统,变得愈来愈复杂和庞大。系统中有不少重复功能的代码。当这些功能模块的业务有变化时是你头疼的时候:代码中有不少地方要修改,遇到新员工,有时老是改不全。系统上线问题愈来愈多,需求响应时间也愈来愈长。常常被客户骂:他X的,这么简单的需求搞了半个月都上不了线。去年xxxxxxx两天就上线了。
此时,你会考虑怎么把系统中那些重复的代码统一块儿来。你会考虑到组件化,即“面向组件”。你把一个个比较独立的业务模块约定好接口,开发成组件。之后再有相似的功能模块,直接调用这个组件,即节省开发成本,又容易维护。

后来,企业变成了集团公司。已经上线了不少套各类各样的mis系统。虽然大部分系统都实现了组件化。但作为一个集团公司,仍然有不少共同的业务,不一样mis系统中有不少功能重复的模块。此时又面临业务升级困难,难以使用的问题:一个需求可能要涉及不少套mis系统的升级。同时每套系统都有独自的界面,客户录入一个数据,要打开N个页面,要登录N次,叫苦连天。各类数据不一致的问题接踵而来。
SOA来啦。架构师把各个系统功能相似的模块抽象成服务,重复的模块再也没有了,不一样系统间互相调用服务接口。之前要本身写一大堆代码,如今搞清楚接口,直接调用另外一套Mis系统的服务接口就 OK了。也有了单点登录,有了portal,有了搜索服务,有了知识库等等。

可是问题又来了:
总有一些很重要的服务,全部的系统都会依赖它,它出一点问题,全部系统都停转。你开始考虑双机,热备,负载均衡。
之前用的IBM的主机+Oracle数据库+EMC的存储,再后来买更贵的性能更好的。慢慢的你发现,企业挣的钱都他妈的给了IOE。你开始考虑分布式,开始考虑使用开源产品。
相关文章
相关标签/搜索