UNO (Universal Network Objects)
The goal of UNO (Universal Network Objects) is to provide an environment for network objects across programming language and platform boundaries.
UNO objects run and communicate everywhere. UNO reaches this goal by providing the following fundamental framework:
UNO的目的是为网络对象提供跨平台和跨语言的运行环境,UNO对象可以在任何地方运行和通信。UNO是通过以下的基础框架来实现这个目的的:
1. UNO objects are specified in an abstract meta language, called UNOIDL (UNO Interface Definition Language), which is similar to CORBA IDL or MIDL.
UNO对象是用UNOIDL语言来描述的,它和CORBA的IDL或者MIDL相似。
From UNOIDL specifications, language dependent header files and libraries can be generated to implement UNO objects in the target language.
通过UNOIDL,与语言无关的头文件和库可以被生成,然后用对应的语言来实现。
UNO objects in the form of compiled and bound libraries are called components. Components must support certain base interfaces to be able to run in the UNO environment.
组件是UNO对象和帮助库的集合,组件必须实现一些interface,这样才能在UNO环境中执行。
2. To instantiate components in a target environment UNO uses a factory concept.
工厂概念被用来在UNO环境中实例化组件。
This factory is called the service manager. It maintains a database of registered components which are known by their name and can be created by name.
这个工厂就是service manager。它来维护一个已经注册了的组件的数据库,用来通过组件名获得组件,或者用组件名来创建组件。
The service manager might ask Linux to load and instantiate a shared object written in C++ or it might call upon the local Java VM to instantiate a Java class.
service manager有可能或让linux来加载和实例化共享对象(C++实现),或者使用本地java虚拟机来初始化java对象。
This is transparent for the developer, there is no need to care about a component's implementation language. Communication takes place exclusively over interface calls as specified in UNOIDL.
这个过程对开发人员是透明的,开发人员不需要关注组件的实现语言。通信是通过interface互斥的情况下来调用的。
3. UNO provides bridges to send method calls and receive return values between processes and between objects written in different implementation languages.
UNO通过bridge在不同的进程,不同的实现语言的对象之间,来发送方法调用,获得返回值。
The remote bridges use a special UNO remote protocol (URP) for this purpose which is supported for sockets and pipes.
远程桥是通过UNO的URP协议来完成这个工作的(sockets 或者pipes )。
Both ends of the bridge must be UNO environments, therefore a language-specific UNO runtime environment to connect to another UNO process in any of the supported languages is required.
桥的两端必须是UNO环境,所以一个特定语言实现的UNO环境连接到另外一个UNO环境(所以所支持的语言)是必须的,
These runtime environments are provided as language bindings.
这些运行时环境是通过语言绑定来实现的。
4. Most objects of OpenOffice.org are able to communicate in a UNO environment. The specification for the programmable features of OpenOffice.org is called the OpenOffice.org API.
大部分的OpenOffice.org对象都是可以在UNO环境中通信的。OpenOffice.org API.是用来通过给程序员来操作OpenOffice.org的接口。
The goal of UNO (Universal Network Objects) is to provide an environment for network objects across programming language and platform boundaries.
UNO objects run and communicate everywhere. UNO reaches this goal by providing the following fundamental framework:
UNO的目的是为网络对象提供跨平台和跨语言的运行环境,UNO对象可以在任何地方运行和通信。UNO是通过以下的基础框架来实现这个目的的:
1. UNO objects are specified in an abstract meta language, called UNOIDL (UNO Interface Definition Language), which is similar to CORBA IDL or MIDL.
UNO对象是用UNOIDL语言来描述的,它和CORBA的IDL或者MIDL相似。
From UNOIDL specifications, language dependent header files and libraries can be generated to implement UNO objects in the target language.
通过UNOIDL,与语言无关的头文件和库可以被生成,然后用对应的语言来实现。
UNO objects in the form of compiled and bound libraries are called components. Components must support certain base interfaces to be able to run in the UNO environment.
组件是UNO对象和帮助库的集合,组件必须实现一些interface,这样才能在UNO环境中执行。
2. To instantiate components in a target environment UNO uses a factory concept.
工厂概念被用来在UNO环境中实例化组件。
This factory is called the service manager. It maintains a database of registered components which are known by their name and can be created by name.
这个工厂就是service manager。它来维护一个已经注册了的组件的数据库,用来通过组件名获得组件,或者用组件名来创建组件。
The service manager might ask Linux to load and instantiate a shared object written in C++ or it might call upon the local Java VM to instantiate a Java class.
service manager有可能或让linux来加载和实例化共享对象(C++实现),或者使用本地java虚拟机来初始化java对象。
This is transparent for the developer, there is no need to care about a component's implementation language. Communication takes place exclusively over interface calls as specified in UNOIDL.
这个过程对开发人员是透明的,开发人员不需要关注组件的实现语言。通信是通过interface互斥的情况下来调用的。
3. UNO provides bridges to send method calls and receive return values between processes and between objects written in different implementation languages.
UNO通过bridge在不同的进程,不同的实现语言的对象之间,来发送方法调用,获得返回值。
The remote bridges use a special UNO remote protocol (URP) for this purpose which is supported for sockets and pipes.
远程桥是通过UNO的URP协议来完成这个工作的(sockets 或者pipes )。
Both ends of the bridge must be UNO environments, therefore a language-specific UNO runtime environment to connect to another UNO process in any of the supported languages is required.
桥的两端必须是UNO环境,所以一个特定语言实现的UNO环境连接到另外一个UNO环境(所以所支持的语言)是必须的,
These runtime environments are provided as language bindings.
这些运行时环境是通过语言绑定来实现的。
4. Most objects of OpenOffice.org are able to communicate in a UNO environment. The specification for the programmable features of OpenOffice.org is called the OpenOffice.org API.
大部分的OpenOffice.org对象都是可以在UNO环境中通信的。OpenOffice.org API.是用来通过给程序员来操作OpenOffice.org的接口。