Development/Architecture/KDE4/Akonadi: Difference between revisions
Neverendingo (talk | contribs) (Marked this version for translation) |
(Removed page from translation) |
||
(2 intermediate revisions by the same user not shown) | |||
Line 1: | Line 1: | ||
'''Akonadi''' | '''Akonadi''' | ||
Communication, calendaring and keeping information about others are fundamental parts of your daily work and private life. | Communication, calendaring and keeping information about others are fundamental parts of your daily work and private life. | ||
As a provider of an application development framework and of a Free Software desktop runtime environment, KDE addresses this by tightly integrating with the PIM infrastructure provided by [http://www.akonadi-project.org/ Akonadi]. | As a provider of an application development framework and of a Free Software desktop runtime environment, KDE addresses this by tightly integrating with the PIM infrastructure provided by [http://www.akonadi-project.org/ Akonadi]. | ||
KDE's implementation of an Akonadi client library stack makes it easy to develop both applications using Akonadi as their data source as well as Akonadi agents for the actual access to the data's persistant storage. | KDE's implementation of an Akonadi client library stack makes it easy to develop both applications using Akonadi as their data source as well as Akonadi agents for the actual access to the data's persistant storage. | ||
== Concepts == | == Concepts == | ||
Akonadi's design follows the principle of separation of concerns, meaning that each component has a small, well defined role to fullfil in order to achieve a fully functional setup. | Akonadi's design follows the principle of separation of concerns, meaning that each component has a small, well defined role to fullfil in order to achieve a fully functional setup. | ||
There are three main categories of components, all of which are implemented as individual processes for increased system stability and implementation independence: | There are three main categories of components, all of which are implemented as individual processes for increased system stability and implementation independence: | ||
* Akonadi Server | * Akonadi Server | ||
* Akonadi Agents | * Akonadi Agents | ||
* Akonadi Applications | * Akonadi Applications | ||
=== Akonadi Server === | === Akonadi Server === | ||
The server category consists of two roles: control and cache. | The server category consists of two roles: control and cache. | ||
Control is implemented by a process called '''akonadi_control'''. It is the first to start and controls the life cycle of all components other than end user applications. | Control is implemented by a process called '''akonadi_control'''. It is the first to start and controls the life cycle of all components other than end user applications. | ||
Cache is implemented by a process called '''akonadiserver'''. It is the hub for the data flow, tracks changes and is responsible for system consistency, e.g. ensures unique identifiers, etc. | Cache is implemented by a process called '''akonadiserver'''. It is the hub for the data flow, tracks changes and is responsible for system consistency, e.g. ensures unique identifiers, etc. | ||
All communication with these two roles is implemented in the KDE client libraries for Akonadi and available to developers at different level of abstraction. | All communication with these two roles is implemented in the KDE client libraries for Akonadi and available to developers at different level of abstraction. | ||
{{tip|Thinking about the server as a proxy-like service helps to avoid misinterpreting its task, e.g. it is caching data on behalf of its clients, not interpreting or permanently storing it.}} | |||
=== Akonadi Agents === | |||
=== Akonadi Agents === | |||
The agent category describes processes which perform their task without human interaction. | The agent category describes processes which perform their task without human interaction. | ||
This includes a special role also referred to as Akonadi Resources, agents which transport data between the cache and the data's actual persistant storage locations, e.g. files. | This includes a special role also referred to as Akonadi Resources, agents which transport data between the cache and the data's actual persistant storage locations, e.g. files. | ||
The KDE client libraries for Akonadi provide convenience classes to ease development of generic agents as well as the resource subtype. | The KDE client libraries for Akonadi provide convenience classes to ease development of generic agents as well as the resource subtype. | ||
The KDE PIM project provides a set of commonly required implementations as part of their runtime module. | The KDE PIM project provides a set of commonly required implementations as part of their runtime module. | ||
=== Akonadi Applications === | === Akonadi Applications === | ||
The application category refers to the usual end user visible application, e.g. address book, calendar or e-mail program. Implementations of this category can sometimes be referred to as Akonadi Clients, since agents can be seen as part of the server-like functionality, both from the point of view of users as well as application developers. | The application category refers to the usual end user visible application, e.g. address book, calendar or e-mail program. Implementations of this category can sometimes be referred to as Akonadi Clients, since agents can be seen as part of the server-like functionality, both from the point of view of users as well as application developers. | ||
The KDE client libraries for Akonadi provide both a low level job based API as well as high level data models, views and standard actions. | |||
The KDE client libraries for Akonadi provide both a low level job based API as well as high level data models, views and standard actions. | |||
== Further reading == | |||
* | * [[Development/Tutorials#Personal Information Management (Akonadi)|Akonadi Tutorials]] | ||
[[Development/Tutorials#Personal Information Management (Akonadi)|Akonadi Tutorials]] | |||
* [http://api.kde.org/4.x-api/kdepimlibs-apidocs/akonadi/html/index.html Akonadi KDE API Documentation] | * [http://api.kde.org/4.x-api/kdepimlibs-apidocs/akonadi/html/index.html Akonadi KDE API Documentation] | ||
* | * [[Projects/PIM/Akonadi|Akonadi Project Wiki]] | ||
[[Projects/PIM/Akonadi|Akonadi Project Wiki]] | |||
[[Category:KDE4]] | |||
[[Category:KDE4]] | [[Category:Architecture]] | ||
[[Category:Akonadi]] | |||
[[Category:Architecture]] | |||
[[Category:Akonadi]] |
Latest revision as of 12:33, 9 February 2018
Akonadi
Communication, calendaring and keeping information about others are fundamental parts of your daily work and private life. As a provider of an application development framework and of a Free Software desktop runtime environment, KDE addresses this by tightly integrating with the PIM infrastructure provided by Akonadi.
KDE's implementation of an Akonadi client library stack makes it easy to develop both applications using Akonadi as their data source as well as Akonadi agents for the actual access to the data's persistant storage.
Concepts
Akonadi's design follows the principle of separation of concerns, meaning that each component has a small, well defined role to fullfil in order to achieve a fully functional setup.
There are three main categories of components, all of which are implemented as individual processes for increased system stability and implementation independence:
- Akonadi Server
- Akonadi Agents
- Akonadi Applications
Akonadi Server
The server category consists of two roles: control and cache.
Control is implemented by a process called akonadi_control. It is the first to start and controls the life cycle of all components other than end user applications.
Cache is implemented by a process called akonadiserver. It is the hub for the data flow, tracks changes and is responsible for system consistency, e.g. ensures unique identifiers, etc.
All communication with these two roles is implemented in the KDE client libraries for Akonadi and available to developers at different level of abstraction.
Akonadi Agents
The agent category describes processes which perform their task without human interaction. This includes a special role also referred to as Akonadi Resources, agents which transport data between the cache and the data's actual persistant storage locations, e.g. files.
The KDE client libraries for Akonadi provide convenience classes to ease development of generic agents as well as the resource subtype. The KDE PIM project provides a set of commonly required implementations as part of their runtime module.
Akonadi Applications
The application category refers to the usual end user visible application, e.g. address book, calendar or e-mail program. Implementations of this category can sometimes be referred to as Akonadi Clients, since agents can be seen as part of the server-like functionality, both from the point of view of users as well as application developers.
The KDE client libraries for Akonadi provide both a low level job based API as well as high level data models, views and standard actions.