分享
 
 
 

正确使用CORBA,ICE等分布式技术的一种思路

王朝other·作者佚名  2006-01-31
窄屏简体版  字體: |||超大  

1.1 前言目前分布式应用软件越来越多,但在如何平衡分布式应用和单机应用的处理性能有一些麻烦。另外就是从一种分布式技术迁移到另一种分布式技术也很困难。一个原因就是我们的上层应用代码和底层的分布式技术(CORBA,ICE,SOCKET)紧密相关,难以分割导致。本文给出一种分离具体分布式技术的设计方案,目的是强调一点:对于应用软件来讲,CORBA,ICE,SOCKET等具体分布式技术不是核心,核心是我们的客户需要的业务功能。

下面以CORBA和SOCKET(ASN.1协议)为例子说明这种分离架构。

1.2 实现方法1.2.1 原则:1. 所有业务功能都通过接口定义;

2. 所有使用业务功能的代码都必须通过接口工厂获取业务接口的实例

1.2.2 软件结构接口+类工厂的方式。保证任何一个业务模块(组件)对外(包括大平台内部各个业务模块或组件之间)提供的所有服务都是接口,同时提供类工厂让外部访问业务模块(组件)中某个接口的实现。

说明:

1) IExpand是需要外部定制的接口,当然可能存在多个,如果一个业务模块(组件)不需要外部定制,就不存在这个接口了;

2) IPlatform是提供外部使用的功能接口,当然可能存在多个;

3) IPlatformFactory是类工厂的接口,类工厂也用接口定义,是因为需要对外屏蔽底层通信细节,比如ASN.1,CORBA等;当然这个接口的定义应该是很少变化的;一般而言,一个业务模块或组件只需要一个类工厂的接口定义;

4) TFactory是一个类工厂的实现,这是外部唯一可见的一个实现类。

5) PlatformImpl是一个内部用标准C++开发的一个功能实现体,它对外部是不可见的。

所有业务都是利用这个核心架构来实现,下面考虑CORBA,ASN.1接口的适配方式,这两种方式都有一个共同点:都可以看作是CLIENT/SERVER结构,需要我们提供CLIENT/SERVER两端的外部接口

1.2.3 适配CORBA服务端利用Adaptor和delegate模式来屏蔽CORBA技术细节。

说明:

1) IServerIDL利用IDL语言定义IPlatform这个接口,是外部不可见的;

2) CorbaServerImpl从IServerIDL和IPlatform继承下来,将IServerIDL的任何调用转调IPlatform的接口实现;同时CorbaServerImpl还使用委托模式,将IPlatform的接口调用转调给PlatformImpl来实现,这样CorbaServerImpl在实现CORBA对象的时候仅仅是将CORBA数据结构转换为标准C++的接口,将CORBA调用转换为普通的C++API接口调用,它内部没有复杂的业务逻辑,实现非常简单

3) TCorbaServerFactory是内部负责创建CorbaServerImpl对象,外部完全看不到CORBA的任何信息

4) 这里没有标出IExpand接口,因为它与CORBA任何细节无关

1.2.4 对于CORBA客户端适配采用delegate模式来实现

说明:

1) IClientIDL是利用IDL定义的IPlatform接口,这是IDL编译器编译后的客户端的接口,这是外部不可见的

2) CorbaClientImpl IPlatform同时继承,将IPlatform接口的都转调用IClientIDL接口来实现,它是外部不可见的

3) TCorbaClientFactory负责创建CorbaClientImpl实例,对外屏蔽CORBA的实现细节

4) IExpand接口没有在图中出现,是因为它和CORBA的任何细节都无关

1.2.5 适配ASN.1服务端同CORBA的适配方式,采用Adaptor和Delegate模式来实现

说明:

1) IASN接口定义发送消息和接收消息两个接口

2) ASN.1ServerImpl采用Adpator模式和委托模式来实现,将IPlatform的接口转调用PlatformImpl来实现的,另外它分析收到的所有ASN.1的消息,将消息内容转换为IPlatform的接口调用,然后再将IPlatform接口调用的返回值组装为一个ASN.1消息发送出去

3) TASN.1ServerFactory内部负责ASN.1ServerImpl实例的创建,对外屏蔽ASN.1的任何技术细节

4) IExpand接口没有出现,是因为它和ASN.1的任何细节无关

1.2.6 对于ASN.1客户端的适配采用Adaptor模式来实现。

说明:

1) ASN.1ClientImpl将IPlatform接口调用转换为ASN.1消息发送出去,然后将收到的ASN.1响应消息转为为标准C++的数据结果作为IPlatform接口调用的返回值和输出参数

2) TASN.1ClientFactory对外屏蔽ASN.1的技术细节

1.2.7 最后应用方式总结从上面可以看出,对于外部用户来说,是内部是采用CORBA,ASN.1还是纯粹的C++API接口都没有任何区别。我们甚至可以同时提供这三种方式,用户根据需要进行选择。比如所有业务模块(组件)都是同机运行,我们可以放弃CORBA,ASN.1技术,以后要改为分布式组网方式,只需要替换为一个类工厂库即可。以后要支持一种新的分布式技术,只需要采用同样的方式实现一个适配层即可,上层业务的业务的所有实现都是可以重用的。

最后回到一点:应用软件的核心是业务不是底层分布式技术。

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有