การออกแบบและพัฒนาส่วนขยายของคอร์บาเพื่อรองรับการเรียกใช้บริการที่เท่าเทียมกัน / สมบูรณ์ แซ่ลิ่ม = A design and development of a CORBA extension to support invocation to equivalent services / Somboon Lim
Service in CORBA can substitute for another only if the former has an interface that is a subtype of the latter’s. Also, when a client requests for a specific service instance that is not available, substitutability will not take place. Service substitutability will be more flexible if consideration is placed upon functionality of services rather than syntax of calls. This idea is supported by a research work where a mapping operator is used to transparently intercept an oldversion request and use mapping functions to transform the request into a new-version call to a new service. The interception is by impersonation i.e. the mapping operator has the same interface and instance name as the withdrawn old service. Nevertheless, if we would like to extend substitutability to two equivalent services that are not versions of each other, such impersonation will not be applicable since the service to be substituted still exists within the system; it has not been withdrawn. This thesis aims to design and develop a mechanism to extend service invocation in CORBA by providing for substitutability between equivalent services. This extension does not require the services to have version relationship to be equivalent and will support both ways of service discovery (i.e. via CORBA ORB or trading service). The mechanism is in the form of a preprocessor for client programs that discover services via ORB and an enhancement to the trading service for client programs that look for services in the trader. The mechanism enforces instance-level substitutability in such a way that it will detect if a requested service instance is not available and will redirect the request to a predefined mapping operator that will in turn forwards the request to a particular equivalent service instance. To achieve this, equivalence relationship information, kept in an interface repository (IR) and provided by the service provider of the substituting service, is necessary.