|
Inhaltsverzeichnis |
8 |
|
|
Einführung |
14 |
|
|
Enterprise Eclipse RCP |
15 |
|
|
Warum dieses Buch? |
16 |
|
|
Themen und Aspekte |
16 |
|
|
Aufbau und Gliederung |
17 |
|
|
Dankeschön |
17 |
|
|
Teil I Architektur |
18 |
|
|
1 Aspekte der Architektur verteilter Anwendungen |
20 |
|
|
1.1 Architekturvarianten |
20 |
|
|
1.1.1 Client-Server-Architektur |
21 |
|
|
1.1.2 3-Schichten-Architektur |
22 |
|
|
1.1.3 Mehrschichten-Architektur |
23 |
|
|
1.1.4 Architekturen für EERCP-Anwendungen |
24 |
|
|
1.2 Entwurfsprinzipien |
24 |
|
|
1.2.1 Modularisierung |
24 |
|
|
1.2.2 Abhängigkeit und Hierarchie |
27 |
|
|
1.2.3 Serviceorientierung |
29 |
|
|
1.3 Funktionale Kernbestandteile |
29 |
|
|
1.3.1 Datenerfassung |
30 |
|
|
1.3.2 Datenvalidierung |
32 |
|
|
1.3.3 Datenverarbeitung |
34 |
|
|
1.3.4 Datenzugriff und -haltung |
35 |
|
|
1.3.5 Visualisierung der Daten |
36 |
|
|
1.4 Kommunikation |
36 |
|
|
1.4.1 Kommunikation in verteilten Systemen |
36 |
|
|
1.4.2 Kommunikationsprotokolle |
38 |
|
|
1.4.3 Eignung von Protokollen für die Kommunikation |
41 |
|
|
2 Komponenten |
42 |
|
|
2.1 Komponenten in Eclipse |
43 |
|
|
2.1.1 Technische Komponenten |
43 |
|
|
2.1.2 Der Begriff Bundle |
43 |
|
|
2.1.3 Bundletypen |
44 |
|
|
2.1.4 Bundles und Features |
45 |
|
|
2.2 Strukturierungsprinzipien |
45 |
|
|
2.2.1 Fachliche Bundles: Der richtige Schnitt |
46 |
|
|
2.2.2 Technische Bundles: Querschnittsfunktionalität |
46 |
|
|
2.3 Komponentenbildung |
47 |
|
|
2.3.1 Bundle-Struktur |
47 |
|
|
2.3.2 Packagestruktur |
49 |
|
|
2.3.3 Public und Private API |
50 |
|
|
2.4 Versionierung von Bundles |
51 |
|
|
2.4.1 Versionierungsschemata |
51 |
|
|
2.4.2 Versionsnummern vergeben |
52 |
|
|
2.4.3 Verschiedene Versionen des gleichen Bundles verwenden |
53 |
|
|
2.5 Bundle Classloading |
54 |
|
|
2.5.1 Standard-Classloading |
54 |
|
|
2.5.2 Classloader Hell |
54 |
|
|
2.5.3 Beispiel |
56 |
|
|
3 UI-Architektur |
64 |
|
|
3.1 Eclipse-Oberflächen |
65 |
|
|
3.1.1 Hauptfenster |
66 |
|
|
3.1.2 Menüzeile |
66 |
|
|
3.1.3 Toolbar |
66 |
|
|
3.1.4 Statuszeile |
66 |
|
|
3.1.5 Editoren |
66 |
|
|
3.1.6 Views |
67 |
|
|
3.1.7 Perspektiven |
67 |
|
|
3.2 Oberflächenmetaphern |
68 |
|
|
3.2.1 Die Workbench-Metapher |
68 |
|
|
3.2.2 Die Desktop-Metapher |
70 |
|
|
3.2.3 Die richtige Metapher wählen |
71 |
|
|
3.3 UI-Varianten |
72 |
|
|
3.3.1 Workbench mit Perspektiven |
72 |
|
|
3.3.2 Workbench mit einer Perspektive |
74 |
|
|
3.3.3 Eclipse Riena |
75 |
|
|
3.4 Oberflächenkonzept |
75 |
|
|
3.4.1 Aufbau der Oberfläche |
76 |
|
|
3.4.2 Inhalt der Oberfläche |
77 |
|
|
3.4.3 Oberflächen und Rollen |
78 |
|
|
4 Referenzanwendung |
80 |
|
|
4.1 Dysis, eine Zeiterfassung |
80 |
|
|
4.2 Fachliche Beschreibung der Anwendung |
81 |
|
|
4.3 Anwendungsfälle |
82 |
|
|
4.3.1 Am System anmelden |
82 |
|
|
4.3.2 Vom System abmelden |
82 |
|
|
4.3.3 Stammdaten erfassen |
83 |
|
|
4.3.4 Stammdaten bearbeiten |
83 |
|
|
4.3.5 Zeiten buchen |
83 |
|
|
4.4 Datenmodell |
83 |
|
|
4.5 Architektur |
84 |
|
|
4.5.1 Fachlicher Schnitt |
85 |
|
|
4.5.2 Umsetzung der Clientseite |
86 |
|
|
4.5.3 Umsetzung der Serverseite |
87 |
|
|
4.5.4 Kommunikation |
88 |
|
|
4.6 Installation |
88 |
|
|
4.6.1 Das Dysis-Projekt |
89 |
|
|
4.6.2 Hostnamen konfigurieren |
89 |
|
|
4.6.3 Die Datenbank einrichten |
90 |
|
|
4.6.4 Den Server einrichten |
90 |
|
|
4.6.5 Den Client installieren |
91 |
|
|
Teil II Implementierung |
92 |
|
|
5 Enterprise UI |
94 |
|
|
5.1 Login |
94 |
|
|
5.1.1 Authentifizierung |
95 |
|
|
5.1.2 Automatische Authentifizierung |
95 |
|
|
5.1.3 Sprachauswahl |
98 |
|
|
5.2 Navigation |
100 |
|
|
5.2.1 Strukturen für Funktionen |
101 |
|
|
5.2.2 Funktionsgruppen darstellen |
102 |
|
|
5.3 Tabellen und Bäume |
104 |
|
|
5.3.1 Datenmengen darstellen |
104 |
|
|
5.3.2 Datenmengen laden |
105 |
|
|
5.4 Suche |
108 |
|
|
5.4.1 Schema einer Suche |
108 |
|
|
5.4.2 Generische Suche |
109 |
|
|
5.4.3 Grafischer Aufbau |
110 |
|
|
5.4.4 Funktionales Schema |
113 |
|
|
5.5 Nebenläufigkeit |
114 |
|
|
5.5.1 Serviceaufrufe auslagern |
114 |
|
|
5.5.2 Das UI synchronisieren |
115 |
|
|
5.5.3 Controller-Objekte einsetzen |
116 |
|
|
5.6 Wizards einsetzen |
124 |
|
|
5.6.1 Das New-Wizard-DropDown-Menü |
124 |
|
|
5.6.2 Wizards an Perspektiven binden |
125 |
|
|
5.6.3 Perspektiven an Wizards binden |
126 |
|
|
5.7 UI-Elemente maskieren |
127 |
|
|
5.7.1 Datumsfelder darstellen |
128 |
|
|
5.7.2 Textfelder maskieren |
128 |
|
|
6 Ressourcenschonende Implementierung |
130 |
|
|
6.1 Betriebssystemressourcen und Speicher |
130 |
|
|
6.1.1 SWT |
130 |
|
|
6.1.2 Handles |
131 |
|
|
6.1.3 UI-Elemente |
131 |
|
|
6.1.4 Weitere Betriebssystemressourcen |
133 |
|
|
6.1.5 Speicherbedarf |
133 |
|
|
6.2 Profiling |
137 |
|
|
6.2.1 Überwachung der Handles |
137 |
|
|
6.2.2 Speicherverbauch |
138 |
|
|
6.3 Optimierungspotenziale |
139 |
|
|
6.3.1 Systemressourcen wiederverwenden |
140 |
|
|
6.3.2 Clientseitig cachen |
140 |
|
|
6.3.3 UI-Designrichtlinien |
140 |
|
|
7 Databinding |
142 |
|
|
7.1 Idee und Grundgedanke |
142 |
|
|
7.1.1 Komplexe Verbindungen |
143 |
|
|
7.1.2 MVC – Model-View-Controller |
143 |
|
|
7.1.3 Synchronisation |
144 |
|
|
7.2 Konzept der Synchronisation |
145 |
|
|
7.2.1 Transformation |
145 |
|
|
7.2.2 Validierung |
146 |
|
|
7.2.3 Phasen der Synchronisation |
146 |
|
|
7.2.4 Synchronisationsarten |
146 |
|
|
7.3 Validierung |
147 |
|
|
7.3.1 Validierungstypen |
147 |
|
|
7.3.2 Ergebnis der Validierung |
148 |
|
|
7.3.3 Einbindung der Validierung |
150 |
|
|
7.4 Eclipse Databinding |
150 |
|
|
7.4.1 DataBindingContext |
150 |
|
|
7.4.2 IObservableValue |
150 |
|
|
7.4.3 Synchronisationsarten |
151 |
|
|
7.4.4 Konvertierung |
152 |
|
|
7.4.5 Validierung |
152 |
|
|
7.4.6 Darstellung |
154 |
|
|
8 Hilfe |
162 |
|
|
8.1 Eclipse-Online-Hilfe |
162 |
|
|
8.1.1 Abhängigkeiten |
163 |
|
|
8.1.2 Aufbau |
164 |
|
|
8.1.3 Online-Hilfen erstellen |
165 |
|
|
8.1.4 Online-Hilfe einbinden |
174 |
|
|
8.2 Kontextsensitive Hilfe |
175 |
|
|
8.2.1 Dynamic Help Bundles |
175 |
|
|
8.2.2 Dynamic Help erstellen |
176 |
|
|
8.3 Cheat Sheets |
178 |
|
|
8.3.1 Cheat Sheet Bundles |
179 |
|
|
8.3.2 Cheat Sheets erstellen |
180 |
|
|
8.3.3 Cheat Sheets integrieren |
180 |
|
|
9 Remoting |
184 |
|
|
9.1 Remoting-Mentalitäten |
185 |
|
|
9.1.1 Transparentes Remoting |
185 |
|
|
9.1.2 Service Remoting |
185 |
|
|
9.1.3 Rahmenbedingungen |
185 |
|
|
9.2 Einbindung in den Client |
186 |
|
|
9.3 Spring Remoting |
187 |
|
|
9.3.1 Konfiguration des Service |
187 |
|
|
9.3.2 Konfiguration des Clients |
190 |
|
|
9.3.3 Service Proxys verwenden |
191 |
|
|
9.3.4 Das ServiceLocator-Entwurfsmuster |
192 |
|
|
9.3.5 Service Proxys im OSGi-Kontext |
195 |
|
|
9.3.6 Clientseitige Dependency Injection |
197 |
|
|
9.4 OSGi Remoting |
201 |
|
|
10 Nichtfunktionale Anforderungen |
204 |
|
|
10.1 Verfügbarkeit |
204 |
|
|
10.1.1 Clustering |
204 |
|
|
10.1.2 Offline-Fähigkeit |
205 |
|
|
10.2 Performance |
206 |
|
|
10.2.1 Granularität der Kommunikation |
207 |
|
|
10.2.2 Datentransport |
207 |
|
|
10.2.3 Serverseitiges Caching |
209 |
|
|
10.2.4 Clientseitiges Caching |
209 |
|
|
10.3 Sicherheit |
216 |
|
|
10.3.1 Authentifizierung |
216 |
|
|
10.3.2 Autorisierung |
222 |
|
|
10.3.3 Datensicherheit |
225 |
|
|
10.3.4 Codesicherheit |
228 |
|
|
11 Continuous Integration |
230 |
|
|
11.1 Automatisiertes Bauen |
230 |
|
|
11.1.1 Produktexport aus dem UI |
231 |
|
|
11.1.2 PDE-Build-Skript |
231 |
|
|
11.1.3 Produktexport mit Ant |
233 |
|
|
11.1.4 Automatisierter Produktexport |
237 |
|
|
11.2 Automatisiertes Testen |
241 |
|
|
11.2.1 JUnit-Plugin-Tests |
241 |
|
|
11.2.2 JUnit-Plugin-Tests aus dem UI ausführen |
243 |
|
|
11.2.3 Anwendungen für Tests starten |
245 |
|
|
11.2.4 Automatisierte JUnit-Plugin-Tests |
248 |
|
|
11.2.5 Oberflächen testen |
254 |
|
|
11.3 Continuous Build Server |
255 |
|
|
Teil III Betrieb |
258 |
|
|
12 Deployment |
260 |
|
|
12.1 Eclipse RCP als Client |
260 |
|
|
12.2 Softwareverteilung |
261 |
|
|
12.2.1 Rahmenbedingungen auf dem Zielsystem |
261 |
|
|
12.2.2 Softwareverteilungssysteme |
263 |
|
|
12.2.3 Installation via Java Web Start |
263 |
|
|
12.2.4 Installation via NSIS |
269 |
|
|
12.3 Softwareaktualisierung |
269 |
|
|
12.3.1 Die Update-Problematik |
269 |
|
|
12.3.2 Externe Softwareaktualisierung |
271 |
|
|
12.3.3 Den Eclipse Update Manager verwenden |
271 |
|
|
13 Monitoring |
276 |
|
|
13.1 Logging und Tracing |
276 |
|
|
13.1.1 Eclipse Log |
277 |
|
|
13.1.2 Tracing |
280 |
|
|
13.1.3 Logging-Frameworks |
283 |
|
|
13.1.4 Einheitliches Logging |
283 |
|
|
13.1.5 End-to-End Logging |
286 |
|
|
13.2 Keep-alive-Meldungen |
287 |
|
|
13.2.1 Session Handling |
287 |
|
|
13.2.2 Time-out |
287 |
|
|
13.2.3 Logout |
288 |
|
|
13.2.4 Keep-alive |
288 |
|
|
Literaturverzeichnis |
290 |
|
|
Index |
294 |
|