`
james_lover
  • 浏览: 42827 次
社区版块
存档分类
最新评论

为什么会有面向对象,面向组件和面向服务

 
阅读更多
本文起因来自知乎的一个回答。面向对象、面向服务、面向组件三种编程模式有什么区别?分别适用于哪些领域的开发?http://www.zhihu.com/question/20478119

无论什么东西,变大变多了之后,就会有一系列问题。
面向XX 就是为了解决系统成长过程中遇到问题,而采用的一些范式。
举例来说:你开始给一个企业做MIS系统。

当这个企业来很小的时候,用简单的面向对象编程,一个数据库+tomcat+浏览器已经满足需求。不需要考虑面向组件开发和SOA.

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

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

新的问题来了:
总有一些很重要的服务,所有的系统都会依赖它,它出一点问题,所有系统都停转。你开始考虑双机,热备,负载均衡。
以前用的IBM的主机+Oracle数据库+EMC的存储,再后来买更贵的性能更好的。慢慢的你发现,企业挣的钱都他妈的给了IOE。
你开始考虑使用开源产品,考虑分布式。
分享到:
评论
2 楼 james_lover 2014-06-17  
这里说的“搜索引擎”通常指的是MIS系统的搜索组件。
MIS系统会产生很多的非结构化文本,很多大公司有自己的论坛,知识库,文档库。
要实现这些内容的搜索,必然会用搜索引擎。一般是在开源搜索引擎上进行定制,比如lucene.

很多小系统是在数据库的文本字段做like实现搜索,这种搜索局限性太大,只能用于数据库的搜索,无法支持文本文件,word,html里的内容搜索。

google,baidu是面向整个web的搜索。而企业的搜索引擎只面向企业内部的内容。
不同的数量级。
1 楼 java_web_hack1 2014-06-17  
有一句话看不懂,请楼主赐教

以前要自己写一大堆代码,现在搞清楚接口,直接调用另一套Mis系统的服务接口就 OK了。也有了单点登陆,有了portal,有了搜索引擎,有了知识库等等。


这里的搜索引擎,不是说,只有像百度那样的公司才采用搜索引擎吗?
普通公司,集团,要什么搜索引擎
或者说,搜索引擎在普通公司中的作用是什么


不明白

相关推荐

Global site tag (gtag.js) - Google Analytics