|
CORBA(Common Object Request Broker Architecture,公共对象请求代理体系结构,通用对象请求代理体系结构)是由OMG组织制订的一种标准的面向对象应用程 序体系规范。或者说 CORBA体系结构是对象管理组织(OMG)为解决分布式处理环境(DCE)中,硬件和软件系统的互连而提出的一种解决方案;OMG组织是一个国际性的非盈利组织,其职责是为应用开发提供一个公共框架,制订工业指南和对象管理规范,加快对象技术的发展。 OMG组织成立后不久就制订了OMA(Object Management Architecture,对象管理体系结构)参考模型,该模型描述了OMG规范所遵循的概念化的基础结构。OMA由对象请求代理ORB、对象服务、公共设施、域接口和应用接口这几个部分组成,其核心部分是对象请求代理ORB(Object Request Broker)。对象服务是为使用和实现对象而提供的基本服务集合;公共设施是向终端用户应用程序提供的一组共享服务接口;域接口是为应用领域服务而提供的接口;应用接口是由开发商提供的产品,用于它们的接口,不属于OMG标准的内容。ORB提供了一种机制,通过这种机制,对象可以透明的发出请求和接收响应。分布的、可以互操作的对象可以利用ORB构造可以互操作的应用。
CORBA标准由物件管理组织(OMG)设立并进行控制,CORBA定议了一系列API,通信协议,和物件/服务信息模型用于使得异质应用程序能够互相操作,这些应用程序用不同的程序语言编写,运行在不同的平台上。CORBA因此为定义明确的物件提供了平台和位置的透明性,这些物件是分布式计算平台的基础。
通常来说,CORBA把用其他语言开发的程序码和关于该程序码能力和如何调用该程序码的资讯包到一个套装(package)中,包成套装的物件则可以在网络上被其他程序(或CORBA物件)调用。 在这个意义上来讲,CORBA可以被看作是一个机器可读的文件档格式,类似于标头档(header),但是具有相当多的资讯。
CORBA使用一种接口定义语言用于刻画物件将呈现出来的接口。CORBA又规定了从IDL到特定程序语言,如C++或Java,实现的映射。这个映射精确的描述了CORBA资料类型是如何被用户端和服务器端实现的。标准映射的有Ada、C、C++、Smalltalk、Java、以及Python。 还有一些非标准的映射,为Perl和Tcl的映射由这些语言写的ORB实现。
CORBA的IDL只是IDL的一个例子。
在提供用户语言和平台中性的远端程序呼叫规范的同时,CORBA也定义了通常需要的服务,例如事务和安全。
CORBA(通用对象请求代理体系结构)是在当今快速发展的软件与硬件资源的情况下发展出的一种新技术。它可以让分布的应用程序完成通信,无论这种应用程序是什么厂商生产的,只要符合CORBA标准就可以相互通信。CORBA 1.1于1991年由OMG提出,同时还提出了接口定义语言Interface Definition Language,IDL)以及能够让客户/服务器对象在特定的ORB(对象请求代理)实现中进行通信。而1994年提出并被采纳的CORBA 2.0标准才真正实现了不同生产厂商间的互操作性。
ORB是一个在对象间建立客户/服务器联系的中件。使用ORB,客户可以调用服务器的对象或对象中的应用,被调用的对象不要求在同一台机器上。由ORB负责进行通信,同时ORB也负责寻找适于完成这一工作的对象,并在服务器对象完成后返回结果。客户对象完全可以不关心服务器对象的位置,实现它所采用的具体技术和工作的硬件平台,甚至不必关心服务器对象的与服务无关的接口信息,这就大大简化了客户程序的工作。既然能够这么方便,那ORB就需要提供在不同机器间应用程序间的通信,数据转换,并提供多对象系统的无缝连接。
我们通常编制客户/服务器程序时,常常需要自己定义通信协议,而协议的制定往往与硬件和实现的方法有关,而ORB能够简化这一过程。在ORB下,协议通过IDL语言进行定义,保证了一致性,为了照顾到灵活性,ORB允许程序员选择相应的操作系统,执行环境和编程语言。更重要的是它可以使原来的代码通过一定的方式重用。CORBA是面向对象标准的第一步,有了这个标准,软件的实现与工作环境对用户和开发者不再重要,可以把精力更多地放在本地系统的实现与优化上。
下面我们来看看CORBA的一些具体情况。CORBA被设计用来对不同对象系统进行集成,提供灵活的的对象调用与功能实现。下图是客户对象通过ORB调用服务器对象。
对象请求代理结构的大体工作过程就象上面的工作过程一样。客户将需要完成的工作交给ORB,由ORB决定由哪一个对象实例完成这个请求,然后激活这个对象,将完成请求所需要的参数传送给这个激活的对象。除了客户传送参数的接口外,客户不需要了解其它任何信息,这就大大节省了用户的开发精力。而下图着重说明ORB的接口结构。
这个图中的一些信息希望大家能够注意一下,在编程的时候不一定能够全部用上,但是它们还是很重要的。在提出请求时,客户可以使用动态调用接口或者OMG IDL句柄。当然用户也可以直接调用一些ORB内部的功能。对象实现通过OMG IDL产生的框架或通过动态框架接收到调用请求,在处理这些请求时,对象实现可以调用对象适配器和ORB。
对象的接口有两种定义方式,可以使用接口定义语言(称为OMG接口定义语言,OMG IDL)进行静态定义,这种语言根据进行的操作和传送的参数定义对象。另一种方法,可以将接口加入接口库服务中,这种服务代表作为对象的接口的组件,允许在运行时对这些成为组件的接口进行访问,这两种方法是等效的。下图表示的是客户使用句柄或动态调用接口进行访问的情况。
客户知道对象的类型和希望进行的操作(一般客户都知道这个,如果连需要进行什么操作都不知道,那就可笑了)客户可以通过访问一个对象的对象参考提出请求。客户可以通过调用句柄函数初始化调用,也可以动态提出请求。动态发出的请求和通过句柄接口发出的静态请求两者在格式是一样的,请求的接收者不可能知道这种请求是动态发出的还是静态发出的。下图是一个对象实现接收请求的示意图。
ORB定位合适的可以实现这个功能的代码,通过IDL框架或动态框架传向对象实现传送参数,并将控制权交给对象实现。框架是指定于接和对象适配器的,在实现请求的过程中,对象实现可以通过对象适配器获取一些ORB服务。在完成请求时,将控制权和输出数据返回给客户。不要被图给迷惑了,对象实现可以根据自己的需要选择需要的对象适配器使用。下图是接口和实现库的结构示意图。
上图显示了接口和实现住处如何对客户和对象实现是可用的,接口可以在OMG IDL或在接口库中实现,这种对接口的定义用于产生客户句柄和对象实现框架。对象实现信息在安装时提供,保存于实现库中,在传送请求时可以使用这个信息库中的内容。
对象请求代理这个结构在上图中并不需要作为组件单独实现,它由接口定义。任何提供正确接口的ORB实现都是可被接受的。接口可分为以下几大类:
1.对于所有ORB实现均相同的接口;
2. 指定于特定对象类型的操作;
3. 指定于对象实现的特定形式的操作;
不同的ORB可以采用不同的实现策略,加上IDL编译器,库和不同的对象适配器,这一切提供了一系列对客户的服务和对具有不同属性对象的实现。可以存在多个ORB实现,它们有不同的名称和不同的实现方法与调用方法,对于客户而言,客户可以同时访问由不同ORB实现管理的对象,当几个ORB共同工作时,它们必须能够区别它们各自的对象名(也就是对象参考),客户不管区别只管使用。ORB内核是ORB的一部分,它提供了对象的基本命名和请求通信机制。CORBA设计得可以支持不同的对象机制,它是通过在ORB内核上建立ORB来完成这一点的。
一个对象的客户可以访问此对象参考,并对对象进行操作。客户不清楚对象的内部结构,它只知道对象的接口和执行操作所需要的时间和空间等资源。虽然我们可以把客户想象为一个调用对象的进程,但是我们也不要忘记了对象也可以调用另外对象的服务。客户看到的ORB接口和人观念中的接口有差不多,这就为编程提供了帮助。客户不需要对代码进行改变就可以通过ORB实现功能,对象适配器只能由ORB或对象实现调用。
对象实现提供了对象的表现形式。通常实现由另一对象提供或由相应的软件提供,当然也可以自己编程实现。在某些情况下,对象的主要功能是非对象实体产生作用。在CORBA中可以支持对象的不同实现。通常,对象实现不依赖于ORB或客户请求,对象实现可以通过选择对象适配器选择和ORB相关服务来选择接口。
对象参考是需要在ORB内指定的信息,客户和对象实现相应于语言映射有对象参考的一个透明定义,这样就把实现的表示与参考隔离开了。两个ORB实现可能在选择对象参考表示时是不同的。所有的ORB必须提供相对于对象参考一致的语言映射,这使得程序能够独立于ORB对对象参考进行访问。
OMG接口定义语言(OMG IDL)通过对象的接口定义了对象的类型。一个接口由一些命名的操作和与这些操作相关的参数组成。请注意,虽然IDL提供概念框架用于描述对象,但不需要有IDL源代码供ORB工作。只要相同的信息以句柄函数或运行接口库的形式提供,特定的ORB就可以正常工作。IDL是一种方法,它使对象实现能够告诉潜在的客户,什么样的操作可以执行。从IDL的定义上可以将CORBA对象映射为特定的编程语言或对象系统。
不同的面向对象语言和非面向对象语言可以以不同的方式访问CORBA对象。对于面向对象语言而言,它希望看到的是对象的形式,即使对非面向对象语言来说,它所希望看到的也不包括具体的内部实现。将OMG IDL映射为编程语言的方法对于所有的ORB实现应该是一致的。这些映射可能包括数据类型的映射和调用ORB的过程(或函数)接口的映射。语言映射还定义了对象调用和客户(或实现)中的控制线程之间的相互作用。最普通的映射提供了同步调用,结果可以在过程完成时返回。其它的映射可以用来初始化调用并将控制权返回给程序,在这些情况下,附加的函数必须相应的同步功能。
为了映射非面向对象语言,将有一个对每个接口类型的程序接口。通常,句柄将提供访问OMG IDL定义的操作的机制。句柄调用对于ORB核心是私有的那部分ORB。如果有多于一个ORB,将会有对应于不同ORB的接口。在这种情况下,需要ORB和语言映射相互协调以访问正确的对象参考句柄。面向对象语言不需要句柄接口。接口允许对象动态调用,用户可以不必调用一个特定对象上的操作,他可以指定调用特定的对象。客户程序提供关于操作和参数类型的信息就可以了。
允许动态处理对象调用的接口是非常有用的,不是由与特殊操作相关的框架来访问对象实现,而是由一个提供访问操作名和参数的界面用一种类似于动态调用接口的方式来访问对象实现。动态框架界面可以由客户句柄或动态调用接口来调用,它们向动态框架接口发出对象请求。动态框架接口的基本思想是让所有的对象请求通过调用同一组例程来达到调用对象实现中方法的目的,这组例程便叫做动态调用例程DIR。
对象适配器是对象实现访问ORB提供的服务的主要方式由ORB提供的服务在一个对象适配器中经常包括:对象引用的产生和解释、方式调用、交互性安全、对象和实现的激活与释放、对象引用到实现的映射及实现的定位由于各个不同对象的对象粒度、生命周期等等。ORB内核无法为所有的对象提供一个统一、方便有效的界面。通过对象适配器的作用,可以将目的对象分成若干组,每组通过特定的对象适配器来满足其特定的需要,但这样一来,对象适配器的种类便会急剧膨胀,为了减少对象适配器的种类,CORBA给出了基本对象适配器(BOA),以满足大多数对象的需要,BOA提供了产生和解释对象引用、对请求进行认证、激活/去活实现 、激活/去活单个对象、通过框架调用方法等功能. 在提供这些功能时 ,BOA要用到一些与操作系统有关的知识 ,这些知识由实现仓库提供,实现仓库还存放对象实现的有关信息。
ORB接口一种直接对应于ORB的接口,它对于所有的对象接口,对象适配器都是一样的。大部的操作都由对象适配器,句柄,框架或动态调用实现,对于所有对象都需要的操作很少。接口库是一种服务,其中保存着接口信息,这些信息在ORB执行请求时会用得上。而且,当一个应用程序在调用一个未知接口的对象时,可以通过接口库了解能够在其上进行的操作。除了,它可以充当ORB功能外,实现库通常还保存与ORB对象实现相关的信息。实现库包括了一些信息,这些信息让ORB可以定位并激活对象的实现。实现库中的信息是特定于ORB或实现环境的,通常,实现的安装和控制策略是通过实现库实现的。除了,它可以充当ORB功能外,实现库通常还保存与ORB对象实现相关的信息。
一、CORBA的来源
●CORBA体系结构是对象管理组织(OMG)为解决分布式处理环境(DCE)中,硬件和软件系统的互连而提出的一种解决方案;
●OMG是一个世界性的非赢利论坛组织,成立于1989年,最初有3Com、AmericanAirlines、Cannon Inc、DataGeneral、HP、Philips Telecommunication N.M、SUN、Unisys八个成员,目前已超过700个成员,其目标是开发一种技术上先进和商业上可用,独立于厂商的软件工业规范;
●1991年OMG提出了CORBA1.1,定义了IDL接口定义语言,开发出对象请求代理ORB中间件,在客户机/服务器结构中,ORB通过一定的应用程序接口(API),实现对象之间的交互;
●1994年12月OMG完成了CORBA2.0,提出了IIOP(Internet Inter Object Protocol),用以规范不同厂家的ORB之间的真正互通,同时增加了互操作性和对C++及SmallTalk的匹配,OMG期望通过上述规范,建立一种“连接世界的体系结构”;
●CORBA 在面向对象的标准化和互操作上迈出了坚实的一步。使用CORBA,用户能在不知道软件和硬件平台以及网络位置的情况下透明的获取信息;
●CORBA自动进行许多网络规划任务如对象注册、定位、激活;多路径请求;分帧和错误处理机制;并行处理以及执行操作;
●作为面向对象系统中的通信核心, CORBA为当代的计算环境中带来了真正意义上的互联;
二、CORBA的含义及特点
●CORBA定义了一种面向对象的软件构件构造方法,使不同的应用可以共享由此构造出来的软件构件;
●每个对象都将其内部操作细节封装起来,同时又向外界提供了精确定义的接口,从而降低了应用系统的复杂性,也降低了软件开发费用;
●CORBA的平台无关性实现了对象的跨平台引用,开发人员可以在更大的范围内选择最实用的对象加入到自己的应用系统之中;
●CORBA的语言无关性使开发人员可以在更大的范围内相互利用别人的编程技能和成果, 是实现软件复用的实用化工具;
三、CORBA的一般用途
●存取来自现行桌面应用程序的分布信息和资源;
●使现有业务数据和系统成为可供利用的网络资源;
●为某一特定业务用的定制的功能和能力来增强现行桌面工具和应用程序;
●改变和发展基于网络的系统以反映新的拓扑结构或新资源;
四、CORBA的技术背景
●面向对象技术的兴起;
●客户/服务器模式的普遍应用;
●集成已有系统及通信和实现细节的需求;
●现有分布处理机制和方法存在着不足之处;
五、基于分布式对象计算的CORBA
●在CORBA环境中,应用程序的集成是基于面向对象模型的;
●CORBA通过分布式对象计算,即分布式计算和面向对象计算的结合,以实现软件重用,这是开发下一代软件的基础;
●分布式对象计算的组成
分布式计算和对象模型的结合:CORBA是这两者的完美结合,这两部分不仅带来了自身的优点,而且完善了对方的优点;
代理器的使用:CORBA使用代理器来处理系统中客户机与服务器之间的消息;
●什么是分布式计算
分布式计算是两个或多个软件互相共享信息;
大部分分布式计算是基于客户/服务器模型的;
分布式计算可以拥有稀有资源共享、平衡机器负载等优点,使计算机资源的使用更为有效;
CORBA采用一定的手段增强分布式计算:
●CORBA采用增强分布式计算的手段
允许客户机与器间灵活变化的关系;
加入一个称为代理的中介;
允许服务器有多个进程;
支持同步及异步两种通信形式;
●对象模型是对象计算中的概念,是考虑问题及其可能解决方案的概念性框架; 对象模型的基础是对象概念之上的,对象提供了把行为和属性结合成一单独实体的手段;
●使用对象模型具有以下优点:定义一个基于现实世界的系统模型
把系统逻辑地分成能完成特定任务的对象
当需求改变时扩展模块
● 在CORBA中分布式计算和对象模型的结合实现了相互促进,CORBA在分布式计算和对象模型环境中加入了下列内容:
●分布式计算方面的增强:对分布式计算环境,CORBA在环境中加入了特定对象的引用。在CORBA中,要完成某个操作,所需要做的仅仅是请求某个有能力完成该操作的对象去完成它,客户机不需要知道更多的信息;
对象模型方面的增强:对于对象模型,CORBA加入了代理器的概念。代理器使应用程序不需要知道对象在网络上哪个地方和对方是如何工作的就可以进行交互,只有代理器需要知道CORBA服务器和客户机在网络上的位置;
六、CORBA――通信中间件
●中间件是处于应用程序及应用程序所在系统的内部工作方式之间的软件;
●中间件把应用程序与系统所依附软件的较低层细节和复杂性隔离开来,使应用程序开发者只处理某种类型的单个API――其他细节则可以由中间件处理;
●CORBA可以被称为通信中间件,它可以看成是把应用程序和通信核心的细节分离的软件;
七、CORBA规范的技术特点
●引入了代理的概念;
●所实现的客户方程序与服务器方程序的完全分离;
●将分布计算同面向对象的概念相互结合;
●提供了软件总线的机制;
●分层的设计原则与实现方法;
八、CORBA产品一览
●IONA公司的Orbix ;
●Inprise公司的VisoBroler ;
●Digital公司的Component Broker ;
●IBM公司的Component Broker ;
●Sun Microsystems 公司的NEO、JOE;
●SunSoft公司的DOE ;
●东南大学开发研制的ORBUS;
九、CORBA服务的基本内容
在CORBA体系规范中定义了多种类型的服务(Service),如命名(Naming)、生存期(LifeCycle)、事件(Event)、事务(Transaction)、对象持久化(Persistent Objects)、查询(Query)、特征(Property)、时间(Time)等服务功能。
在CORBA规范中,没有明确说明不同厂商的中间件产品要实现所有的服务功能,并且允许厂商开发自己的服务类型。因此, 不同厂商的ORB产品对CORBA服务的支持能力不同,使我们在针对待开发系统的功能进行中间件产品选择时,有更多的选择余地。
下面介绍与分布式应用程序设计和开发关系密切的CORBA服务内容:
1. 对象命名服务(Naming Service)
在命名服务中,通过将服务对象赋予一个在当前网络空间中的惟一标识来确定服务对象的实现。在客户端,通过指定服务对象的名字,利用绑定(Bind)方式,实现对服务对象实现的查找和定位,进而可以调用服务对象实现中的方法。
2. 对象安全性(Security)服务
在分布式系统中,服务对象的安全性和客户端应用的安全性一直是一个比较敏感的问题,安全性要求影响着分布式应用计算的每个方面。对于分布在互联网中的分布式应用来讲,为了防止恶意用户或未经授权的方法调用对象的服务功能,CORBA提供了严格的安全策略,并制定了相应的对象安全服务。安全服务可以实现如下功能:
● 服务请求对象的识别与认证;
● 授权和访问控制;
● 安全监听;
● 通信安全的保证;
● 安全信息的管理;
● 行为确认。
CORBA系统将对象请求的安全性管理的功能交由ORB负责,系统组件只需负责系统本身的安全管理,使得基于分布式应用在安全性控制方面的责任十分明确。
3. 并发控制(Cocurrency Control)服务
CORBA规范中定义并发控制服务的目的在于实现多客户访问情况下的并发性控制和对共享资源的管理。
并发控制服务由多个接口构成,能够支持访问方法的事务模型和非事务模型。由于两种模型的引入,使得非事务型客户在访问共享资源时,如果该资源被拥有事务模型的方法锁定(Lock),则该客户转入阻塞状态,直到事务型方法执行结束,将共享资源锁打开,非事务模型的客户才能够访问该共享资源。
并发控制服务使多个对象能够利用资源锁定(Lock)的方式来对共享资源进行访问。在访问共享资源之前,客户对象必须从并发控制服务中获得锁定。在确认资源目前正在空闲时,获得资源的使用权。每个锁定是一个资源-客户对,说明哪个客户正在访问何种类型的资源。
4. 对象生命期服务(LifeCycle)
CORBA中的生命期服务定义和描述了创建、删除、拷贝和移动对象的方法。通过生命期服务,客户端应用可以实现对远程对象的控制。
利用命名(Naming)服务
实现分布式应用
在上篇文章中介绍的利用JavaIDL开发分布式应用时曾采用命名服务的方式。对象命名服务是ORB查找服务对象实现的一种简单的方式。
1. 功能需求分析和定义接口文件
本例的主要功能是模拟电话用户注册及电话号码查询业务,开发基于命名服务的分布式应用程序,中间件产品采用VisiBroker 4.5.1 for Java。
根据系统功能的定义,两种业务均属于电信业务的经营范围,因此定义模块名TeleCom。电话号码注册为电信业务管理功能范围,需定义该功能接口Registry,该接口内包含用户注册方法register();电话号码查询为用户服务功能范围,需定义接口User,该接口内包含查询个人电话号码方法getNumber()。经过上述分析后编写的IDL接口定义文件TeleCom.idl如下:
module TeleCom
{ interface User //接口User声明
{ //接口中getNumber方法的定义
int getNumber();
};
interface Registry //接口Registry声明
{ //接口中register方法定义,其中以string类型变量作为输入参数 ’方法返回User对象
User register(in string name);
};
};
上述接口定义文件经idl2java编译后,在当前接口文件目录中生成TeleCom子目录,该目录中包括UserPOA.java、RegistryPOA.java等文件。这些文件是客户端和服务对象实现功能的框架以及相关的支持文件。有兴趣的读者可以实际创建IDL文件,经IDL到Java语言的映射后,分析生成文件的格式。
2. 实现服务功能
(1)实现User接口的类UserImpl
根据系统分析确定的功能,定义接口User对应的实现类UserImpl的代码如下:
// UserImpl类继承定义在UserPOA.java中的UserPOA类
public class UserImpl extends TeleCom
.UserPOA
{ private int aNumber;
//
十、CORBA系统在CIMS中的应用
在CIMS环境下,应用通常是分布的,应用之间需要交换信息和数据,例如CAD和CAM之间,CAD、CAM和MRP II之间,甚至是不同的CAD应用之间都会发生数据的交互。分布式应用的开发,尤其是面向对象的分布式应用的开发,对于系统开发者而言是极具挑战性的。CORBA、C OM/OLE Automation和JavaBeans是目前针对此类应用的主要分布对象计算模型和支持系统。一般来说,如果所开发的应用只面向Windows平台(Windows 3.x/95/NT),那么使用COM 是最佳的选择;如果所开发的应用完全是使用Java语言编制的,那么就应该采用JavaBeans 的方案。但是,如果所开发的应用需要集成异构的平台,那么无疑应该选择CORBA。通过C ORBA系统的支持,分布应用的开发者可以采用不同的语言、操作系统和硬件平台来开发面向对象的分布式应用。当然,首要的条件是存在支持该种平台、操作系统和语言的CORBA系统。
利用CORBA系统进行分布对象应用的开发具有下面三个特点:①开发代价小、效率高。系统开发者只需要编写描述服务对象接口的IDL语言文件并安装描述文件,实现服务对象的功能即完成了全部的任务。其它的相关代码或者是由IDL编译器自动创建,或者是由ORB 类库提供,应用程序员并不需要编写例如网络通信、数据编码/解码、名址映射和安全管理的程序代码,从而可以把工作重点放到服务对象实现的过程中去。②通过CORBA系统的支持,一个服务对象可以透明地被分布在本地和网络上的客户所调用,扩大了服务对象的使用范围,为分布的客户所共享。③CORBA系统作为“软件总线”,可以为服务对象提供“ 即插即用”的功能,而且当对象实现改进或升级时,只要接口保持不变,客户代码无需作任何改动。
在CIMS的应用环境之下,CORBA系统的另一个十分重要的作用是集成已有的应用系统,这样的应用系统通常称为“遗留系统”(Legacy System)。“面向CIMS的并行工程集成框架关键技术”课题就是一个很好的例子。各个领域框架的应用系统,例如,机械领域的Pro Engi neer、电子领域的Mentor Graphics等等,需要通过CORBA系统集成到一起实现信息的交互和共享。集成的关键在于对遗留系统的封装和包裹(wrap),经过包裹,遗留系统就能够以OMG IDL的形式提供给用户,从而和新开发的面向对象的分布式应用同样处理。包裹的形式视不同的遗留系统而不同,对于能够提供用户调用接口的遗留系统,只要利用原有的调用来构造新的界面(必要时需要进行一定的扩充)即可;而对于比较封闭的遗留系统,集成的难度就大得多了,通常是利用文件作为中介来集成。不过,目前CAD、CAM和MRP II 的系统厂商在发展过程中也在逐步使自身的应用系统更加开放,向用户提供更灵活的控制手段,完全封闭的系统已经十分少见了,从而使集成工作也变得相对简单。
|
|