Qt Service Framework

Almost all Qt platforms have some form of native service framework (e.g. COM on Windows , DBUS on Linux, Symbian S60 LIW/SAPI etc). However, cross platform development of services and clients is much more difficult. Each platform has different capabilities, APIs and limitations.

The aim of the Qt Service framework is to enable easy development of services and a unified way of accessing them. Qt services provider can interact with platform specific services without exposing the platform specifics to clients. This initial release focuses on in-process, aka plug-in based services. Clients can access shared or individual instances of the same service as long as the access happens from within the same process. Support for out-of-process services is planned for later on, as it requires improved signal/slot based IPC communication.

Each service is exposed via a QObject pointer which means that clients can interact with service objects via the Qt MetaObject system. In fact clients can introspect service objects and therefore access any function, signal, slot or property that has been registered via the meta object system without having to include service specific header files. This is particularly interesting for non-native environments, such as a Qt WebKit, which can embed arbitrary QObject instances into web pages and thus makes the service object accessible via JavaScript.


One of the exiting reasons why the Service Framework is part of the Mobility program is that we are hoping that it will be the common framework for future Nokia mobile platform releases. We expect that each Nokia mobile platform will use the same interface name space and in combination with other planned Mobility API's, such as Bearer Management (also known as Connection management) or a Contacts API, it will enable true cross platform development.

If you want to run the example or just play around with it, grab the full source code from the public Gitorious repository.

Blog Topics: