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

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

阅读更多
本文起因来自知乎的一个回答。面向对象、面向服务、面向组件三种编程模式有什么区别?分别适用于哪些领域的开发?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,有了搜索引擎,有了知识库等等。


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


不明白

相关推荐

    面向过程、面向对象、面向组件、面向服务软件架构的分析与比较

    软件开发从汇编语言、过程式语言、面向对象、面向组件发展到面向服务,这一进程不仅反映了编程技术的不断进步,更是软件工程哲学的深度演化,旨在提升软件的可维护性、可扩展性和重用性。每一步转变,都是对前一代...

    面向对象方法EJB组件.pdf

    文档的描述部分重复提到了标题内容,这表明文档将会深入探讨EJB组件的实现过程和其面向对象的特性。 标签“EJ”可能代表了EJB(Enterprise JavaBeans)的缩写,强调了文档将围绕EJB技术进行讨论。EJB是一种由Java...

    visual basic.net 面向对象可重用组件开发

    Visual Basic.NET(VB.NET)是微软公司推出的一种现代编程语言,它完全支持面向对象的特性,使得开发者能够利用这些特性进行高效、可维护和可重用的组件开发。本篇将深入探讨如何在VB.NET中进行面向对象可重用组件的...

    面向过程、面向对象、面向组件、面向服务软件架构的分析与比较.pdf

    随着技术的不断发展,软件架构经历了从面向过程到面向对象,再到面向组件和服务的演进,每一步都是对软件开发模式的抽象和优化。 1. 面向过程(Procedural Programming) 面向过程编程是一种以过程为中心的编程...

    《Visual Basic .NET面向对象可重用组件》开发一书程序例子

    《Visual Basic .NET面向对象可重用组件》这本书聚焦于如何在VB.NET环境中利用面向对象编程原则来设计和实现可重用的组件。面向对象编程(OOP)是一种流行的编程范式,它基于类和对象的概念,使得代码更加模块化、...

    面向过程、面向对象、面向组件、面向服务软件架构的分析与比较.docx

    本文将深入探讨四种常见的软件架构风格:面向过程、面向对象、面向组件和面向服务,并分析它们的特点、优缺点。 1. **面向过程**: 面向过程的编程是一种以过程为中心的编程范式,主要关注如何通过一系列有序步骤来...

    面向对象 面向对象 面向对象

    面向对象强调模块化和组件化,更适合处理复杂系统的构建。 8. **案例分析**:在实际开发中,比如在构建一个图形用户界面(GUI)应用时,我们可以创建一个窗口类,包含标题、大小、位置等属性和显示、关闭等方法。...

    面向对象概要设计模板

    * 灵活性:面向对象设计可以将对象设计为灵活的组件,从而提高了软件系统的灵活性。 在软件设计中,面向对象设计方法可以应用于各种软件系统,包括桌面应用程序、手机应用程序、Web 应用程序等。面向对象设计方法...

    面向对象分析与设计.pdf

    由于提供的文件内容不包含...由于无法直接从给定文件的重复链接中提取具体内容,以上内容为对面向对象分析与设计的一般性介绍,以确保满足您所要求的详细知识点说明。希望这些内容有助于增进您对面向对象方法的理解。

    面向对象分析与设计(第3版).pdf

    本书旨在为读者提供一套完整的面向对象分析与设计(OOAD)的方法,并结合实际应用案例来帮助读者深入理解面向对象的核心概念和技术。 #### 面向对象分析与设计概述 面向对象分析与设计是一种软件开发方法,它强调...

    面向对象分析与设计 麻志毅的课件

    6. **OO概论**:这部分内容可能会全面介绍面向对象的概念,包括对象、类、封装、继承和多态等基本概念。 7. **OO设计-下**:这部分可能是面向对象设计的进阶内容,可能涉及设计模式、接口设计、重构等高级话题。 8...

    面向对象系统分析参考文献

    面向对象系统分析(Object-Oriented Analysis,简称OOA)是一种软件开发方法,它强调将现实世界中的问题转化为计算机系统中的模型,通过这种方式,能够更好地理解和处理复杂的问题。本资料集中探讨了OOA的关键概念、...

    面向对象方法5.ppt

    第五章 面向对象软件开发过程 学习目的: ① 了解面向对象软件开发过程 ② 理解OOD与OOA的区别 面向对象分析 面向对象设计 面向对象程序设计

    UML面向对象建模与设计答案

    《UML面向对象建模与设计答案》是一个包含详尽解答的资源,旨在帮助学习者理解和掌握UML(Unified Modeling Language)在面向对象设计中的应用。面向对象建模是软件开发过程中至关重要的一环,它通过可视化的方式...

    pku面向对象高级教程

    在"面向对象设计-控制驱动部分设计2.ppt"和"面向对象设计-数据管理部分.ppt"中,可能会探讨设计模式和架构策略,如何设计出高效、可维护的控制系统和数据管理结构。此外,"面向对象设计-人机交互设计.ppt"可能会讲解...

    面向对象分析与设计(UML2.0版)(PDF)

    面向对象分析与设计是软件开发领域中的核心概念,它结合了计算机科学、工程学和管理学的方法,旨在创建高效、可维护的软件系统。在这个过程中,UML(统一建模语言)扮演着至关重要的角色,它是面向对象设计的标准化...

    面向对象方法学 UML

    面向对象方法学(Object-Oriented Methodology)是一种在软件开发过程中广泛应用的系统设计和建模技术,它强调以对象为中心来组织和管理系统的复杂性。UML(Unified Modeling Language,统一建模语言)是面向对象...

    面向对象.ppt

    综上所述,面向对象编程是一种强大的编程思想和技术,它不仅能够帮助开发者更好地理解和解决复杂问题,还能够通过UML这样的工具来进行有效的沟通和设计。通过掌握面向对象的基本概念和原则,结合UML建模语言的使用,...

Global site tag (gtag.js) - Google Analytics