Week 32 contribution of PDK documentation content. See release notes for details. Fixes bug Bug 3582
<?xml version="1.0" encoding="utf-8"?>
<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
<!-- This component and the accompanying materials are made available under the terms of the License
"Eclipse Public License v1.0" which accompanies this distribution,
and is available at the URL "http://www.eclipse.org/legal/epl-v10.html". -->
<!-- Initial Contributors:
Nokia Corporation - initial contribution.
Contributors:
-->
<!DOCTYPE concept
PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
<concept id="GUID-940F3F6E-BA9C-5E19-9AC5-D848B5E175FB" xml:lang="en"><title>Application
Architecture Overview</title><prolog><metadata><keywords/></metadata></prolog><conbody>
<p>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. </p>
<section><title>Purpose</title> <p>The main purpose of APPARC is to </p> <ul>
<li id="GUID-869A9DDC-5BCE-58FE-A404-8B10B00ED539"><p>manage and register
applications with the device </p> </li>
<li id="GUID-C4C659F3-027E-5216-A0FD-DEA4A135081F"><p>scan the device for
installed applications and associate data types to the applications based
on the information in the registration file </p> </li>
<li id="GUID-37BADDBF-EFFF-56C6-9348-9CB8D162B8CF"><p>load applications and
manage the creation and destruction of application objects and document objects </p> </li>
<li id="GUID-4FBABF6C-D3E5-5086-A45B-90A5927185CF"><p>support the registration
of non-native applications </p> </li>
<li id="GUID-5A799FDF-A676-5538-BDE0-FCDAB7857631"><p>define a Server Application
Framework, which allows applications to communicate through the client-server
architecture </p> </li>
<li id="GUID-907A3B8B-EF8B-5280-B825-7C8D15038E50"><p>support multiple service
types over the client-server link and establish a client-server connection
to an already running server application </p> </li>
<li id="GUID-F4DCD71D-2713-5C7E-83AC-DE976DCD6ECD"><p>monitor the lifetime
of the server application </p> </li>
<li id="GUID-B11E42C5-4326-5A59-A07C-95AE266AEAE3"><p>define the basic polymorphic
interfaces that applications must conform to, such as, <xref href="GUID-C0297A58-2E39-3211-A2B4-C334192CE2A7.dita"><apiname>CApaApplication</apiname></xref> and <xref href="GUID-D7041709-1EBE-3E42-8E16-C7F62081AFB7.dita"><apiname>CApaDocument</apiname></xref> </p> </li>
<li id="GUID-AED566ED-D731-5A2D-956A-41A5AD0B0943"><p>provide a list of available
control panel applications present on the device. </p> </li>
</ul> </section>
<section><title>Key concepts and terms</title> <dl>
<dlentry>
<dt>Server Application Framework</dt>
<dd><p>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. </p> </dd>
</dlentry>
</dl> </section>
<section><title>Architecture</title> <p>The following diagram shows the interaction
of APPARC with other components. </p> <fig id="GUID-B597764E-2919-55D3-848B-D8579A4E0A98">
<image href="GUID-940AF1CE-3C33-54BF-B339-B8CF79C5FC9C_d0e133460_href.jpg" placement="inline"/>
</fig> <p>The following list describes the interaction between APPARC and
each of the components depicted in the APPARC architectural diagram: </p> <ul>
<li id="GUID-BAA2F511-151F-5B24-9B31-B6203C8905C4"><p>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. </p> </li>
<li id="GUID-6E250526-6427-5D7C-BED6-AA903C27E342"><p>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. </p> </li>
<li id="GUID-EF948E8F-3540-5346-BC63-FCEAD9AA80A7"><p>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. </p> </li>
<li id="GUID-30282950-6E98-5988-A05B-2B5D8E86848C"><p>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. </p> </li>
</ul> </section>
<section><title>API summary</title> <table id="GUID-8AE3BE8D-64A7-5356-B7C8-9C399A2C09D7">
<tgroup cols="2"><colspec colname="col0"/><colspec colname="col1"/>
<thead>
<row>
<entry><p><b>API</b></p></entry>
<entry><p><b>Description</b></p></entry>
</row>
</thead>
<tbody>
<row>
<entry><p> <xref href="GUID-C0297A58-2E39-3211-A2B4-C334192CE2A7.dita"><apiname>CApaApplication</apiname></xref> </p> </entry>
<entry><p>A class that defines the basic twin roles of an application class: </p> <ul>
<li id="GUID-D25C2518-DEAB-54F1-AD7D-64D5C98C230E"><p>as a factory that creates
concrete document objects </p> </li>
<li id="GUID-5807892A-1432-5CD9-BF89-B9FF1DE369B5"><p>as a supplier of utility
functions not specific to any particular instance of a document. </p> </li>
</ul> </entry>
</row>
<row>
<entry><p> <xref href="GUID-A7C7B19A-66D8-38A7-B5D6-03B81D2F2C93.dita"><apiname>CApaAppListNotifier</apiname></xref> </p> </entry>
<entry><p>An application list change notifier that provides a notification
whenever an application is added or deleted. </p> </entry>
</row>
<row>
<entry><p> <xref href="GUID-0510F0C4-2D81-3C4A-A3FC-95B9F624FF14.dita"><apiname>CApaCommandLine</apiname></xref> </p> </entry>
<entry><p>A class that provides information for launching an application.
This class is often referred to as a command line and it contains </p> <ul>
<li id="GUID-41D2C6FB-1E60-5BCB-B478-0DC4D0ECCCD6"><p>the name of the application
EXE to be launched </p> </li>
<li id="GUID-4D1DB1CC-8D6A-5A8C-921B-A6885F1B0336"><p>the document name </p> </li>
<li id="GUID-A7E91EAD-7C40-56F6-83E2-106FA9E98F1D"><p>a command code that
defines the way an application is launched (the structure of this depends
on the application to be launched). </p> </li>
</ul> </entry>
</row>
<row>
<entry><p> <xref href="GUID-D7041709-1EBE-3E42-8E16-C7F62081AFB7.dita"><apiname>CApaDocument</apiname></xref> </p> </entry>
<entry><p>The base class for all documents. A document contains the data associated
with the content of the application. </p> </entry>
</row>
<row>
<entry><p> <xref href="GUID-4FB064FC-210C-384A-BE92-35CA399B34C3.dita"><apiname>CApaSystemControlList</apiname></xref> </p> </entry>
<entry><p>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 <xref href="GUID-460DE2A7-6E12-3B0D-9026-63119F093EB6.dita"><apiname>CApaSystemControl</apiname></xref>. </p> </entry>
</row>
<row>
<entry><p> <xref href="GUID-C4F91485-6386-36EC-982B-DC2B7AAE7B7A.dita"><apiname>CServiceRegistry</apiname></xref> </p> </entry>
<entry><p>The Service Registry stores associations between service-datatype
pairs and applications. The service-datatype pair is the primary key for the
registry. </p> </entry>
</row>
<row>
<entry><p> <xref href="GUID-2E824A1A-078A-3D43-8B49-DF6328330B51.dita"><apiname>RApaAppServiceBase</apiname></xref> </p> </entry>
<entry><p>The base class that provides a client-side interface for accessing
server applications. </p> </entry>
</row>
<row>
<entry><p> <xref href="GUID-5EEE8745-F483-33C0-A5B1-AEB5544DE2BA.dita"><apiname>RApaLsSession</apiname></xref> </p> </entry>
<entry><p>A session with the APPARC server providing access to a cached list
of applications on the device. </p> </entry>
</row>
</tbody>
</tgroup>
</table> </section>
<section><title>Typical uses</title> <p><b>Developing a GUI-based application</b> </p> <p>A
GUI-based application can be developed using the <xref href="GUID-C0297A58-2E39-3211-A2B4-C334192CE2A7.dita"><apiname>CApaApplication</apiname></xref> and <xref href="GUID-D7041709-1EBE-3E42-8E16-C7F62081AFB7.dita"><apiname>CApaDocument</apiname></xref> interfaces.
For more information, see <xref href="GUID-1D7BD70F-40A3-53FF-8150-A9CAFA4D01D8.dita"> A
Minimal UI Application</xref>. </p> <p><b>Enumerating applications</b> </p> <p>APPARC
provides a set of APIs that can enumerate the list of applications on the
device. For more information, see <xref href="GUID-4E1B057E-5291-54FC-A0C0-37234CBFBD8E.dita">Enumerating
applications</xref>. </p> <p><b>Accessing running applications</b> </p> <p>Applications
running on a device are known as tasks. The <xref href="GUID-E1A1806C-8757-35DF-A4FB-AE3C63DED364.dita"><apiname>TApaTaskList</apiname></xref> class
is used to access applications running on a device, where each task can be
an instance of the <xref href="GUID-851055CF-D5E6-34EA-8D4B-53FC50D90C24.dita"><apiname>TApaTask</apiname></xref> class, which is used to manipulate
or query tasks. For more information, see <xref href="GUID-0F1CB874-391F-5D44-B960-517E447DC712.dita">Accessing
and manipulating running applications</xref>. </p> <p><b>Creating a control
panel application</b> </p> <p>APPARC provides an API to create a control panel
application. For more information, see <xref href="GUID-86AB2626-27F1-5761-85F7-5644C5D0A675.dita">Creating
control panel applications</xref>. </p> <p><b>Creating a new service</b> </p> <p>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 <xref href="GUID-5862F14F-5BB7-584B-A8B1-447975C42D49.dita">Creating
a new service</xref>. </p> <p><b>Using a service in a client</b> </p> <p>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 <xref href="GUID-B12A3024-44BF-51FF-9B84-14DB99ADC907.dita">Using
a service in a client</xref>. </p> <p><b>Implementing services in a server
application</b> </p> <p>Server applications can have one or many services.
Each service type has a unique identification (UID). For more information,
see <xref href="GUID-A5E4A8AD-8A40-5567-AE97-8CC6B496093E.dita">Implementing services
in a server application</xref>. </p> </section>
</conbody><related-links>
<link href="GUID-58035B49-2EAE-5144-B226-28AF2EDD62E7.dita"><linktext>Generic Application
Support</linktext></link>
<link href="GUID-827AFAA3-75A4-5F08-8F83-1E36DAD8533D.dita"><linktext>Secure Software
Install</linktext></link>
<link href="GUID-FC2F5CDE-D140-5893-894D-D9B93AF6BDC2.dita"><linktext>Using Uikon</linktext>
</link>
<link href="GUID-E89F034F-C807-5FF9-B06B-F7CCD2441041.dita"><linktext>Graphics
Device Interface (GDI)</linktext></link>
<link href="GUID-638C061E-49BE-4297-8C02-E3EE261C7F26.dita"><linktext>Calendar
Guide</linktext></link>
</related-links></concept>