仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 1759|回复: 20
打印 上一主题 下一主题

[学习教程] JAVA编程:对象尺度COM和CORBA论长道短仓酷云

[复制链接]
兰色精灵 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-18 11:32:56 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
那这个对象有什么意义?现在很多用javabean的人就不能保证对象有完整的意义,不成熟的使用模式等导致代码疯狂增长,调试维护的时间要得多得多。在说性能之前,先说说你这个比较的来历。据说微软为了证明。net网页编程比java好。  组合软件是新一代软件手艺开展的标记,它的提出很天然,为了进步软件临盆力、不轻率地开辟使用程序、计划开辟职员应尽量天时用可重用的软件组件、组装机关新的使用软件体系。
  追根求源,由软件模块组件构造分解软件的头脑早在70年月就已提出了,函数就是一种组件,函数经由过程参数来顺应分歧使用需求的变更,Ada言语的模块package就是一种组件,完成了外部细节遮蔽,模块经由过程接口标准申明举行毗连和组装,package还供应了类属机制,使模块经由过程类属参数,顺应分歧使用需求的变更。可是,传统软件体系布局的范围性,以历程为中央计划的功效模块,其扩大和复用的才能都较差,对模块举行使用重组的坚苦良多。从80年月入手下手的面向对象手艺的研讨,使组合软件又萌生出新的性命力。面向对象的软件,以数据为中央计划,对象类既具有模块的封装性和类属等特征,还具有承继特征,极年夜地进步了类的可扩大性和可再用才能。对象类较之于传统软件的功效模块而另具有的长处是:
  (1)易于了解,具有完全的语义特性;
  (2)易于扩大和修正,具有较高的通用性和顺应性;
  (3)易于机关组装,具有标准的内部接口。
  开辟使用组件必需遵守尺度,以包管软件组件的互操纵性,只要遵守一致的尺度,分歧厂商的、分歧时代的、分歧程序计划作风的、分歧编程言语的、分歧操纵体系的、分歧平台上的软件或软件部件才干举行交换与互助。为此,OMG(ObjectManageGroup)供应了一个对象尺度CORBA,它界说了一个网连对象的接口,使得对象能够同时事情。基于CORBA的对象哀求代办署理ORB为客户机/服务器开辟供应了两头件的新格局。
  使人称奇的是,作为OMG成员的微软公司却撇开CORBA而另辟了COM(ComponetObjectModel),即组件对象模子,并把COM定位成基于对象的软件开辟模子,只管COM被以为是微软鼓噪出来的手艺,但撑持COM的开辟工具却不休增加,个中年夜部分来自于微软,包含VisualBasic和VisualC++。
  面临组件范畴内缺少一个一致的、用于开辟使用组件的尺度这类场合排场,开辟职员应怎样办呢?COM和CORBA谁更胜一筹?本文先先容CORBA和COM,然后剖析对照这两个尺度及其组件的好坏势,信任读者在读完本篇文章以后,会做出本人的判别和弃取定笃。

  1、大众对象哀求代办署理布局:CORBA尺度

  环球性收集使线上的一切设备和软件成为环球共享的众多的资本,盘算机情况也从会合式开展到散布式情况,开放式体系的开展利用户可以通明地使用由分歧厂商打造的分歧机型分歧平台所构成的异构型盘算资本,因而,散布式处置和使用集成天然而然地成为人们的配合请求,那末甚么是散布式处置和使用集成呢?它们的功效和关头手艺是甚么呢?复杂地讲,散布式处置和使用集成绩是指在异构的、收集的、物感性能不同很年夜的、分歧厂商的、分歧言语的信息资本的基本上构建信息共享的散布式体系,而且可以无效地举行使用体系和散布式处置的集成。散布式处置的关头在于界说可办理的软件构件,即面向对象手艺中的“对象”。使用集成的关头在于为跨平台、跨机种、跨编程言语的产物供应一致的使用接口。OMG构造针对现今信息家产的请求,发布了CORBA尺度,即大众对象哀求代办署理系统布局(CommonObjectRequestBrokerArchitecture),这是一个具有互操纵性和可移植性的散布式面向对象的使用尺度。
  CORBA的中心是对象哀求代办署理ORB,它供应对象定位、对象激活和对象通信的通明机制。客户收回请求服务的哀求,而对象则供应服务,ORB把哀求发送给对象、把输入值前往给客户。ORB的服务对客户而言是通明的,客户不晓得对象驻留在收集中那边、对象是怎样通信、怎样完成和怎样实行的,只需他持有对某对象的对象援用,就能够向该对象收回服务哀求。
  CORBA同意用户以两种分歧的体例提出对象哀求:
