Fifth IEEE International Symposium on Object-Oriented Real-Time Distributed Computing. ZEN ZEN Towards Highly Towards Highly Configurable Real-time Configurable Real-time Object Request Brokers Object Request Brokers Raymond Klefstad, Douglas C. Schmidt, and Carlos O'Ryan University of California at Irvine Presented by: S. M. Sadjadi Software Engineering and Networking Systems Laboratory Department of Computer Science and Engineering Michigan State University www.cse.msu.edu/sens
28
Embed
Fifth IEEE International Symposium on Object-Oriented Real-Time Distributed Computing. ZEN Towards Highly Configurable Real- time Object Request Brokers.
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Fifth IEEE International Symposium on Object-Oriented Real-Time Distributed Computing.
ZENZENTowards Highly Configurable Towards Highly Configurable
Raymond Klefstad, Douglas C. Schmidt, and Carlos O'Ryan
University of California at Irvine
Presented by: S. M. Sadjadi
Software Engineering and Networking Systems Laboratory
Department of Computer Science and Engineering
Michigan State University
www.cse.msu.edu/sens
Acknowledgement: Douglas C. Schmidt Raymond Klefstad Carlos O'Ryan Other DOC members
Backgroud: The purpose:
– To support advanced R&D on distributed object computing middleware using an open source software development model.
The DOC Group is a distributed research consortium consisting of:– Vanderbilt University in Nashville, Tennessee. (southern office)– Washington University in St. Louis, Missouri. (midwest office)– University of California in Irvine, California. (west coast office)– Members at:
Siemens ZT in Munich, Germany. Bell Labs in Murray Hill, New Jersey. OCI in St. Louis, MO. …
Agenda: Motivation ZEN Solution Background
– CORBA and Real-Time CORBA– Java and Real-Time Java
ORB Generations Micro-ORB vs. Monolithic-ORB Virtual Component Pattern ZEN Architecture Concluding Remarks
Motivations: ZEN Project Goal:
– Supporting development of distributed, real-time, and embedded (DRE) systems.
DRE systems:– “The right answer delivered too late becomes the wrong answer.”
[ZEN]– Examples:
Telecommunication Networks (e.g., wireless phone services). Tele-medicine (e.g., remote surgery). Manufacturing Process Automation (e.g., hot rolling mills). Defense Applications (e.g., avionics mission computing systems).
DRE Challenging Requirements:– As Distributed Systems:
managing connections and message transfer.– As Real-Time Systems:
predictability and end-to-end resource control.– As Embedded Systems:
resource limitations.
ZEN’s Solution: Integration of the Best Aspects of:
– CORBA: Standards-based distributed applications
– Real-time CORBA: CORBA with Real-time QoS capabilities
– CORBA and Real-Time CORBA– Java and Real-Time Java
ORB Generations Micro-ORB vs. Monolithic-ORB Virtual Component Pattern ZEN Architecture Concluding Remarks
Solution:– Virtual Component:
Fine-grain– 48 separate classes
Client/Server pairing– Groups complementary
methods into a single class
Pluggable GIOP Message Handling:
Problem:– 8*2*3 makes 48 methods– Space overhead– Hard to modify
Pluggable GIOP Message Handling [ZEN]
Context:– GIOP defines 8 types of
messages– Each requires two marshal
and demarshal– Three versions: 1.0, 1.1, and
1.2
Pluggable Object Adapter:
Pluggable Object Adapter [ZEN]
Solution:– Virtual Component:
If the application plays the role of a server, at most one of POA types will be loaded.
Problem:– A POA is just necessary for
server applications.– Space overhead– Hard to add new standards
Context:– Maps client requests to the
servants– Different types of POAs:
The Standard POA Minimun POA Real-Time POA
Pluggable Transport Protocols:
Pluggable Transport Protocols [ZEN]
Solution:– Virtual Component:
Allows one (or more) desired protocol(s) to be loaded.
Only the required subclasses will be loaded dynamically.
Problem:– About 20 to 30 methods
required to handle the most common protocols.
– Space overhead– Hard to modify
Context:– GIOP can run over many
transport protocols.
– Each protocol roughly need 5 methods to implement.
– Each containing: Client-oriented classes Server-oriented classes
Pluggable CDR Stream Reader/Writer:
Pluggable CDR Reader [ZEN]
Solution:– Virtual Component:
Each CDRInputStream class in divided into two classes (for big and little endian).
Improve in space and performance (“if” executes once).
Problem:– each possible read or write for
each data type, such as readDouble() and readLong(), needs an if statement to check big/little endian.
– Space overhead
– Hard to modify
Context:– CORBA is platform independent
and must handle diverse end system instruction set.
– CORBA defines Character Data Representation for marshalling and demarshalling.
Pluggable Any Handler:
Pluggable Any Handler [ZEN]
Solution:– Virtual Component:
Removing Any methods. Keep minimal proxy object
(AnyReader and AnyWriter). The rest will be loaded on
demand.
Problem:– A lot of code is required to
support Any.– To read, write, marshal,
demarshal, and to insert and extract any from each type.
– Space overhead
Context:– Any used for generic services– Each any is preceded by a
type code of the value it contains.
– Many DRE apps do not use Any at all.
Pluggable IOR Parsers (cont.):
Pluggable IOR Parser [ZEN]
Solution:– Virtual Component:
Define an interface that parses and handles IORs.
Derive separate class strategies that handles each.
Load the class on demand.
Problem:– Parsing every possible format– Space overhead– Hard to modify
Context:– Interoperable ORB
References are CORBA object pointer.
– Variety of formats: “IOR:,” “FILE:,” “HTTP:,”
“CORBALOC:,” and “FTP:.”
Example IOR [ZEN]
Pluggable Object Resolver:
Pluggable Object Resolver [ZEN]
Solution:– Virtual Component:
An abstract base class with a factory method at the base.
Factory method takes a string and returns a ref to an object.
A naming convention is used.
Problem:– Cascade if statements to
check each object string name.
– Space overhead– Hard to modify
Context:– ORB::resolve_initial_reference() is
used to obtain references to ORB objects such as RootPOA and Naming.
– The number of objects are large and growing.
Pluggable Message Buffer Allocators:
Pluggable Allocator [ZEN]
Solution:– Strategy Pattern:
To support each algorithm
– Thread Specific Pattern To make them pluggable.
– Virtual Component: Dynamic on demand loading.
Problem:– Must include all possible
algorithms for flexibility. – Fast fit, buddy system, …– Space overhead– Hard to modify
Context:– To ensure efficient
interprocess communication and avoid unnecessary garbage collection.
– But which specific dynamic storage allocation algorithm?
ZEN Current Status: Functional Java-based ORB with POA, GIOP, IDL
compiler, etc. Interoperable with the TAO C++ ORB Missing: COS Services, DII/DSI Current focus is on:
– Factoring out more functionality from the ORB core to reduce footprint for embedded systems
– Completing Real-time CORBA support utilizing Real-time Java features
– Ahead-of-time Real-time Java native compilation– Using refection to determine ideal minimal configuration– Using aspects for static custom configuration
Concluding Remarks: ZEN Objectives:
– Supporting development of DRE systems Faster, easier, more extensible, and more portable
– Reducing the footprint– Providing an infrastructure for DOC
middleware R&D by releasing ZEN in open-source
Technologies integrated in ZEN:– CORBA and Real-Time CORBA– Java and Real-Time Java