|
|
Contents
IntroductionBefore explaining the concepts behind UNO, some problems that occurred in a C++ based, openoffice.org development effort, need to be presented.
General solutionThere is a general approach to solve the above problems; therefore, the question of “why should we use UNO”, will be answered in this section.
Here is why we are not using an existing component model: First, we cannot use Java Beans because it is not abstract, it is only usable in Java itself. Second, CORBA wouldn't be the right choice because there exists no specification for binary compatibility in one process and the communication between two components must be handled through the IIOP protocol. Third, COM/DCOM does not support exception handling, which is necessary to integrate smoothly into languages with native exception handling, such as C++, Java, etc. The IdeaFirst, we need to distinguish the difference between the Universal Component Environment (UCE) and UNO. UCE defines an environment in which components can be embedded and defines the API which must be supported by a component. The points 5 and 6, above, are solved with this technology. So, the UCE is on top of UNO. The construction of the UCE is documented in uce.html. The ideas of UNO are as follows:
How does this ideas solve the problems?I explain the special solution with UNO and use the stated points from the general solution.
Why our own object model?The main reason is that the other object models don't provide the full functionality. The COM/DCOM model does not provide exception handling. CORBA is normally used for remote communication and there is no local standard API between objects. Java RMI is only useful in a Java environment. So we can't use an existing standard to implement the object model we want to use. But if you look at our object model, then you see that we use the IIOP protocol in the remote case, and we use reference counting like COM to determine the lifetime of the interfaces.
|



