Distributed virtual bus is a unified base for interconnection among devices. It powers devices with distributed communication capabilities. With such capabilities, devices can quickly discover and connect to each other, allowing efficient task distribution and data transmission. Figure 1 shows the diagram of distributed virtual bus.
.. figure:: figures/virtual_bus.png
Figure 1 Distributed virtual bus
Distributed Device Virtualization
---------------------------------
The distributed device virtualization platform enables cross-device resource convergence, device management, and data processing so that multiple devices jointly function as a super virtual device. This platform virtualizes devices and fully utilizes their advantages by assigning the most appropriate hardware to execute particular user tasks. This ensures continuity of services while migrating between different devices. Figure 2 shows the diagram of distributed device virtualization.
.. figure:: figures/device_virtual.png
Figure 2 Distributed device virtualization
Distributed Data Management
---------------------------
Distributed data management leverages distributed virtual bus to manage application data and user data distributed on different devices. Under such management, user data is no longer bound to a single physical device, and service logic is separated from data storage. As your applications are running across devices, their data is seamlessly transmitted from one device to another, therefore creating a foundation for consistent and smooth user experience. Figure 3 shows the diagram of distributed data management.
.. figure:: figures/data_management.png
Figure 3 Distributed data management
Distributed Task Scheduling
---------------------------
Distributed task scheduling is designed based on technical features such as distributed virtual bus, distributed data management, and distributed profile. It builds a unified distributed service management mechanism (including service discovery, synchronization, registration, and invocation), and supports remote startup, remote invocation, remote connection, and migration of applications across devices. This way, your applications can select a suitable device to perform distributed tasks based on the capabilities, locations, running status, and resource usage of different devices, as well as user habits and intentions.
.. figure:: figures/task_scheduling.png
Figure 4 Distributed task scheduling
One-Time Development for Multi-Device Deployment
------------------------------------------------
HarmonyOS provides the application, ability, and UI frameworks, which allow you to reuse service and UI logic during application development. This way, you can develop your applications once, and then deploy them across a broad range of devices, improving your development efficiency. Figure 5 shows the diagram of one-time development and multi-device deployment.
.. figure:: figures/muti-device.png
Figure 5 One-time development and multi-device deployment
Unified OS for Flexible Deployment
----------------------------------
HarmonyOS leverages component-based and miniaturized-oriented designs to allow on-demand deployment for diversified devices, adapting to different hardware resources and business characteristics. Specifically, component dependencies are automatically generated based on the cross-compilation toolchain to form a tree diagram illustrating component dependencies, facilitating convenient development and making development available for various devices, regardless of their hardware capabilities.
- **On-demand component selection**: You can select required components based on hardware forms and requirements.
- **Mutable function set configuration**: You can tailor function sets for each component based on hardware resources and function requirements. For example, you have an option of configuring only certain components for the UI framework.
- **Associative inter-component dependencies**: You can have inter-component dependencies automatically generated based on the cross-compilation toolchain. For example, if you select components for the UI framework, their associative graphics engine-specific components will be automatically selected.