1)静态挪用:
  经由过程给定接口的存根,在编译了对象代码后,进进客户真个程序。因而,静态挪用必需在编译时就晓得对象及其范例。
2)静态挪用:
  经由过程ORB的静态挪用接口DII,在运转时天生会见对象的代码。
  不论客户以哪种情势提出哀求,ORB的义务是:找出所要对象的地位,激该死对象,向对象传送此哀求。对象实行所哀求的服务后,把输入值前往给ORB,然后再由ORB前往给客户。
CORBA的主要观点是:
1.对象毗连
  CORBA普遍地撑持对象的完成,在单服务器体系中也能够完成由接口界说言语界说的接口。ORB的天真性既能够间接集成已有的使用,又不会使新对象受某些准绳的制约。
  对象毗连供应了有分歧范例对象完成时,利用ORB服务的办法,服务包含:对象援用、办法挪用、平安把持、对象完成的激活与静候等。
2.接口界说言语(IDL)
  CORBA用IDL来形貌对象接口,IDL是一种申明性言语,它的语法相似于C++。
  IDL供应的数据范例有:基础数据范例、机关范例、模板范例、和复合范例、操纵申明。这些范例能够用来界说变元的范例和前往范例,操纵申明则能够用来界说对象供应的服务。
  IDL还供应模块机关,个中能够包括接口,而接口是IDL各种型中最主要的,它除形貌CORBA对象之外,还能够用尴尬刁难象援用范例。
  IDL供应了接口承继性,派生接口能够承继其基类接口所界说的操纵与范例。IDL的接口承继性有其特别性,此处不赘述。
  总之,CORBA的IDL是一种申明性言语,形貌面向对象体系开辟所遵守的接口与完成相分别的基础准绳。
3.静态挪用接口
  把IDL申明编译成面向对象程序计划言语的实代码后,客户能够挪用已知对象的操纵。在某些使用中,用户其实不懂得使用接口编译信息,但也请求挪用对象的操纵,这时候就要静态挪用接口来挪用用户的操纵了。比方,图形用户接口应撑持用户扫瞄接口大众库,以取得每一个对象所撑持的操纵信息,用户可依据本人的需求从扫瞄对象中选择出所需的对象操纵,详细的对象操纵的挪用实践上是用静态挪用接口来完成的。
