JAVA网页编程之CCM 简介仓酷云
而学习JAVA我觉得最应该避免的就是:只学习,不思考,只记忆,不实践!组件为何要用软件组件:1.组件能够交换和晋级
2.下降了体系庞大度,分而治之
3.可重用组件,界说为
1.功效和数据之间的协同定位,发生聚合
2.封装软件模块以削减耦合;将组件的利用者与数据存储和功效完成断绝
3.不管形态怎样,供应一个独一的身份ID基于组件的软件的方针是,在体系内,创立事情优秀的高聚合的模块;经由过程分歧义务模块的分别,下降组件的耦合度。这就请求体系计划职员从一个对象标准向显式界说对象依附的表达变化,并经由过程为依附界说接口来完成面向对象道理的扩大。
CCM与EJB和COM
直到1999,唯一两种server-sidetransactionprocessing-oriented组件模子:MTS/COM+modelandSun"sEJBmodel。直到1999岁尾,CORBA(言语中性、平台有关、刊行商中性,可谓散布式对象盘算两头件的典型,)3.0提出了第三种server-side组件模子:CCM。
作为CORBA3.0的亮点,CCM,是为了与MicrosoftTransactionServer(MTS)/COM+,.Net(平台专有的)和Java(言语专有的)举行合作提出的,标准了一个创立即插即用(plug-and-play)对象的框架;这将有助于集成别的基于对象的手艺,出格是Java和EJB;CCM完成了CORBA与Java,COBOL,COM/DCOM,C++,Ada,andSmalltalk等的无缝集成。
只管CCM部分地是基于EJB的,但CCM远不止于此,如OMG主席兼CEO,RichardSoley所说:CORBA不但关于Java的,只管我们为将Java集成到平台中做了大批事情,但我们还必要如许一个模子事情在C++,COBOL,SmallTalk,ADA等别的言语上,那就是CCM。把言语偏好放在一边,CCM所做的就是将怎样界说组件接口尺度化了。
CCM不象MTS,而与EJB十分类似。OMG的CCM标准是Sun的EJB标准的言语中性的超集;CCM标准假定组件和容器(containers/servers)能够用任何言语完成并能够在任何平台上运转,条件是用CORBA供应两头件的通信撑持。
CCM远比EJB模子庞大,由于它要供应很多选项撑持分歧平台上的面向对象言语。OMG的组件模子界说为OMA的元对象举措措施(MetaObjectFacility,即MOF)的一个表面,这包管了模子自己更严厉;这也意味着它能够体系地与别的MOF表面交互,如UML、XMI、OMG的事情流标准、和OMG未来的贸易对象尺度。除有助于与别的标准的跟尾外,CCM更准确的标准供应了比EJB更初级的特性。如,只管EJB模子撑持组装形貌器(assemblydescriptor),但从整体上元模子在形貌一个组件上不太准确,因而束厄局促了开辟职员的四肢举动;相反,CCM创建在更准确的元模子之上,并撑持更庞大的组装。利用CCM,基于声明的撑持和使用的多个接口,大概基于声明的公布和使用的事务,开辟者能够无效地将这些组件接洽起来。统一开辟者还能够形貌那些部分是主机协同定位的那些是历程协同定位的。
别的,CORBA3.0增添了CORBA剧本言语标准,这将简化CORBA开辟,并使得利用剧本组合组件成为大概。
Inprise,IBM,BEASystems,andIONATechnologies都声明将撑持CORBA3.0。但Oracle,SunandIBM好象对CCM的呈现得到了乐趣。
明显,完成CCM容器和Server的产物能够埋没很多细节,有些还能够只完成CCM标准的一部分——就象有的CORBA产物大概就选择撑持几个OMG服务。今朝,只要两家商家提出完成CCM(IONA和BEA),并也都只是完成中心CCM。
CORBA2.x的缺点
只管传统的CORBA(包含2.3之前的版本)对象模子供应了一个尺度的两头件框架使得CORBA对象能够互操纵,CORBA界说了软总线使得客户程序能够引发对象上的操纵而不论这个对象在当地仍是远处,并供应了有尺度接口的对象服务(如naming,trading,andeventnotification.)使得开辟职员能利用分歧供给商供应的服务来集成和组装复杂的散布式使用和体系,但仍是有一些需求没有办理(这些缺点简单招致紧耦合):
[*]没有一个设置对象完成的尺度体例,如,对象完成的公布、安装、激活等。因而体系计划职员就不能不利用出格地战略来实例化体系中地一切对象。
[*]短少对CORBAserver中大众编程术语地撑持,等候着能主动天生大众用例程序。如,只管POA供应了对象注册、激活、往活地尺度接口和充足天真地战略来设置服务地举动,但良多使用程序只必要个中地部分派置,并且开辟职员还要进修这些战略以失掉希冀地举动。
[*]难于扩大对象地功效。在传统地CORBA对象模子中,对象只能经由过程承继(而不是组合)来扩大,使用程序开辟职员必需先界说一个IDL接口、完成该接口、并在一切server中设置该完成。但CORBAIDL的多重承继是出缺陷的,由于有的言语不撑持重载;别的,使用程序大概用统一个IDL接口屡次公布服务的多个完成或多个实例,但多重承继使得不成能不止一次的公布统一接口或客户断定哪个最上层的版本。
[*]可以使用多种CORBA对象服务其实不见得是功德。CORBA标准并没有强迫运转时利用哪个CORBA对象服务,对象开辟职员不能不在计划体系时用出格的战略来设置或激活这些服务。
[*]没有尺度的对象性命周期办理。只管CORBA对象服务界说了性命周期服务,但其利用也不是强迫性的。因而,客户必要显式的常识经由过程特别的体例来办理对象的性命周期。别的,经由过程对象性命周期办理对象,开辟职员必需分明这个现实,并必需界说帮助接口来把持对象的性命周期。界说这些帮助接口是对照单调的,大概的话,CORBA标准应将这一历程主动化。
OMGIDL老是同意您创立基于承继的对象干系。但是,良多时分,我们的计划必要撑持包括多个接口的对象,而这些接口是经由过程组合而不是经由过程承继来机关的。对象承继同意您按照另外一个类来界说这个类的完成,而对象组合同意您经由过程将对象汇合或组合在一同来界说一个类。OMGIDL必要表达组合和承继的才能。
CCM标准
概述
CCM标准扩大了CORBA2.x,包含events,exportedinterfacesandmethods,specialconfigurationinterfaces,pass-by-value(mobilecode),andmessaging/asynchronousinvocation等。
OMG的CCM尺度分为两部分中心的CCM标准和扩大的CCM标准。
中心的CCM标准撑持EJB组件;假如只完成了中心的CCM标准,就意味着有了一个CORBAcontainer和server来办理用Java写的EJB组件。
扩大的CCM标准包括了远远超越EJB组件和容器/Server的才能。完成了中心和扩大CCM标准的产物将可以撑持EJB的组件和用OMG所撑持的别的言语写的组件;开辟职员就可以够做凌驾如今的EJB模子的才能的事情了。
CCM经由过程界说一些特性和服务以同意使用程序编程职员完成、办理、设置和利用由在尺度情况下的CORBA服务集成的组件来扩大CORBA对象模子,这些CORBA服务包含persistence,security,transaction,andeventservices等。CCM尺度不但使得服务方更多的软件可重用,并且为静态设置CORBA使用程序供应了更年夜的天真性。
用CCM开辟的一个例子:
<br>
组件的开辟者界说组件完成一切撑持的IDL接口,并利用CCM供给商所供应的工具完成组件。云云这般,组件完成接上去能够被打包到一个DLL中。最初,使用CCM供给商所供应的拆卸机制将组件拆卸到一个组件server中,这个server是一个经由过程加载相干DLL来宿主组件完成的自力的历程。如许,组件就组件server中运转,并能够处置客户哀求了。
CCM的次要奉献就是以CORBA作为个中间件框架将下面所形貌的轮回的开辟历程尺度化了。
<br>
ClientView
界说一个组件:
interfaceA,B;//Forwarddeclaration.
componentFoosupportsA,B//Definitionofequivalentinterface
{//anditssupportedinterfaces.
providesW,X,Y,Z;//Facets(providedinterfaces.)
...//Othercomponentdefinitions.
};
一个组件Foo实例的援用看起来和接口Foo实例的一个一般的CORBA对象的援用一样。因而,一个对组件没无意识的客户程序能够经由过程组件的等价接口(equivalentinterface,interfaceFoo)的对象援用来激活操纵,等价接口独一标识该组件实例。作为一个一般的CORBA对象,组件的等价接口能够承继于别的接口,这些接口称为撑持接口(supportedinterface)。
为利用对象组合,CCM在组件中增添了小立体(facet,晶面也许更切实些),又称为供应接口(providedinterface),这些接口是由组件供应的,其实不必定和supportedinterface有关。CCM的facet是依据ExtensionInterface形式计划的,和Microsoft的COM中的接口类似。
CORBA::CCMObject中界说了一个Navigation接口,一切的组件的等价接口都承继于CORBA::CCMObject。客户可使用Navigation接口上的操纵来列举组件所供应的一切的facet。如许,客户程序只需由一个facet的援用就能够用尺度的get_component()操纵失掉组件的等价接口的一个援用。在CCM对象模子中增添facet年夜年夜加强了组件的可重用性。
ComponentLifecycleManagement:
关于server来讲,准确的处置组件的性命周期办理是主要的,一样,关于client来讲匡助组件server办理它们的组件实例的性命周期也是主要的。为将组件性命周期办理接口尺度化,CCM引进了一个新的关头字home来指定每一个组件的性命周期办理战略。
客户程序能够用home接口来把持它所利用的组件实例的性命周期。每一个home接口正确地办理一类组件。一个home能够是keyed也能够是keyless。keyless范例的home一般撑持factory的操纵以创立组件的新的实例;相反,keyed范例的home一般撑持finder的操纵以同意客户程序能经由过程它们所供应的键来检索耐久组件实例。客户端能够经由过程挪用home接口上的remove_component()操纵来关照组件server以唆使某个组件实例已不再必要了。组件server则依据它完成的战略来决意怎样删除该组件。
ComponentUsageScenarios:
要利用一个组件,客户必需先失掉该组件的home接口。但是,客户端必要一种尺度的引诱机制来定位组件的home接口。为简化这个引诱历程,所能失掉的组件的home的援用能够会合存储在一其中心数据库中,如许,一切要自引诱的客户端就能够从中央数据库来失掉一个援用。为利用这其中心数据库,CCM标准界说了一个HomeFinder接口,该接口相似于CORBA可互操纵名字服务INS。客户程序先用尺度的CORBA引诱APIresolve_initial_references(“HomeFinder”)来失掉HomeFinder接口的对象援用。CCMHomeFinder完成了组件home的一个目次服务,客户能够用它来定位并取得所要失掉的组件的home的援用。一旦,客户失掉了home接口的一个援用,它就激活得当工场操纵来创立或查找方针组件的援用了。
ComponentDeveloperView
Components:
CCM标准扩大了CORBAIDL以撑持组件。正如在CORBA对象模子中界说对象接口一样,组件开辟者利用IDL界说来定制组件所撑持的操纵。
一样平常来讲,组件编程模子勉励经由过程组合而不是承继来重用组件。为此,CCM组件能够供应有关的接口(facet)并撑持客户真个接口导航。但是,因为组件能够安装到组件server中,而组件server并没有任何逻辑常识来设置和实例化安装个中的组件,因而,组件必要别的的通用接口来匡助组件server安装和办理它们。在CCM中,组件能够经由过程成为port的一系列接口与内部实体,如ORB服务,别的组件,大概客户交互,这界说了一个调剂组件设置的尺度机制。
<br>
port机制有四种:
[*]lfacet
[*]lreceptacle
为利用组合,组件必要将它的部分操纵委派给别的组件,如许就必需失掉别的组件的援用,CCM称这些援用为“objectconnections”,并称这些联系关系的port名字为receptacle。receptacle供应了一种通用体例将某品种型的对象和组件联系关系起来。如许,组件就能够联系关系别的对象,包含别的组件,并激活这些对象上的操纵。组件开辟者可使用receptacle来唆使是不是要将组件与别的对象大概组件联系关系。一个插座是一个笼统,详细地在一个组件上体现为一系列创建和办理联系关系的操纵。一个组件大概展现零个活多个插座。
[*]leventsource/sink
除能够经由过程激活操纵互相感化外,组件还能够经由过程检测别的组件的形态并当形态改动事务产生时作出呼应来互相感化。这类松耦合的交互是基于Observer形式的,该形式广泛使用于散布式使用的开辟。组件开辟者经由过程在组件界说中声明事务源和事务槽facet来定制组件的乐趣,公布大概定阅事务。
CORBA组件模子撑持公布/定阅事务模子,该模子是计划来也CORBAnotification服务相顺应的。该模子所表露的接口供应了一个复杂的编程接口,它的语法能够映照到CORBAnotification语法的一个子集。
lattribute
为有助于设置组件,CCM标准扩大了attribute的观点。经由过程设置工具属性能够用来预置组件的设置值,并存取属性的操纵发生非常。组件开辟者能够使用这一特性,要想在体系设置完成后修正设置属性的话就能够抛处一个非常。标准并没无限制只能将属性作为设置以外的用处,但作为设置参数是间接撑持的。
这四个CCMport机制都能够为组件客户程序利用。除facet外,别的port机制基础上都是为了让CCM拆卸框架设置组件的。
Componenthome:
组件开辟者能够为要办理的组件供应多个home接口以完成分歧性命周期的办理战略。这些分歧的性命周期战略能够用来客户化组件实例的缓冲战略活在创立时候修正组件的举动。
Home接口上的操纵分为两类:
[*]l由组件模子界说的操纵。在某种意义上,这些操纵的默许完成必需由组件使能的ORB产物供应,不请求用户编程大概参与。这些操纵的完成必需有能够展望的分歧的举动。因而,这些操纵所请求的语法做了具体的标准。为便利起见,称这些操纵为正轨操纵。
[*]l由用户界说的操纵。这些操纵的语法是由用户供应的完成界说的。几近不克不及对这些操纵的举动做任何假定。为便利起见,称这些操纵为非正轨操纵。
ComponentConfiguration:
在CCM中,当组件安装到组件server中时会主动设置。Port机制供应了设置组件的接口,如,能够设置对象毗连,能够定阅或公布事务,能够设置组件属性。但是,使用开辟职员仍旧必要表达一个组件的流动设置,如,必需毗连甚么样的组件、组件将利用甚么样的事务通道来公布和吸收事务。CCM标准界说了一个尺度的组件设置接口,Components::StandardConfigurator,以匡助组件server设置组件。为进步组件完成的天真性,组件开辟者能够扩大该设置接口以指定怎样培养他们的组件。可选地,home接口能够取得一个组件设置对象的援用以在组件实例化的时分设置组件。
一个庞大的组件大概必要几个操纵来公布/定阅事务,并在设置完成前创建对象毗连。为避免客户会见一个未初始化完的组件,CCM框架将组件操纵的形态分为configurationphase和operationphase。CCM在每一个组件接口中界说了一个尺度操纵configuration_complete()。该操纵将被组件设置接口挪用以完成从configurationphase向operationphase的变化。组件开辟者可在configurationpahse后限定会见某些只能设置的操纵。
ComponentImplementationFramework(CIF):
很多贸易使用利用组件来模子化实际天下中的实体,如雇员、银行帐户和股票代办署理等。一般,这些实体由数据库实体代表,并永世保留。
CIF为机关组件完成界说了一个编程模子。组件和组件home的完成在CIDL中形貌。CIF利用CIDL形貌来天生编程框架skeleton以使得基础的组件举动主动化,包含导航、身份查询、激活、形态办理、性命周期办理等。作为一个编程笼统,CIF是计划来与现存的POA框架相顺应的,但将开辟职员与其庞大性相断绝。
CIF界说了一个用来办理组件的耐久形态和机关组件完成的编程模子。组件具有耐久形态,指当这些组件的实例向永世数据映照的时分,这些永世数据都能回想起来,不管什么时候组件实例激活。
CCM界说了一种形貌性言语,CIDL,以形貌组件和组件home的完成和耐久形态。
<br>
CIDL所天生的完成称为executor。Executor包括了一些主动完成,并供应了钩子办法以同意开辟职员能够增添定制的组件专门的逻辑。Executor能够打包到DLL中,并能够安装到撑持特定方针平台和编程言语的组件server中。
别的,CIDL服务天生组件形貌器(XML格局),它形貌了组件的特性和所形貌的组件所必要的服务的范例。
Containers:
组件完成依附于POA将抵达的客户哀求派发到响应的奴才上。CCMcontainer完成了怎样让组件于当地的运转时情况互感化,如创立它的POA品级树和定位CCM界说的通用服务等,并能在某个事务产生时经由过程回调关照组件。CCMcontainer编程模子界说了一系列的API以简化开辟和(或)设置CORBA使用。一个container封装一个组件完成并利用这些API向所办理的组件供应运转时情况。容器是为CORBA组件完成供应的server的运转时情况。该情况是用一个装载平台完成的,如许的平台是一个使用server或一个象IDE的开辟平台。典范地,一个装载平台供应了一个强健的运转情况以撑持大批用户并发。
典范地,这个运转时情况供应以下特性:
[*]l激活或钝化组件完成以回护无限的体系资本,如主内存。
[*]l为经常使用的服务供应一个适配层,包含Transaction,Persistence,Security,andNotificationservices。该适配层免除了客户程序经由过程前向转发哀求到CCM办理的真实的服务来定位这些服务的贫苦。
[*]l为回调供应一个适配层,容器和ORB能够用来在感乐趣的事务产生时关照组件,如来自事件服务或关照服务的动静。
[*]l办理POA战略以决意怎样创立组件的援用
<br>
客户程序间接会见组件的内部接口,组件经由过程container的API会见ORB的功效。每一个container办理一个由CIF界说的组件完成。关于所办理的一切接口,Container创立它本人的POA。这些接口能够以下分类:
内部API:这类接口由组件供应,并包含等价接口,facets,和组件的home接口。客户能够间接会见内部接口。
容器API:这类接口包含组件用来会见container撑持的服务的外部接口,和container能够在组件上挪用的回调接口。
经由过程这些接口的合作,container为所办理的组件供应了会见它的POA和别的CCM使能的ORB所供应的服务。
CCMcontainer还办理组件奴才的寿命,有四品种型的奴才寿命战略——methode,session,component,container——用来把持组件激活和往活的准时。
CCM供给商应界说一个ServantLocator来卖力撑持这些战略。一旦安装,POA就委派激活和钝化奴才的义务给这个ServantLocator。
method和session战略使得ServantLocator为每次激活办法或会话都要激活和钝化组件;而component和container战略分离将奴才的寿命战略交由组件和容器来决意。高质量的CCM容器应供应组件实例的缓存和与executor的静态毗连和断连,以到达组件功能和资本使用之间的均衡。
ComponentCategories:
CCM标准希冀分歧使用能经由过程分歧的体例利用组件。如,有些使用老是将组件实例映照到一个特别的耐久数据存储中,而别的的将基本没有耐久形态。为此,CORBA对象模子界说了CORBAusagemodel,该模子将对象援用分类为暂态或耐久的。CCMcomponentcategorymodel模子扩大了本来的CORBAusagemodel,以界说containerAPI范例和CORBAusage模子的正当组合。组件开辟者在CIDL文件中指定组件的组件目次,而且编译器服务天生和指定的组件目次相婚配的得当的接口。
<br>
service组件没有形态,而且只把持体系的举动,如wrappersforlegacyprocedural使用。session组件,如iterator对象,保护一个临时的形态,该形态一般与事件相干联。process组件,如businessprocess对象,有一个客户不客见的耐久形态,并大概与事件相干联。entity组件,如inventory组件,大概具有与事件相干联的操纵,并有对客户可见的耐久形态,实体组件必需经由过程键举行索引。
为办理有和没有耐久形态的组件援用,容器编程模子界说了两类容器接口:(1)sessioncontainer接口,用来办理暂态组件,和(2)entitycontainer接口,用来办理耐久组件。容器编程模子用CORBAusage模子来指定在一个container、它的POA和CORBA服务,如Notification和Transaction服务,之间所请求的交互形式。进一步,CCM容器编程模子能够接纳POA的初级特性来完成多个CORBA对象利用单个奴才。别的,为回护内存资本,一个容器能够决意是不是在必要的时分激活对象。
PackagingandDeployment:
履历标明创建可重用的组件必需在供应界说优秀的感化域公道的功效和供应充足的天真性和通用性以到达为多种大概使用程序可用之间做处困难的折中。
在年夜范围的散布式体系中,组件完成大概被多个server装载,一般这些server用分歧的完成言语,分歧操纵体系,分歧的编译器。乃至,组件完成经常依附于别的的组件完成。
为办理组件的打包和装载和协同定位等成绩,CCM界说了尺度的手艺和形式以简化组件开辟者打包和装载组件的事情。CCM利用OpenSoftwareDescription(OSD)来形貌组件及它们之间的依附性,OSD是由WWW协会制订的XMLDocumentTypeDefinition(DTD)。组件打包到DLL中,包形貌器是切合OSDDTD的XML文档,包形貌器形貌了DLL的内容和其依附性。
组件能够依附于别的组件,别的,组件大概请求它所依附的组件经由过程包形貌器协同定位。
除在CIF中界说了组件形貌器外,CCMOSD还界说了componentassemblydescriptor,这些形貌器特性化了关头的组件装载信息,如汇编指令和交织毗连的拓扑布局。能够界说个尺度的汇编接口以撑持主动装载。CCM使能的ORB所撑持的汇编机制使用在组件形貌器和别的开辟者所指定的汇编指令事情。装载机制同意新的或修正的组件的远程安装和激活。
ORB扩大
CCM标准增添了很多ORB扩大以简化CCM框架的完成。这些扩大中的年夜部分其实不间接影响组件开辟职员完成组件,但有些扩大匡助开辟职员进步组件的功能或简化需要的事情。扩大次要包含以下几个方面:
Locality-constrainedinterfaces:
CCM引进了新的关头字local来界说仅限当地利用的接口的界说,并削减了一些不置可否的中央。这对以server为中央的组件开辟长短常主要的,由于这有助于进步功能和削减内存裂缝。
ExtensionstotheInterfaceRepository:
IR是一个尺度的CORBA机制以同意使用程序在运转时发明IDL接口和数据范例的界说。现实上,IR供应了CORBA的内省才能。CCM扩大了IR以撑持组件,并供应遍历一切组件接口的操纵。接口内省在CCM编程模子中起了次要的感化,由于这使得在运转时组件可以适配一个不懂得的组件。只管IR界说了一个组件内省机制,但承继于CCMObject的内省机制会更无效,由于在其上激活操纵是协同定位的。
ExtensiontoIDLLanguage:
在以往的CORBA标准中,IDL编译器依附于C预编译器的原文包括才能来导进内部的IDL机关;同时用#pragma指令来界说IRID。不幸的是,这些特性招致了分歧于C/C++言语的内部机关,别的C预编译器的原文交换并没有思索IDL的感化域划定规矩。因而,CCM标准扩大IDL言语的机关为导进界说在一个独自文件中的IDL范例的声明,并界说了一个尺度的机制来把持IRID。
OMGCIDL切合OMGIDL一样的词律例则,只管为形貌组件完成增添了一些新的关头字。OMGCIDL语法是OMGIDL语法的一个扩大,OMGCIDL是一个形貌性的言语,CIDL文件必需利用“.cld”扩大名。
一个组件的界说是一个接口界说的特别化和扩大。component关头字是CIDL的增加物之一。component同意IDL计划者在其主体内包括该组件的任何属性声明,和连统一起的组件立体(组件表露给外界的接口)和容器(组件利用的接口)的声明与该组件大概必要的任何事务的源和吸收器。但是,请注重,办法中不同意包括component关头字。这是由于我们不是在创立接口-我们是在组合接口来构成“组件”。
有两个组件程度:basic和extended,都是经由过程组件home办理的,但它们所具有的才能是分歧的。基础组件供应了一种复杂的机制来组件化一个尺度的CORBA对象,它在功效上与EnterpriseJavaBean中界说的一个EJB十分类似;扩大组件供应了更丰厚的功效。基础组件不撑持facet。
一切立体、容器、事务源、事务吸收器和属性的声明都映照到天生等价接口(CIDL标准用这个术语来称呼)的操纵。我的了解是CORBA3.0CIDL编译器会为您从组件界说主动天生等价接口。
等价接口中的操纵同意组件的客户机检索其立体的援用。除此以外,一切组件从组件基础接口CCMObject那承继,该基础接口供应了带一样平常导航操纵(经由过程Components::Navigation接口)的等价接口。
Components::Navigation功效:
moduleComponents{
valuetypeFacetDescription{
publicCORBA::RepositoryIdInterfaceID;
publicFeatureNameName;
};
valuetypeFacet:FacetDescription{
publicObjectref;
};
typedefsequence<Facet>Facets;
typedefsequence<FacetDescription>FacetDescriptions;
exceptionInvalidName{};
interfaceNavigation{
Objectprovide_facet(inFeatureNamename)
raises(InvalidName);
FacetDescriptionsdescribe_facets();
Facetsprovide_all_facets();
Facetsprovide_named_facets(inNameListnames)
raises(InvalidName);
booleansame_component(inObjectref);
};
};
天生等价接口是用来供应组件接口导航。一切组件接口城市承继它。假如您熟习COM天下,这会使您想起来自IUnknown的QueryInterface()和在CoCreateInstanceEx()中利用的Multi_QI布局。经由过程该导航供应相似以下的举动:
[*]lprovide_facet()办法前往由name参数暗示的立体的援用,大概假如没有发明由谁人name参数暗示的立体,则前往InvalidName非常。
[*]ldescribe_facets()操纵前往由组件供应的一切立体的序列。前往的值范例FacetDescription将包括RepositoryId和该立体的称号。
[*]lprovide_all_facets()相似于describe_facets,但前往的值范例如今将包括撑持每一个立体的对象的援用。
[*]lprovide_named_facets()将取一列称号,并前往包括names参数中立体的形貌和援用的序列(在布局上与provide_all_facets()中前往的布局是分歧的)。
[*]lsame_component()将同意客户机决意是不是两个援用属于统一个组件实例。该办法是组件完成相干。
基于CORBA的体系,IDL是基础的构建手艺。经由过程扩大CIDL,OMG保护了其言语战争台的中立,但推进了却合坚固工程准绳的软件尺度。
相干手艺
EnterpriseJavaBeans(EJB):
CCM标准几近是在EJB的基本上建模的。与EJB分歧,CCM利用CORBA对象模子作为底层的对象互操纵框架,从而不范围于特定的编程言语。鉴于这两种手艺十分类似,CCM还专门界说了这两个尺度之间的尺度映照。因而,经由过程利用得当的桥接手艺,CCM组件能够体现为关于EJB来讲的EJBbean,EJBbean也体现为CCM组件。EJB也撑持CORBAIIOP作为其通信框架。CCM和EJB是互补的。
MicrosoftCOM+:
与CORBA分歧,Microsoft的COM+最后是计划来撑持组件的协同定位的,厥后又增补了散布式COM对象的才能;别的COM+包括了经常使用的贸易服务,如MicrosoftTransactionService(MTS)。CORBA标准界说了CORBA对象和DCOM组件之间的桥接机制。但,于CORBA和EJB分歧的是,COM+仅范围于Microsoft平台。
JAVA是一种可以撰写跨平台应用软件的面向对象的程序设计语言,由升阳(SunMicrosystems)公司的詹姆斯·高斯林(JamesGosling)等人于1990年代初开发。 是一种为 Internet发展的计算机语言 接着就是EJB了,EJB就是Enterprise JavaBean, 看名字好象它是Javabean,可是它和Javabean还是有区别的。它是一个体系结构,你可以搭建更安全、更稳定的企业应用。它的大量代码已由中间件(也就是我们常听到的 Weblogic,Websphere这些J2EE服务器)完成了,所以我们要做的程序代码量很少,大部分工作都在设计和配置中间件上。 Java是一种计算机编程语言,拥有跨平台、面向对java 任职于太阳微系统的詹姆斯·高斯林等人于1990年代初开发Java语言的雏形,最初被命名为Oak,目标设置在家用电器等小型系统的程序语言 如果你学过HTML,那么事情要好办的多,如果没有,那你快去补一补HTML基础吧。其实JSP中的Java语法也不多,它更象一个脚本语言,有点象ASP。 Jive的资料在很多网站上都有,大家可以找来研究一下。相信你读完代码后,会有脱胎换骨的感觉。遗憾的是Jive从2.5以后就不再无条件的开放源代码,同时有licence限制。不过幸好还有中国一流的Java程序员关注它,外国人不开源了,中国人就不能开源吗?这里向大家推荐一个汉化的Jive版本—J道。Jive(J道版)是由中国Java界大名 鼎鼎的banq在Jive 2.1版本基础上改编而成, 全中文,增加了一些实用功能,如贴图,用户头像和用户资料查询等,而且有一个开发团队在不断升级。你可以访问banq的网站 当然你也可以参加一些开源项目,一方面可以提高自己,另一方面也是为中国软件事业做贡献嘛!开发者在互联网上用CVS合作开发,用QQ,MSN,E-mail讨论联系,天南海北的程序员分散在各地却同时开发同一个软件,是不是很有意思呢? 多重继承(以接口取代)等特性,增加了垃圾回收器功能用于回收不再被引用的对象所占据的内存空间,使得程序员不用再为内存管理而担忧。在 Java 1.5 版本中,Java 又引入了泛型编程(Generic Programming)、类型安全的枚举、不定长参数和自动装/拆箱等语言特性。 Java是一种计算机编程语言,拥有跨平台、面向对java 设计模式是高级程序员真正掌握面向对象核心思想的必修课。设计模式并不是一种具体"技术",它讲述的是思想,它不仅仅展示了接口或抽象类在实际案例中的灵活应用和智慧 应用在电视机、电话、闹钟、烤面包机等家用电器的控制和通信。由于这些智能化家电的市场需求没有预期的高,Sun公司放弃了该项计划。随着1990年代互联网的发展 学Java必读的两个开源程序就是Jive和Pet Store.。 Jive是国外一个非常著名的BBS程序,完全开放源码。论坛的设计采用了很多先进的技术,如Cache、用户认证、Filter、XML等,而且论坛完全屏蔽了对数据库的访问,可以很轻易的在不同数据库中移植。论坛还有方便的安装和管理程序,这是我们平时编程时容易忽略的一部份(中国程序员一般只注重编程的技术含量,却完全不考虑用户的感受,这就是我们与国外软件的差距所在)。 Java语言支持Internet应用的开发,在基本的Java应用编程接口中有一个网络应用编程接口(java net),它提供了用于网络应用编程的类库,包括URL、URLConnection、Socket、ServerSocket等。Java的RMI(远程方法激活)机制也是开发分布式应用的重要手段。 科学超级计算机、移动电话和互联网,同时拥有全球最大的开发者专业社群。 应用在电视机、电话、闹钟、烤面包机等家用电器的控制和通信。由于这些智能化家电的市场需求没有预期的高,Sun公司放弃了该项计划。随着1990年代互联网的发展 在全球云计算和移动互联网的产业环境下,Java更具备了显著优势和广阔前景。 在全球云计算和移动互联网的产业环境下,Java更具备了显著优势和广阔前景。 是一种为 Internet发展的计算机语言 其实说这种话的人就如当年小日本号称“三个月拿下中国”一样大言不惭。不是Tomjava泼你冷水,你现在只是学到了Java的骨架,却还没有学到Java的精髓。接下来你得研究设计模式了。
页:
[1]