Application Architecture Overview

APPARC provides access to a cached list of applications, and their properties, on the device. APPARC also provides a mechanism for launching applications and switching between tasks.


The main purpose of APPARC is to

  • manage and register applications with the device

  • scan the device for installed applications and associate data types to the applications based on the information in the registration file

  • load applications and manage the creation and destruction of application objects and document objects

  • support the registration of non-native applications

  • define a Server Application Framework, which allows applications to communicate through the client-server architecture

  • support multiple service types over the client-server link and establish a client-server connection to an already running server application

  • monitor the lifetime of the server application

  • define the basic polymorphic interfaces that applications must conform to, such as, CApaApplication and CApaDocument

  • provide a list of available control panel applications present on the device.

Key concepts and terms

Server Application Framework

The Server Application Framework provides generic service support over a client-server link, on which real services can be created. A service typically provides a client-side interface that clients can use directly, and a server-side interface that server applications have to implement.


The following diagram shows the interaction of APPARC with other components.

The following list describes the interaction between APPARC and each of the components depicted in the APPARC architectural diagram:

  • APPARC provides the basic behavior for GUI-based applications. APPARC also provides basic behavior for documents in a document-view based application. Uikon builds on the basic behavior that APPARC provides for GUI applications. PIM application components (Contacts and Calendar) derive the basic behavior for GUI-based applications from APPARC.

  • APPARC maintains a list of installed applications on the device. APPARC supports rule-based application launching which is implemented as ECOM plug-ins. These plug-ins define rules that enable APPARC to either deny or accept the application launch requests.

  • Software Install (SWI) allows installing, uninstalling and upgrading of native software on the device. When an application needs to be installed, SWI uses APPARC for launching applications if run-on-install or run-on-uninstall is specified.

  • When an application is launched APPARC interacts with the GDI and BIT GDI components to associate the application with the appropriate application icon, caption and display screen.

API summary




A class that defines the basic twin roles of an application class:

  • as a factory that creates concrete document objects

  • as a supplier of utility functions not specific to any particular instance of a document.


An application list change notifier that provides a notification whenever an application is added or deleted.


A class that provides information for launching an application. This class is often referred to as a command line and it contains

  • the name of the application EXE to be launched

  • the document name

  • a command code that defines the way an application is launched (the structure of this depends on the application to be launched).


The base class for all documents. A document contains the data associated with the content of the application.


A class that provides a list of all available control panel applications present on the device. This class is implemented as a linked list of CApaSystemControl.


The Service Registry stores associations between service-datatype pairs and applications. The service-datatype pair is the primary key for the registry.


The base class that provides a client-side interface for accessing server applications.


A session with the APPARC server providing access to a cached list of applications on the device.

Typical uses

Developing a GUI-based application

A GUI-based application can be developed using the CApaApplication and CApaDocument interfaces. For more information, see A Minimal UI Application.

Enumerating applications

APPARC provides a set of APIs that can enumerate the list of applications on the device. For more information, see Enumerating applications.

Accessing running applications

Applications running on a device are known as tasks. The TApaTaskList class is used to access applications running on a device, where each task can be an instance of the TApaTask class, which is used to manipulate or query tasks. For more information, see Accessing and manipulating running applications.

Creating a control panel application

APPARC provides an API to create a control panel application. For more information, see Creating control panel applications.

Creating a new service

The server application framework supports platform-level services between client and server applications. These services must be defined for client and server applications to communicate. For more information, see Creating a new service.

Using a service in a client

Clients and server applications interact through a common service, which adheres to a protocol defining the communication channel between the two. This inter-process communication channel also provides a security checkpoint for application capability checking and so on. Services provide useful functionality to clients. For more information, see Using a service in a client.

Implementing services in a server application

Server applications can have one or many services. Each service type has a unique identification (UID). For more information, see Implementing services in a server application.