|
1 <?xml version="1.0" encoding="utf-8"?> |
|
2 <!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. --> |
|
3 <!-- This component and the accompanying materials are made available under the terms of the License |
|
4 "Eclipse Public License v1.0" which accompanies this distribution, |
|
5 and is available at the URL "http://www.eclipse.org/legal/epl-v10.html". --> |
|
6 <!-- Initial Contributors: |
|
7 Nokia Corporation - initial contribution. |
|
8 Contributors: |
|
9 --> |
|
10 <!DOCTYPE concept |
|
11 PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd"> |
|
12 <concept id="GUID-940F3F6E-BA9C-5E19-9AC5-D848B5E175FB" xml:lang="en"><title>Application |
|
13 Architecture Overview</title><prolog><metadata><keywords/></metadata></prolog><conbody> |
|
14 <p>APPARC provides access to a cached list of applications, and their properties, |
|
15 on the device. APPARC also provides a mechanism for launching applications |
|
16 and switching between tasks. </p> |
|
17 <section><title>Purpose</title> <p>The main purpose of APPARC is to </p> <ul> |
|
18 <li id="GUID-869A9DDC-5BCE-58FE-A404-8B10B00ED539"><p>manage and register |
|
19 applications with the device </p> </li> |
|
20 <li id="GUID-C4C659F3-027E-5216-A0FD-DEA4A135081F"><p>scan the device for |
|
21 installed applications and associate data types to the applications based |
|
22 on the information in the registration file </p> </li> |
|
23 <li id="GUID-37BADDBF-EFFF-56C6-9348-9CB8D162B8CF"><p>load applications and |
|
24 manage the creation and destruction of application objects and document objects </p> </li> |
|
25 <li id="GUID-4FBABF6C-D3E5-5086-A45B-90A5927185CF"><p>support the registration |
|
26 of non-native applications </p> </li> |
|
27 <li id="GUID-5A799FDF-A676-5538-BDE0-FCDAB7857631"><p>define a Server Application |
|
28 Framework, which allows applications to communicate through the client-server |
|
29 architecture </p> </li> |
|
30 <li id="GUID-907A3B8B-EF8B-5280-B825-7C8D15038E50"><p>support multiple service |
|
31 types over the client-server link and establish a client-server connection |
|
32 to an already running server application </p> </li> |
|
33 <li id="GUID-F4DCD71D-2713-5C7E-83AC-DE976DCD6ECD"><p>monitor the lifetime |
|
34 of the server application </p> </li> |
|
35 <li id="GUID-B11E42C5-4326-5A59-A07C-95AE266AEAE3"><p>define the basic polymorphic |
|
36 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> |
|
37 <li id="GUID-AED566ED-D731-5A2D-956A-41A5AD0B0943"><p>provide a list of available |
|
38 control panel applications present on the device. </p> </li> |
|
39 </ul> </section> |
|
40 <section><title>Key concepts and terms</title> <dl> |
|
41 <dlentry> |
|
42 <dt>Server Application Framework</dt> |
|
43 <dd><p>The Server Application Framework provides generic service support over |
|
44 a client-server link, on which real services can be created. A service typically |
|
45 provides a client-side interface that clients can use directly, and a server-side |
|
46 interface that server applications have to implement. </p> </dd> |
|
47 </dlentry> |
|
48 </dl> </section> |
|
49 <section><title>Architecture</title> <p>The following diagram shows the interaction |
|
50 of APPARC with other components. </p> <fig id="GUID-B597764E-2919-55D3-848B-D8579A4E0A98"> |
|
51 <image href="GUID-940AF1CE-3C33-54BF-B339-B8CF79C5FC9C_d0e146649_href.jpg" placement="inline"/> |
|
52 </fig> <p>The following list describes the interaction between APPARC and |
|
53 each of the components depicted in the APPARC architectural diagram: </p> <ul> |
|
54 <li id="GUID-BAA2F511-151F-5B24-9B31-B6203C8905C4"><p>APPARC provides the |
|
55 basic behavior for GUI-based applications. APPARC also provides basic behavior |
|
56 for documents in a document-view based application. Uikon builds on the basic |
|
57 behavior that APPARC provides for GUI applications. PIM application components |
|
58 (Contacts and Calendar) derive the basic behavior for GUI-based applications |
|
59 from APPARC. </p> </li> |
|
60 <li id="GUID-6E250526-6427-5D7C-BED6-AA903C27E342"><p>APPARC maintains a list |
|
61 of installed applications on the device. APPARC supports rule-based application |
|
62 launching which is implemented as ECOM plug-ins. These plug-ins define rules |
|
63 that enable APPARC to either deny or accept the application launch requests. </p> </li> |
|
64 <li id="GUID-EF948E8F-3540-5346-BC63-FCEAD9AA80A7"><p>Software Install (SWI) |
|
65 allows installing, uninstalling and upgrading of native software on the device. |
|
66 When an application needs to be installed, SWI uses APPARC for launching applications |
|
67 if run-on-install or run-on-uninstall is specified. </p> </li> |
|
68 <li id="GUID-30282950-6E98-5988-A05B-2B5D8E86848C"><p>When an application |
|
69 is launched APPARC interacts with the GDI and BIT GDI components to associate |
|
70 the application with the appropriate application icon, caption and display |
|
71 screen. </p> </li> |
|
72 </ul> </section> |
|
73 <section><title>API summary</title> <table id="GUID-8AE3BE8D-64A7-5356-B7C8-9C399A2C09D7"> |
|
74 <tgroup cols="2"><colspec colname="col0"/><colspec colname="col1"/> |
|
75 <thead> |
|
76 <row> |
|
77 <entry><p><b>API</b></p></entry> |
|
78 <entry><p><b>Description</b></p></entry> |
|
79 </row> |
|
80 </thead> |
|
81 <tbody> |
|
82 <row> |
|
83 <entry><p> <xref href="GUID-C0297A58-2E39-3211-A2B4-C334192CE2A7.dita"><apiname>CApaApplication</apiname></xref> </p> </entry> |
|
84 <entry><p>A class that defines the basic twin roles of an application class: </p> <ul> |
|
85 <li id="GUID-D25C2518-DEAB-54F1-AD7D-64D5C98C230E"><p>as a factory that creates |
|
86 concrete document objects </p> </li> |
|
87 <li id="GUID-5807892A-1432-5CD9-BF89-B9FF1DE369B5"><p>as a supplier of utility |
|
88 functions not specific to any particular instance of a document. </p> </li> |
|
89 </ul> </entry> |
|
90 </row> |
|
91 <row> |
|
92 <entry><p> <xref href="GUID-A7C7B19A-66D8-38A7-B5D6-03B81D2F2C93.dita"><apiname>CApaAppListNotifier</apiname></xref> </p> </entry> |
|
93 <entry><p>An application list change notifier that provides a notification |
|
94 whenever an application is added or deleted. </p> </entry> |
|
95 </row> |
|
96 <row> |
|
97 <entry><p> <xref href="GUID-0510F0C4-2D81-3C4A-A3FC-95B9F624FF14.dita"><apiname>CApaCommandLine</apiname></xref> </p> </entry> |
|
98 <entry><p>A class that provides information for launching an application. |
|
99 This class is often referred to as a command line and it contains </p> <ul> |
|
100 <li id="GUID-41D2C6FB-1E60-5BCB-B478-0DC4D0ECCCD6"><p>the name of the application |
|
101 EXE to be launched </p> </li> |
|
102 <li id="GUID-4D1DB1CC-8D6A-5A8C-921B-A6885F1B0336"><p>the document name </p> </li> |
|
103 <li id="GUID-A7E91EAD-7C40-56F6-83E2-106FA9E98F1D"><p>a command code that |
|
104 defines the way an application is launched (the structure of this depends |
|
105 on the application to be launched). </p> </li> |
|
106 </ul> </entry> |
|
107 </row> |
|
108 <row> |
|
109 <entry><p> <xref href="GUID-D7041709-1EBE-3E42-8E16-C7F62081AFB7.dita"><apiname>CApaDocument</apiname></xref> </p> </entry> |
|
110 <entry><p>The base class for all documents. A document contains the data associated |
|
111 with the content of the application. </p> </entry> |
|
112 </row> |
|
113 <row> |
|
114 <entry><p> <xref href="GUID-4FB064FC-210C-384A-BE92-35CA399B34C3.dita"><apiname>CApaSystemControlList</apiname></xref> </p> </entry> |
|
115 <entry><p>A class that provides a list of all available control panel applications |
|
116 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> |
|
117 </row> |
|
118 <row> |
|
119 <entry><p> <xref href="GUID-C4F91485-6386-36EC-982B-DC2B7AAE7B7A.dita"><apiname>CServiceRegistry</apiname></xref> </p> </entry> |
|
120 <entry><p>The Service Registry stores associations between service-datatype |
|
121 pairs and applications. The service-datatype pair is the primary key for the |
|
122 registry. </p> </entry> |
|
123 </row> |
|
124 <row> |
|
125 <entry><p> <xref href="GUID-2E824A1A-078A-3D43-8B49-DF6328330B51.dita"><apiname>RApaAppServiceBase</apiname></xref> </p> </entry> |
|
126 <entry><p>The base class that provides a client-side interface for accessing |
|
127 server applications. </p> </entry> |
|
128 </row> |
|
129 <row> |
|
130 <entry><p> <xref href="GUID-5EEE8745-F483-33C0-A5B1-AEB5544DE2BA.dita"><apiname>RApaLsSession</apiname></xref> </p> </entry> |
|
131 <entry><p>A session with the APPARC server providing access to a cached list |
|
132 of applications on the device. </p> </entry> |
|
133 </row> |
|
134 </tbody> |
|
135 </tgroup> |
|
136 </table> </section> |
|
137 <section><title>Typical uses</title> <p><b>Developing a GUI-based application</b> </p> <p>A |
|
138 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. |
|
139 For more information, see <xref href="GUID-1D7BD70F-40A3-53FF-8150-A9CAFA4D01D8.dita"> A |
|
140 Minimal UI Application</xref>. </p> <p><b>Enumerating applications</b> </p> <p>APPARC |
|
141 provides a set of APIs that can enumerate the list of applications on the |
|
142 device. For more information, see <xref href="GUID-4E1B057E-5291-54FC-A0C0-37234CBFBD8E.dita">Enumerating |
|
143 applications</xref>. </p> <p><b>Accessing running applications</b> </p> <p>Applications |
|
144 running on a device are known as tasks. The <xref href="GUID-E1A1806C-8757-35DF-A4FB-AE3C63DED364.dita"><apiname>TApaTaskList</apiname></xref> class |
|
145 is used to access applications running on a device, where each task can be |
|
146 an instance of the <xref href="GUID-851055CF-D5E6-34EA-8D4B-53FC50D90C24.dita"><apiname>TApaTask</apiname></xref> class, which is used to manipulate |
|
147 or query tasks. For more information, see <xref href="GUID-0F1CB874-391F-5D44-B960-517E447DC712.dita">Accessing |
|
148 and manipulating running applications</xref>. </p> <p><b>Creating a control |
|
149 panel application</b> </p> <p>APPARC provides an API to create a control panel |
|
150 application. For more information, see <xref href="GUID-86AB2626-27F1-5761-85F7-5644C5D0A675.dita">Creating |
|
151 control panel applications</xref>. </p> <p><b>Creating a new service</b> </p> <p>The |
|
152 server application framework supports platform-level services between client |
|
153 and server applications. These services must be defined for client and server |
|
154 applications to communicate. For more information, see <xref href="GUID-5862F14F-5BB7-584B-A8B1-447975C42D49.dita">Creating |
|
155 a new service</xref>. </p> <p><b>Using a service in a client</b> </p> <p>Clients |
|
156 and server applications interact through a common service, which adheres to |
|
157 a protocol defining the communication channel between the two. This inter-process |
|
158 communication channel also provides a security checkpoint for application |
|
159 capability checking and so on. Services provide useful functionality to clients. |
|
160 For more information, see <xref href="GUID-B12A3024-44BF-51FF-9B84-14DB99ADC907.dita">Using |
|
161 a service in a client</xref>. </p> <p><b>Implementing services in a server |
|
162 application</b> </p> <p>Server applications can have one or many services. |
|
163 Each service type has a unique identification (UID). For more information, |
|
164 see <xref href="GUID-A5E4A8AD-8A40-5567-AE97-8CC6B496093E.dita">Implementing services |
|
165 in a server application</xref>. </p> </section> |
|
166 </conbody><related-links> |
|
167 <link href="GUID-58035B49-2EAE-5144-B226-28AF2EDD62E7.dita"><linktext>Generic Application |
|
168 Support</linktext></link> |
|
169 <link href="GUID-827AFAA3-75A4-5F08-8F83-1E36DAD8533D.dita"><linktext>Secure Software |
|
170 Install</linktext></link> |
|
171 <link href="GUID-FC2F5CDE-D140-5893-894D-D9B93AF6BDC2.dita"><linktext>Using Uikon</linktext> |
|
172 </link> |
|
173 <link href="GUID-E89F034F-C807-5FF9-B06B-F7CCD2441041.dita"><linktext>Graphics |
|
174 Device Interface (GDI)</linktext></link> |
|
175 <link href="GUID-638C061E-49BE-4297-8C02-E3EE261C7F26.dita"><linktext>Calendar |
|
176 Guide</linktext></link> |
|
177 </related-links></concept> |