diff options
Diffstat (limited to 'src/ivicore/doc/src/ivigenerator/remotebackends.qdoc')
-rw-r--r-- | src/ivicore/doc/src/ivigenerator/remotebackends.qdoc | 70 |
1 files changed, 70 insertions, 0 deletions
diff --git a/src/ivicore/doc/src/ivigenerator/remotebackends.qdoc b/src/ivicore/doc/src/ivigenerator/remotebackends.qdoc new file mode 100644 index 0000000..064a062 --- /dev/null +++ b/src/ivicore/doc/src/ivigenerator/remotebackends.qdoc @@ -0,0 +1,70 @@ +/**************************************************************************** +** +** Copyright (C) 2018 Pelagicore AG +** Contact: https://www.qt.io/licensing/ +** +** This file is part of the documentation of the QtIvi module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:FDL-QTAS$ +** Commercial License Usage +** Licensees holding valid commercial Qt Automotive Suite licenses may use +** this file in accordance with the commercial license agreement provided +** with the Software or, alternatively, in accordance with the terms +** contained in a written agreement between you and The Qt Company. For +** licensing terms and conditions see https://www.qt.io/terms-conditions. +** For further information use the contact form at https://www.qt.io/contact-us. +** +** GNU Free Documentation License Usage +** Alternatively, this file may be used under the terms of the GNU Free +** Documentation License version 1.3 as published by the Free Software +** Foundation and appearing in the file included in the packaging of +** this file. Please review the following information to ensure +** the GNU Free Documentation License version 1.3 requirements +** will be met: https://www.gnu.org/licenses/fdl-1.3.html. +** $QT_END_LICENSE$ +** +****************************************************************************/ +/*! +\page remotebackends.html +\title QtIvi Remote Backends + +One of the features of the Qt IVI Generator is the possibility to create remote backends +that utilize the QtRemoteObjects module. +A remote backend may be an independently running process, even on a separate host machine, that can +be accessed by multiple clients, or frontends. Such frontends are e.g. the main infotainment system +UI, different applications running within the UI or mobile devices. + +\section1 Motivation + +The purpose of having remote backends is to enable the distribution of functionality and the sharing +of information. This may be between multiple processes and even between multiple host machines. +Separate processes improve the overall reliability of a complex system and make it possible to +separate computationally intensive code from the UI code. Additionally, remote backends can be +accessible by multiple frontend points, be it the central UI, separate applications or even mobile +devices or third party applications. +Combined with the automatic generation of code and uniform feature loading of QtIvi, the development +of distributed features comes with a minimal development overhead and interchangeability and +transparency on the UI code side. + +\section1 Code Generation + +The remote objects generator produces client side code as a QtIvi backend plugin and a remote server +stub. The client is generated using the \l {backend-qtro-template}{backend_qtro} template and the s +erver using the \l {server-qtro-template}{server_qtro} template. Both the plugin and the server +contain generated c++ code and an intermediate .rep -file that is further processed by Qt’s +\l [QtRemoteObjects] {Qt Remote Objects Compiler} {replica compiler} to produce the actual source +and replica classes. + +The generated plugin is loaded and used as any other QtIvi plugin and is interchangeable with any +other backend implementation with the same API. As all method calls over QtIvi feature interfaces +are asynchronous, the use of a remote backend is similar to any other type of backend. + +The generated plugin is buildable and usable as it is, and does not require further changes by the +developer. The task of the developer will be then to implement the intended functionality at the +server side. To support getting started with the server, there is a generated class that initializes +the connection. All connection parameters to the plugin and to the server are passed currently over +a config file, either in a default location or at an user specified path. + +For a steb-by-step introduction to remote backends, see the \l {ivicore/qface-ivi-remote}{Remote Backend Example}. + +*/ |