论文部分内容阅读
CORBA系统中通常的对象传递方式是传递对象引用,通过传递对象引用,避免了传递复杂对象的系统开销和通信开销,实现了客户端与服务端实现的分离。随着分布应用的发展,为了满足新的应用需求,CORBA规范2.3版本中引入了对象传值(object by value)概念,在2.4.2版本中,加入了valuetype关键字,来实现对象传值。对象传值主要用于封装数据、业务逻辑简单的轻量对象,特别当接收方以只读方式访问对象的应用,将大大提高客户端的本地执行效率,减轻服务端的压力及网络流量。此外有了对象传值机制,CORBA可以实现和JAVA分布对象模型的自然互接、实现对象相互传递的互操作。本论文的工作旨在研究并提出和实现一种切实可行的对象传值方案,并在ORBUS的IDL C++编译器中扩充valuetpe,使IDL C++编译器支持对象传值功能。论文在深入研究CORBA valuetype规范和ORBUS系统及其IDL C++编译器原理、结构等相关技术的基础上,分析了对象传值的工作原理,提出了一个扩展CORBA IDL C++编译器,以支持valuetype的交互过程方案。在分析IDL C++编译器前端词法分析和语法分析的基础上,扩展了IDL C++编译器后端映射,根据valuetype规范,实现了valuetype的状态数据成员、操作、valuebox、继承、valuetype编码器/解码器、及接口传递valuetype对象等的映射。其次,通过对valuetype特性及本地一致性协议的研究,在本地一致性基础上,提出了一种改进的基于客户端TTL方式的valuetype对象副本一致性算法。使用这种改进的LC+TTL算法,不仅可以在有限的时间内保证所有对象副本一致,而且使系统的可缩放性大大增强,以适用更大规模的应用系统。最后,在遵从CORBA规范的ORBUS系统的IDL C++编译器上,实现了valuetype关键字,使IDL C++编译器支持对象传值功能,并经过系统测试,不仅证明了valuetype高效本地执行效率,而且验证了实现valuetype交互过程方案的可行性和正确性。