aboutsummaryrefslogtreecommitdiffstats
path: root/src/ivicore/doc/src/ivigenerator/remotebackends.qdoc
diff options
context:
space:
mode:
Diffstat (limited to 'src/ivicore/doc/src/ivigenerator/remotebackends.qdoc')
-rw-r--r--src/ivicore/doc/src/ivigenerator/remotebackends.qdoc70
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}.
+
+*/