4.接口公用库
  接口公用库耐久地存储IDL的接口申明,借助于接口公用库,能够完成对象承继性条理布局的导航,而且供应了有关对象撑持的一切操纵的形貌。接口公用库最多见的功效是为接口扫瞄器供应信息,匡助使用开辟者找出潜伏的可重用的软件部件。ORB能够使用接口公用库反省运转时的操纵参数范例,但接口公用库的基础功效是供应范例信息,为静态挪用接口发送哀求供应信息撑持。
  2、组件对象模子:COM尺度
  COM是微软公司推出的与CORBA对抗的产物,在计划开辟COM时,微软把COM定位成基于对象的程序计划模子,旨在增进软件的互操纵性,实践上它是基于OLE的组件尺度,COM接纳了OLE的对象哀求代办署理,界说了OLE组件对象及使用之间的接口。
 
  COM所触及的主要观点有:
  1.COM接口
  COM的使用程序之间和使用程序与体系之间是要互相交换信息和互相感化的,其互相感化是经由过程一系列的函数完成的,这些函数就叫作“接口”或“界面”。COM接口是组件与组件之间缔结的左券,供应了特定条理上的服务或功效性。
  COM接口供应了以下的便当:
  ·无需从头编译,对象就能够增加新的功效;
  ·可以通明地向另外一个历程或另外一台呆板上的对象发送RPC挪用;
  ·诸如C、C++、Pascal、Ada和Smalltalk等但凡撑持指针布局并经由过程指针能显式地或隐式地挪用函数的程序计划言语都可以创立并利用COM对象。
  COM界说了一种特别的接口IUnknown来完成一些基础功效,一切对象均撑持此基础接口,该接口的办法是QueryInterface,它同意对象的用户在运转时静态地断定COM对象是不是撑持某一个接口。
  COM的接口界说言语是COMIDL(InterfaceDefinitionLanguage),它是OSFDCE所接纳的IDL的一种复杂扩大,DCE,即散布式盘算情况,是OSF(OpenSoftwareFoundation)构造供应的一组自力于各平台的两头件服务,它使得散布的使用程序得以和谐运转。
  开辟职员可使用COMIDL来创立对COM对象的接口办法的申明。
  2.用GUID来标识对象和接口
  将来的散布式对象体系大概年夜到具有数百万个接口,而软件的构成部件是必需独一标识的。在年夜型庞大体系中,假如仅用便于人类浏览的称号来标识组件的话,那末几近是100%要呈现名字抵触征象的。为了不这类事务的产生、办理名字抵触成绩,COM接纳了全局独一的标识符GUID(GloballyUniqueIdentifier),每一个GUID都有128位整数并能的确包管标识符在空间天下和工夫天下中的独一性。COM的GUID和OSFDCE的UUID(UniversallyUniqueIdenfifiers)是完整同等的。
  3.摒弃承继性而接纳聚类
  微软以为在松懈耦合的、分离的、慢慢改良的对象体系中,承继性是形成良多贫苦的本源,但微软也供认假如程序计划职员都能把持承继性条理,那末完成承继是一个非常有效的手艺,且紧耦合也不会带来太多的贫苦。不外微软仍是以为在完成条理上看,对象与对象之间的左券是不言明且有二义性的,当父或子组件改动了完成,那末与其有关的组件的举动就成为非界说举动了。
  COM供应了两种机制来代替完成承继性,这两种代码重用机制叫作克制/代办署理和聚类,在前一种机制中,一个对象(内部对象)只需把外部利用的对象看成服务供应者来利用就能够使本人(内部对象)成为其他对象的客户了,内部对象的客户是毫不能看到外部对象的,这就是说某个对象的外部对象关于该对象的客户来讲是完整埋没的,这恰是封装性的表现。
  在聚类机制中,一个聚类对象实践上是一个分解对象,由内部对象和外部对象分解,内部对象把外部对象间接出现给内部对象的客户,这时候外部对象就象内部对象中的一部分一样,以是说聚类机制是一种特别的克制/代办署理机制。
  4.当地通明性和远端通明性
  COM同意客户通明地与对象通信,客户在与对象通信时其实不晓得对象在那边,客户会见对象完整是经由过程接口指针的,指针固然是在过程当中的,并且每次对接口的挪用都要先与过程当中的EJB是部署在服务器上的可实行组件或贸易对象。

Java的B/s开发是通常是javaweb开发,又叫J2EE开发,J2SE是手机开发。C#的C/s和B/s开发是说.net网页编程和Asp开发。。u在这里说明一点;资深一点的Java和C#程序员都明白一点
莫相离 该用户已被删除
沙发
发表于 2015-1-21 09:56:04 | 只看该作者
一般学编程语言都是从C语开始学的,我也不例外,但还是可能不学过程语言而直接学面向对象语言的,你是刚接触语言,还是从C开始学比较好,基础会很深点,如果你直接学习JAVA也能上手,一般大家在学语言的时候都记一些语言的关键词,常有的包和接口等。再去做逻辑代码的编写,以后的学习过程都是从逻辑代码编写中提升的,所以这方面都是经验积累的。你要开始学习就从
蒙在股里 该用户已被删除
板凳
发表于 2015-1-27 23:48:25 | 只看该作者
象、泛型编程的特性,广泛应用于企业级Web应用开发和移动应用开发。
愤怒的大鸟 该用户已被删除
地板
发表于 2015-2-5 11:07:17 | 只看该作者
Pet Store.(宠物店)是SUN公司为了演示其J2EE编程规范而推出的开放源码的程序,应该很具有权威性,想学J2EE和EJB的朋友不要 错过了。
老尸 该用户已被删除
5#
发表于 2015-2-6 16:36:22 | 只看该作者
接着就是EJB了,EJB就是Enterprise JavaBean, 看名字好象它是Javabean,可是它和Javabean还是有区别的。它是一个体系结构,你可以搭建更安全、更稳定的企业应用。它的大量代码已由中间件(也就是我们常听到的 Weblogic,Websphere这些J2EE服务器)完成了,所以我们要做的程序代码量很少,大部分工作都在设计和配置中间件上。
小女巫 该用户已被删除
6#
发表于 2015-2-10 07:15:19 | 只看该作者
如果你学过HTML,那么事情要好办的多,如果没有,那你快去补一补HTML基础吧。其实JSP中的Java语法也不多,它更象一个脚本语言,有点象ASP。
7#
发表于 2015-2-22 22:40:40 | 只看该作者
还好,SUN提供了Javabean可以把你的JSP中的 Java代码封装起来,便于调用也便于重用。
兰色精灵 该用户已被删除
8#
 楼主| 发表于 2015-2-26 20:30:17 | 只看该作者
让你能够真正掌握接口或抽象类的应用,从而在原来的Java语言基础上跃进一步,更重要的是,设计模式反复向你强调一个宗旨:要让你的程序尽可能的可重用。
小妖女 该用户已被删除
9#
发表于 2015-3-8 17:19:08 | 只看该作者
是一种由美国SUN计算机公司(Sun Microsystems, Inc.)所研究而成的语言
柔情似水 该用户已被删除
10#
发表于 2015-3-11 00:27:19 | 只看该作者
是一种语言,用以产生「小应用程序(Applet(s))
山那边是海 该用户已被删除
11#
发表于 2015-3-15 21:31:40 | 只看该作者
让你能够真正掌握接口或抽象类的应用,从而在原来的Java语言基础上跃进一步,更重要的是,设计模式反复向你强调一个宗旨:要让你的程序尽可能的可重用。
海妖 该用户已被删除
12#
发表于 2015-3-20 09:48:50 | 只看该作者
是一种将安全性(Security)列为第一优先考虑的语言
再现理想 该用户已被删除
13#
发表于 2015-3-24 13:43:24 | 只看该作者
是一种使网页(Web Page)由静态(Static)转变为动态(Dynamic)的语言
分手快乐 该用户已被删除
14#
发表于 2015-3-25 04:20:08 | 只看该作者
Java 不同于一般的编译执行计算机语言和解释执行计算机语言。它首先将源代码编译成二进制字节码(bytecode),然后依赖各种不同平台上的虚拟机来解释执行字节码。从而实现了“一次编译、到处执行”的跨平台特性。
乐观 该用户已被删除
15#
发表于 2015-4-6 09:03:19 | 只看该作者
关于设计模式的资料,还是向大家推荐banq的网站 [url]http://www.jdon.com/[/url],他把GOF的23种模式以通俗易懂的方式诠释出来,纯Java描述,真是经典中的经典。
若天明 该用户已被删除
16#
发表于 2015-4-11 07:09:51 | 只看该作者
Java语言支持Internet应用的开发,在基本的Java应用编程接口中有一个网络应用编程接口(java net),它提供了用于网络应用编程的类库,包括URL、URLConnection、Socket、ServerSocket等。Java的RMI(远程方法激活)机制也是开发分布式应用的重要手段。
谁可相欹 该用户已被删除
17#
发表于 2015-4-16 00:08:56 | 只看该作者
我大二,Java也只学了一年,觉得还是看thinking in java好,有能力的话看英文原版(中文版翻的不怎么好),还能提高英文文档阅读能力。
再见西城 该用户已被删除
18#
发表于 2015-4-16 11:09:34 | 只看该作者
另外编写和运行Java程序需要JDK(包括JRE),在sun的官方网站上有下载,thinking in java第三版用的JDK版本是1.4,现在流行的版本1.5(sun称作J2SE 5.0,汗),不过听说Bruce的TIJ第四版国外已经出来了,是专门为J2SE 5.0而写的。
灵魂腐蚀 该用户已被删除
19#
发表于 2015-4-26 09:11:51 | 只看该作者
那么我书也看了,程序也做了,别人问我的问题我都能解决了,是不是就成为高手了呢?当然没那么简单,这只是万里长征走完了第一步。不信?那你出去接一个项目,你知道怎么下手吗,你知道怎么设计吗,你知道怎么组织人员进行开发吗?你现在脑子里除了一些散乱的代码之外,可能再没有别的东西了吧!
简单生活 该用户已被删除
20#
发表于 2015-4-28 23:59:36 | 只看该作者
那么我书也看了,程序也做了,别人问我的问题我都能解决了,是不是就成为高手了呢?当然没那么简单,这只是万里长征走完了第一步。不信?那你出去接一个项目,你知道怎么下手吗,你知道怎么设计吗,你知道怎么组织人员进行开发吗?你现在脑子里除了一些散乱的代码之外,可能再没有别的东西了吧!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-12-22 17:05

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表