Mobile DMS Mobile DMS-Datenerfassung Datenerfassung

Werbung
Projektdokumentation
Mobile DMS-Datenerfassung
DMS Datenerfassung
Abstract
Die bestehende Software-Suite
Suite der Firma GCS soll um eine mobile Komponente basierend auf
Windows Mobile ergänzt werden. In dieser Arbeit steht dabei eine Technologie-Studie
Studie für den
Datenaustausch
austausch zwischen mobilem Gerät und Server im Zentrum.. Anhand eines Prototyps wird die
Umsetzbarkeit geprüft.
Schlüsselwörter: Windows Mobile, .NET Compact Framework, SQL Server Compact, Webservices,
DMS – Dealer Management System
Master Thesis Nr.:
Datum:
Version:
MAS-07-01.07
01.07
10.09.2009
1.0
Student:
Philipp Buser, Unterm Stallen 5, 4104 Oberwil
P: 079 708 37 94
[email protected]
G: 061 726 97 44
[email protected]
Betreuer:
Reto Dellenbach, Mühlemattstrasse 24a, 4104 Oberwil
Oberw
G: 061 726 97 45
[email protected]
Experte:
Rolf Wenger, Steingrübliweg 8a, 3072 Ostermundigen
G: 079 820 61 29
[email protected]
Projekt
Seite
Mobile DMS-Datenerfassung
Datenerfassung
Autor
Datum
Version
Dokument
Philipp Buser
10.09.2009
1.0
Projektdokumentation
2(141)
Änderungsnachweis
Version
Beschreibung der Änderung
Datum
Autor(en)
0.1
Erste Version
30.04.2009
.04.2009
Philipp Buser
0.2
Struktur festgelegt und Ausgewählte Inhalte aus
Pflichtenheft und Technologie-Studie
Technologie
übertragen
14.08.2009
Philipp Buser
0.3
Benutzeroberfläche,
enutzeroberfläche, Datenbank und Architektur
dokumentiert
28.08.2009
Philipp Buser
0.4
Tests und Implementationsdetails dokumentiert
07.09.2009
Philipp Buser
0.5
Management Summary, Reflexion und Ausblick erstellt
Glossar eingefügt
08.09.2009
Philipp Buser
1.0
Fertiggestellte und eingereichte Version
10.09.2009
9.2009
Philipp Buser
Projekt
Mobile DMS-Datenerfassung
Datenerfassung
Autor
Datum
Version
Dokument
Philipp Buser
10.09.2009
1.0
Projektdokumentation
Seite
3(141)
Management Summary
Ausgangslage und Aufgabenstellung
Garagen und Carrosseriebetrieben, die mit einem DMS (Dealer-Management-System
(
System) der Firma GCS
Garage & Carrosserie System GmbH arbeiten, soll mit einer mobilen Datenerfassungssoftware
Datenerfassungssoft
die
Möglichkeit geboten werden, ihre Werkstattplanung noch einen weiteren Schritt zu digitalisieren
und automatisieren.
Es soll eine Applikation mit dem Windows Mobile SDK für Geräte mit Windows Mobile 6.0/6.1
Betriebssystem erstellt werden, welche die
d bestehende DMS-Software-Suite
Suite von GCS um eine mobile
Komponente ergänzt. Der Fokus richtet sich jedoch nicht unbedingt auf die Applikation selbst,
sondern auf eine Technologie-Studie,
Studie, welche die Grundlagen für die Kommunikation und den
Datenaustausch zwischen
ischen der DMS-Lösung
DM
und dem mobilen Gerät untersucht und die
verschiedenen Möglichkeiten bewertet.
bewertet
Anhand eines vertikalen Prototyps eines ausgesuchten Anwendungsfalles soll dann die
Umsetzbarkeit und Verwendung der ausgewählten Technologie geprüft werden.
en.
Resultate und Ergebnisse
Von den 6 untersuchten Datenaustausch-Technologien
Datenaustausch Technologien Direct Access, Remote Data Access, Merge
Replication, ASP.NET Webservices, WCF-Services
WCF Services und Synchronization Services hat Merge Replication
im Vergleich am besten abgeschnitten.
abgeschnitten. Allerdings setzt diese Technologie einen SQL-Server
SQL
voraus
und funktioniert nicht mit SQL Express,
Express was aber als Muss-Kriterium
Kriterium definiert wurde.
Zwischen den Synchronization Services und den WCF-Services
WCF Services ist dann der Entscheid u.a. aufgrund
der höheren Flexibilität bei zukünftigen Anforderungen zugunsten der WCF-Services
Services ausgefallen.
Der entwickelte Prototyp
ototyp im Bereich JPS (Job Planing
Plan System) erlaubt nach der Auswahl eines
Auftrags die Anzeige der Aufgabenliste sowie der Kunden-,
Kunden Fahrzeug- und Termininformationen.
Terminin
Erledigte Aufgaben können als abgeschlossen zurückgemeldet werden. Die Applikation ist auch
verwendbar wenn keine Verbindung zum Webservice besteht. Abgeschlossene Aufgaben und neue
oder geänderte Projekte werden synchronisiert, sobald das mobile
mobile Gerät wieder online ist.
Grenzen und Ausblick
Umfrage und Demonstrationsobjekt dienen und in einem
Der Prototyp wird nun vorerst mal als UmfragePilotprojekt eingesetzt werden, um die Akzeptanz bei den Kunden zu überprüfen und um Feedback
einzuholen. Danach wird über weiterführende Entwicklungsschritte entschieden. Das Ziel ist es,
Schritt für Schritt weitere Teilbereiche der GCS-Software-Suite
GCS
Suite zu implementieren, bis hin zur
Abbildung der kompletten Werkstattkarte auf dem mobilen Gerät. Dies beinhaltet die Zeiterfassung,
Z
die Auswahl und Rückmeldung der verbauten Ersatzteile, verschiedene Checklisten zur
Unterstützung, usw.
Projekt
Mobile DMS-Datenerfassung
Datenerfassung
Autor
Datum
Version
Dokument
Philipp Buser
10.09.2009
1.0
Projektdokumentation
Seite
4(141)
Inhaltsverzeichnis
1
1.1
1.2
1.3
1.4
1.5
1.6
2
................................
................................. 8
Allgemeines ................................................................................................................................
Zweck des Dokumentes................................................................................................
........................................... 8
Zielgruppe des Dokumentes................................................................................................
.................................... 8
Umfang der Master Thesis ................................................................................................
...................................... 8
Umfeld ................................................................................................................................
................................
..................................... 8
Referenzierte Dokumente ................................................................................................
..................................... 10
Quellenverzeichnis ................................................................................................
................................
................................................ 10
Gesamtüberblick ................................................................................................
................................
....................................................... 11
2.1
Produktumfeld ................................................................................................
................................
...................................................... 11
2.2
Ziel des Auftraggebers ................................................................................................
........................................... 13
2.3
Ziel der Master Thesis ................................................................................................
........................................... 13
2.4
Meilensteine ................................................................................................
................................
.......................................................... 14
2.5
Rahmenbedingungen ................................................................................................
................................
............................................ 15
2.5.1
Zielsystem Mobiles Gerät ..............................................................................................
.............................. 15
2.5.2
Zielsystem Server................................................................................................
Server
........................................... 17
2.5.3
Entwicklungssyste ................................................................................................
Entwicklungssystem
...................................... 17
Teil 1 – Technologie-Studie ................................................................................................
................................
......................................... 18
3
Einführung ................................................................................................................................
................................
................................. 18
4
Grundlagen und
d Basistechnologien................................................................
Basistechnologien
........................................................... 18
4.1
Windows Mobile ................................................................................................
................................
................................................... 19
4.1.1
Windows CE vs. Windows Mobile ................................................................
................................................. 19
4.1.2
Windows Mobile 5.0 vs. Windows Mobile 6 ................................................................
................................. 19
4.1.3
Windows Mobile 6.1 ................................................................................................
..................................... 19
4.1.4
Windows Mobile SDK ................................................................................................
.................................... 20
4.2
Windows Mobile 6 SDK ................................................................................................
......................................... 21
4.2.1
Device Emulator ................................................................................................
................................
............................................ 21
4.2.2
Cellular Emulator ................................................................................................
........................................... 22
4.2.3
FakeGPS ................................................................................................
................................
......................................................... 22
4.2.4
Security Configuration Manager ................................................................
................................................... 23
4.2.5
CabSignTool ................................................................................................
................................
................................................... 23
4.2.6
Weitere Tools und Bestandteile des SDK ................................................................
...................................... 23
4.3
.NET Compact Framework ................................................................................................
..................................... 24
4.3.1
Architektur................................................................................................
................................
..................................................... 24
4.3.2
Verwaltung des Gerätespeichers ................................................................
.................................................. 25
4.3.3
Unterstützte Geräte und Plattformen ................................................................
........................................... 27
4.3.4
Unterschiede zwischen .NET Compact Framework und .NET Framework.................... 28
4.3.5
.NET Compact Framework 3.5 ................................................................
....................................................... 32
4.4
SQL Server Compact ................................................................................................
................................
.............................................. 33
4.4.1
SQL Server Compact 3.5 ................................................................................................
................................ 33
4.4.2
Netzwerktopologien ................................................................................................
...................................... 35
4.4.3
IIS-Sicherheit................................................................................................
................................
.................................................. 37
4.4.4
SQL Server-Sicherheit
Sicherheit ................................................................................................
.................................... 38
Projekt
Mobile DMS-Datenerfassung
Datenerfassung
Autor
Datum
Version
Dokument
Philipp Buser
10.09.2009
1.0
Projektdokumentation
5
Seite
5(141)
Datenaustausch / Kommunikation ................................................................
............................................................ 40
5.1
Übersicht ...............................................................................................................................
................................
............................... 40
5.2
Direct Access (SQL Server Client) ................................................................
.......................................................... 41
5.3
Remote Data Access (RDA) ................................................................................................
.................................... 42
5.3.1
Architektur................................................................................................
................................
..................................................... 43
5.3.2
Implementieren des Remotedatenzugriffs ................................................................
................................... 44
5.3.3
Konflikterkennung und -berichterstellung für RDA.......................................................
................................
47
5.4
Merge Replication ................................................................................................
................................
................................................. 48
5.4.1
Replikationsarchitektu ................................................................................................
Replikationsarchitektur
................................. 48
5.4.2
Funktionsweise der Replikation ................................................................
.................................................... 49
5.4.3
Implementieren der Replikation ................................................................
................................................... 51
5.4.4
Synchronisieren von Daten ................................................................
........................................................... 54
5.4.5
Erkennung und Lösung von Replikationskonflikten ......................................................
................................
56
5.5
Vergleich von Remote Data Access und Merge-Replication .................................................
................................
57
5.6
Webservices ................................................................................................
................................
.......................................................... 58
5.6.1
ASP.NET Webservice ................................................................................................
..................................... 58
5.6.2
WCF Service ................................................................................................
................................
................................................... 60
5.7
Synchronization Services (für Geräte) ................................................................
................................................... 62
5.7.1
Gelegentlich verbundene Anwendungen (Geräte) .......................................................
................................
64
5.8
Vergleich der Technologien ................................................................................................
................................... 67
5.8.1
Applikationslogik ................................................................................................
........................................... 67
5.8.2
Performance-Messungen
Messungen und -Vergleich................................................................
...................................... 68
5.8.3
Vergleichs- und Entscheidungstabellen ................................................................
........................................ 71
5.8.4
Bewertungsmatrix ................................................................................................
......................................... 72
5.8.5
Zusammenfassung ................................................................................................
......................................... 76
5.8.6
Fazit ...............................................................................................................................
................................
............................... 78
Teil 2 – Prototyp ................................................................................................
................................
......................................................... 79
6
6.1
6.2
6.3
Anwendungsfälle ................................................................................................
................................
....................................................... 79
Aufgabe erledigen ................................................................................................
................................
................................................. 80
Auftrag bearbeiten ................................................................................................
................................
................................................ 83
Kunde kontaktieren ................................................................................................
................................
............................................... 84
7
Funktionale Anforderungen ................................................................................................
...................................... 85
8
Nicht funktionale Anforderungen ................................................................
............................................................. 86
9
Benutzeroberfläche ................................................................................................
................................
................................................... 87
9.1
Startfenster................................
................................................................................................
............................................................ 88
9.2
Auftragsfenster................................................................................................
................................
...................................................... 90
9.2.1
Aufgabenliste................................................................................................
................................
................................................. 91
9.2.2
Aufgabendetails................................................................................................
................................
............................................. 92
9.2.3
Kontaktinformatio
Kontaktinformationen
................................................................................................
................................... 92
9.2.4
Fahrzeuginformationen ................................................................................................
................................. 93
9.2.5
Termininformationen ................................................................................................
.................................... 94
9.3
Optionen................................................................................................................................
................................
................................ 94
9.4
Info ................................................................................................................................
................................
........................................ 96
Projekt
Mobile DMS-Datenerfassung
Datenerfassung
Autor
Datum
Version
Dokument
Philipp Buser
10.09.2009
1.0
Projektdokumentation
Seite
6(141)
10
Datenbank ................................................................................................................................
................................
................................. 97
10.1 Server ................................................................................................................................
................................
.................................... 97
10.1.1 Tabellenübersicht ................................................................................................
.......................................... 98
10.1.2 Tabelle WPTProject (Arbeitsplaner-Projekte)
(Arbeitsplaner
...............................................................
............................... 98
10.1.3 Tabelle WPTJobs (Arbeitsplaner-Aufgaben)
(Arbeitsplaner
................................................................
.................................. 99
10.1.4 Tabelle WPTJobAdditionals (Zusatzeinträge zu einem Job) ..........................................
................................
99
10.1.5 Tabelle WPTAddToJob (Zuordnungstabelle zwischen Jobs und JobAdditionals).......... 99
10.1.6 Tabelle WPTRessources (Arbeitszeitenplaner-Ressourcen)
(Arbeitszeitenplaner
................................
........................................
100
10.1.7 Tabelle WPTRessAndJobs (Arbeitszeitenplaner-Ressourcen
(Arbeitszeitenplaner Ressourcen und Aufgaben) ............. 100
10.1.8 Tabelle WPTJobGroups (Aufgabengruppen) ...............................................................
............................... 100
10.1.9 Tabelle Adress (Adressinfos (Ort, Strasse, ...)) ............................................................
............................ 101
10.1.10
Tabelle Ansprechpartner (Adressinfos (Name, Tel-Nr.,
Tel
…)) ....................................
................................ 101
10.1.11
Relationen ................................................................................................
................................
............................................... 102
10.2 Mobile-Client ................................................................................................
................................
....................................................... 103
11
Architektur................................
...............................................................................................................................
............................... 104
11.1 WCF-Service
Service (JPS Service)................................................................................................
.................................... 105
11.2 Mobile Anwendung (Mobile JPS) ................................................................
........................................................ 106
11.2.1 Forms und Controls ................................................................................................
..................................... 107
11.2.2 DataAccess und Service ...............................................................................................
............................... 108
11.2.3 Library ................................................................................................
................................
.......................................................... 109
11.3 Sequenzdiagramme ................................................................................................
................................
............................................. 110
11.3.1 Starten der Applikation ...............................................................................................
............................... 110
11.3.2 Aufrufen eines Projekts ...............................................................................................
............................... 111
11.3.3 Abschliessen einer Aufgabe................................................................
......................................................... 112
11.3.4 Synchronisierung ................................................................................................
......................................... 113
12
Implementationsdetails ................................................................................................
................................
.......................................... 114
12.1 Userinterface ................................................................................................
................................
....................................................... 114
12.2 Setttings...............................................................................................................................
................................
............................... 115
12.3 Webservice ................................................................................................
................................
.......................................................... 116
12.4 Online-/Offline-Betrieb
Betrieb ................................................................................................
....................................... 117
12.5 Datenzugriff ................................................................................................
................................
......................................................... 118
12.6 Konflikterkennung ................................................................................................
................................
............................................... 119
12.7 Telefonfunktion ................................................................................................
................................
................................................... 121
12.8 SMS und Email ................................................................................................
................................
..................................................... 122
12.9 LINQ ................................................................................................................................
................................
..................................... 123
12.10
Geräte-Informationen
Informationen ................................................................................................
..................................... 124
12.11
Hoch- / Querformat ................................................................................................
......................................... 125
13
Tests ................................................................................................................................
................................
........................................ 126
13.1 Unit-Tests ............................................................................................................................
................................
............................ 126
13.2 Tests der Use-Cases ................................................................................................
................................
............................................. 126
13.2.1 Aufgabe erledigen ................................................................................................
....................................... 126
13.2.2 Auftrag bearbeiten ................................................................................................
...................................... 127
13.2.3 Kunde kontaktieren ................................................................................................
..................................... 127
13.3 Tests der funktionalen Anforderungen ................................................................
............................................... 128
13.4 Tests der nicht funktionalen Anforderungen ................................................................
...................................... 129
13.5 System-Tests................................................................................................
................................
........................................................ 130
Projekt
Mobile DMS-Datenerfassung
Datenerfassung
Autor
Datum
Version
Dokument
Philipp Buser
10.09.2009
1.0
Projektdokumentation
Seite
7(141)
14
Gesammelte
te Erfahrungen / Reflexion ................................................................
..................................................... 132
15
Ausblick ................................................................................................................................
................................
................................... 134
Anhang A – Abbildungsverzeichnis ................................................................................................
..................................... 135
Anhang B – Tabellenverzeichnis ................................................................................................
................................
.......................................... 136
Anhang C – Quellcode-Verzeichnis
Verzeichnis ................................................................................................
..................................... 137
Anhang D – Begriffe und Abkürzungen ...............................................................................................
............................... 138
Anhang E – Projektplan ................................................................................................
................................
....................................................... 141
Projekt
Mobile DMS-Datenerfassung
Datenerfassung
Autor
Datum
Version
Dokument
Philipp Buser
10.09.2009
1.0
Projektdokumentation
Seite
8(141)
1 Allgemeines
1.1 Zweck des Dokumentes
Das vorliegende Dokument ist der Abschlussbericht zur Master Thesis „Mobile DMS-Datenerfassung“
DMS
und gleichzeitig
eichzeitig auch die Projektdokumentation. Es wird darin aufgezeigt, welche Arbeiten im
Rahmen der Master Thesis durchgeführt wurden.
Der Zweck ist es, die Resultate und Erkenntnisse der durchgeführten Technologie-Studie
Technologie
zu
beschreiben und die entwickelte Lösung
L
zu dokumentieren.
1.2 Zielgruppe
elgruppe des Dokumentes
Dieses Dokument richtet sich primär an den Experten (Herrn Wenger), an den Betreuer und
Auftraggeber (Herr Dellenbach, Geschäftsführer der Firma GCS Garage & Carrosserie System GmbH)
sowie an alle, die mit der Weiterführung dieses Projekts zu tun haben werden. Selbstverständlich
Se
sind auch andere interessierte Personen willkommen, diesen Bericht zu lesen.
Das Dokument ist in Deutsch gehalten, dort wo es jedoch sinnvoll erschien, wurden die englischen
Originalbegriffe – in einem Fall sogar der komplette Originaltext – verwendet.
1.3 Umfang der Master Thesis
Diese Arbeit bildet den Abschluss des MAS-Studiums
MAS Studiums „Master of Advanced Studies in Information
Technology“. Sie umfasst 12 ECTS Punkte, was einem Arbeitsaufwand von 360 Stunden entspricht,
und dauerte sechs Monate.
1.4 Umfeld
Die Firma GCS Garage & Carrosserie System GmbH
Die GCS Garage & Carrosserie System
System GmbH (kurz GCS) mit Sitz in Oberwil BL ist Partner von Garagen
und Carrosseriebetrieben
rosseriebetrieben im Informatik-Umfeld.
Informatik
Siee ist der Auftraggeber dieser Arbeit. Sie wurde
2006 gegründet und erhält zu diesem Zeitpunkt von der Firma KSR die Vertriebsrechte des gesamten
Produkteportfolios für die Deutschschweiz. Vorher (seit 2003) wurde dieses Portfolio durch die
Firmen EurotaxGlass's
ass's und it kompetenzkompetenz & dienstleistungscenter gmbh in der Schweiz vertrieben.
Die damals bestehenden
enden rund 400 Installationen wurden
wu
in einer gemeinsamen
einsamen Übergangszeit von
beiden Firmen (EurotaxGlass’s und GCS) betreut. Danach wurden den Kunden einen Umstieg
Umst auf die
Linien von GCS angeboten.
Seither vertreibt und installiert GCS die Software-Produkte
Software
von KSR in der Schweiz, betreut und
unterstützt die Kunden bei ihrer Arbeit damit und bietet Support und Helpdesk. Mit diversen
Eigenentwicklungen im Schnittstellen
tellen- und Add-on-Bereich
Bereich schliesst GCS die Lücken im Schweizer
Markt, die von der deutschen KSR nicht abgedeckt werden.
Allgemeines
Projekt
Mobile DMS-Datenerfassung
Datenerfassung
Autor
Datum
Version
Dokument
Philipp Buser
10.09.2009
1.0
Projektdokumentation
Seite
9(141)
Abbildung 1: Umfeld
Die Firma KSR EDV-Ingenieurbüro
Ingenieurbüro GmbH
Die Grundsteine der Firma wurden bereits 1989 gelegt und sie entwickelte sich seither von einer 22
Mann-Garagen-Firma
Firma zu einem marktführenden Unternehmen mit rund 3000 zufriedenen Kunden
Ku
in
Deutschland, Österreich und der Schweiz, die heute mit KSR-Produkten
KSR Produkten arbeiten, die
kundenindividuell aus Grundprogramm
gramm und Erweiterungsmodulen zu einem massgeschneiderten
Paket zusammengestellt werden können. 1997 erfolgte die Gründung der Firma KSR EDVEDV
Ingenieurbüro GmbH (kurz KSR) mit einer 25%-Beteiligung
25% Beteiligung der Firma Eurotax AG in Freienbach
(Schweiz). Heute zählt KSR
SR mit Firmensitz in Bibertal bei Ulm (Deutschland) zu den führenden
Anbietern von Management-Software.
Software.
Die Firma EurotaxGlass’s International AG
EurotaxGlass’s International AG (kurz EurotaxGlass’s) ist der europaweit grösste Anbieter von
entscheidungsrelevanten
levanten Informationen, Lösungen und Business Intelligence Services für die
Automobilwirtschaft. Die Firma EurotaxGlass’s resultierte aus der Fusion zwischen Eurotax AG und
Glass's Information Services Limited und hat ihre Unternehmenszentrale in Freienbach
Freienbac bei Zürich.
EurotaxGlass’s ist in 30 Ländern mit 660 Mitarbeitern aktiv. Bekannt ist EurotaxGlass’s vor allem
durch ihre Bewertungs- und Schadenskalkulationsdaten.
GCS arbeitet bereits seit Beginn sehr eng mit EurotaxGlass's zusammen. In allen GCS-Produkten
GCS
sind
die Eurotax-Programme
Programme voll integriert.
Allgemeines
Projekt
Mobile DMS-Datenerfassung
Datenerfassung
Autor
Datum
Version
Dokument
Philipp Buser
10.09.2009
1.0
Projektdokumentation
Seite
10(141)
1.5 Referenzierte Dokumente
Auf folgende Dokumente wird in dieser Dokumentation verwiesen.
Dokument
Pflichtenheft_V1.0.docx
Technologie-Studie_V0.6.docx
Beschreibung
Pflichtenheft
Technologie-Studie; ein rund 160-seitiges
seitiges Dokument, in dem ich
fortlaufend die Erkenntnisse aus den gelesenen Büchern, Dokumenten
und Artikeln dokumentiert habe.
1.6 Quellenverzeichnis
Andy Wigley / Daniel Moth / Peter Foot, Microsoft Mobile Development Handbook, Microsoft Press
2007, ISBN: 978-0735623583
Rob Tiffany, Windows Mobile Data Synchronization with SQL Server 2005 and SQL Server Compact
3.1, Hood Canal Press 2007, ISBN: 978-0979891205
Mobile Application Architecture Guide,
Guide patterns & practices, 2008 Microsoft Corporation
Chris
ris Rupp & die SOPHISTen, Requirements-Engineering
Requirements
und Management, 4. Auflage, Hanser 2007,
ISBN: 978-3446405097
Ian Sommerville,
erville, Software Engineering, 8. Auflage, Pearson Studium 2007,
2007, ISBN: 978-3827372574
978
Windows Mobile for Developers, http://developer.windowsmobile.com
Michele Leroux Bustamante / Nickolas Landry, WCF Guidance for Mobile Developers,
wcfguidanceformobile.codeplex.com, 2009
Windows Mobile Developer Center, http://msdn.microsoft.com/windowsmobile
MSDN, Microsoft Developer Network, http://msdn.microsoft.com
DotNETForDevices.com - DotNET resources, code, information, and blog,
http://www.dotnetfordevices.com
Windows Mobile wm, Pocket PC ppc und Smartphone Forum,
Forum http://www.pocketpc.ch
PM-HANDBUCH.COM,
HANDBUCH.COM, Kostenloser Leitfaden für Projektmanager,
Projektman
http://www.pm
http://www.pm-handbuch.com
Wikipedia, Die freie Enzyklopädie,
Enzyklopädie http://www.wikipedia.org
Allgemeines
Projekt
Mobile DMS-Datenerfassung
Datenerfassung
Autor
Datum
Version
Dokument
Philipp Buser
10.09.2009
1.0
Projektdokumentation
Seite
11(141)
2 Gesamtüberblick
2.1 Produktumfeld
Abbildung 2: Kontextdiagramm Produkteumfeld
Das Dealer-Management-System
System besteht aus mehreren Produkten
Produkten und Komponenten, die je nach
Bedarf und Anforderung auch einzeln eingesetzt werden können:
VTS (Vehicle Trading System): Das System für die Gebrauchtfahrzeugvermarktung. Zu jedem
Fahrzeug das in einer Garage steht, gibt es eine Fülle von Informationen die einmal in das VTS
eingeben werden müssen und dann immer sofort abrufbar sind, wenn ein Kunde Interesse an einem
Angebot zeigt. Die Kunden
n haben in der Regel ganz spezielle Vorstellungen wie ein zukünftiges
Fahrzeug aussehen soll. Mittels SQL Datenbank
Datenba und einer ausgefeilten Suchfunktion kann
kan in
Sekundenschnelle eine Liste aller Fahrzeuge, die den Wünschen des Kunden entsprechen,
entsprechen erzeugt
werden. Kunden, die sich nicht im Einzugsgebiet befinden,, erreicht man über den einfachen Upload
des Fahrzeugangebots auf die Homepage und zu Automobilbörsen wie zum Beispiel
Beispie Autoscout24.
Gesamtüberblick
Projekt
Mobile DMS-Datenerfassung
Datenerfassung
Autor
Datum
Version
Dokument
Philipp Buser
10.09.2009
1.0
Projektdokumentation
Seite
12(141)
Sobald ein Kunde sich
ich für eines oder mehrere Fahrzeuge entschieden hat, können im Handumdrehen
alle Verträge sowie Dokumente erstellt werden, die für den erfolgreichen Abschluss des Geschäfts
und zur Übergabe der Fahrzeuge im AnA und Verkauf benötigt werden.
VCS (Vehicle Calculation System): Das Kalkulationssystem für Karosseriefachbetriebe. VCS stellt die
Möglichkeit zur Verfügung, auf Informationen über alle Aufträge, Fahrzeuge und Kontakte des
Kunden zugreifen zu können (Kundenhistorie). Diese Ausgangslage ermöglicht es,
es schnellstmöglich
auf die Belange eines Kunden einzugehen. Die Auftragskostenermittlung
Auftra
kann sofort nach der
Fahrzeugbesichtigung mit Hilfe des Kalkulationsmoduls des Datenlieferanten erledigt und das
Ergebnis in Form eines Kostenvoranschlags entweder persönlich oder aus dem VCS heraus per Fax
F
oder Email an den Kunden übermittelt werden.
d
VIS (Vehicle Inhouse System): VIS vereint die Funktionen der Programme VCS für den
Werkstattbereich und VTS für den Fahrzeughandel so, dass diese auf eine KundenKunden bzw.
Fahrzeugdatenbank zurückgreifen können. Durch ein ausgefeiltes ZugriffsZugriffs und Rechtemanagement
Rechteman
können jedem Mitarbeiter nur die Programmfunktionen und Informationen zur Verfügung gestellt
werden, die sich in dessen Aufgabenbereich befinden. Der standortübergreifende Einsatz des VIS ist
zum Beispiel unter Zuhilfenahme des Microsoft Windows Terminal Server zu bewerkstelligen.
Abgerundet wird die Software durch den Einsatz der
der Schnittstellen zur Finanzbuchhaltung,
Betriebsdatenerfassung InTime2000
2000 sowie dem Werkstattannahme- und Planungssystem JPS.
JPS VIS
stellt damit das zentrale Produkt in der GCS-Softwareumgebung
GCS
dar.
Annahme Auftrags- und Mietwagenplanungssystem.
etwagenplanungssystem. APS ist für alle
APS (Auto Planing System): Das Annahme-,
Karosserie-, Lackierfach- und Kfz-Betriebe
Kfz Betriebe sowie Autohäuser geeignet. Ziel ist eine Optimierung der
Kundenannahme, Ersatzfahrzeugverplanung und die Steigerung der Kundenzufriedenheit. Es wird
eine hohe Terminsicherheit
it erreicht und Wartezeiten werden verkürzt oder sogar vermieden. Durch
die optionale Erweiterung mit dem Reifenservice ist das APS auch interessant für alle Betriebe, die
für Ihre Kunden Reifen einlagern bzw. damit handeln. Eine detaillierte KundenKunden und
Fahrzeugverwaltung
ahrzeugverwaltung mit allen hierzu gehörenden Daten und Dokumenten, sowie einem TerminTermin und
Kontaktmanagement mit automatischem Wiedervorlagesystem erleichtert die notwendigen
Verwaltungsaufgaben
altungsaufgaben in hohem Masse.
Mass
JPS (Job Planing System): Das Service-,
Service Annahme- und Werkstattplanungssystem. JPS dient für die
Planung und Organisation der Kundendienstannahme, der Werkstatt und des TeileTeile und
Zubehörlagers, sowie aller übrigen Bereiche des Betriebes inklusive der externen Zuarbeiten durch
andere Betriebe. Es gibt
bt einen schnellen Überblick über freie Werkstattkapazitäten unter
Berücksichtigung von Urlaubs-,, Krankheits-,
Krankheits Schulungs- und anderer Ausfallzeiten der Mitarbeiter. In
Verbindung mit entsprechenden Zeitmodellen ist eine gleichmässige Werkstattauslastung die
di Folge.
Darüber hinaus erhält man die nötige Flexibilität für z.B. einen unvorhersehbaren Einsatz des
Personals oder anderer Betriebsressourcen. Der schnelle und detaillierte Überblick über schon
eingeplante Service-Termine
Termine erleichtert zudem die Entzerrung
Entzerrung der Auftragsannahme und der
Werkstattdurchlaufzeiten. Komplette Vorgänge können von der Annahme bis zur
Fahrzeugauslieferung und Rechnungsstellung geplant, überwacht/kontrolliert bzw. gesteuert
werden.
Das heisst: mit
it diesem Programm arbeitet die (Telefon-)Zentrale,
(Telef )Zentrale, die Kundendienstannahme, der
Werkstattmeister, eventuell sogar die Werkstattmitarbeiter,
Werkstattmitarbeiter die Buchhaltung (Rechnungsstellung)
(Rechnungsstel
und das Management.
Gesamtüberblick
Projekt
Mobile DMS-Datenerfassung
Datenerfassung
Autor
Datum
Version
Dokument
Philipp Buser
10.09.2009
1.0
Projektdokumentation
Seite
13(141)
EKS (Elektronisches Kassensystem): EKS ist ein Zusatzprogramm für die GCS FakturaFaktura und
Lagersysteme.
steme. Es übernimmt die Aufgaben einer Kasse in einem Betrieb. EKS ist für alle Karosserie-,
Karosserie
Lackierfach-, Kfz-Betriebe
Betriebe und Autohäuser geeignet. Dabei ist es unerheblich, ob die Zahlung durch
Bargeld oder mit einer EC-, VISA--, Master- oder American Express-Karte erfolgt.
europa3000: Die Business Software von europa3000 steuert die Debitoren-,, Kreditorenverwaltung
und die Finanzbuchhaltung zur GCS-Gesamtlösung
GCS
bei.
InTime2000: InTime2000 ist ein BetriebsdatenBetriebsdaten und Zeiterfassungssystem.
2.2 Ziel des Auftraggebers
Auftraggebe
Garagen und Carrosseriebetrieben,
iebetrieben, die mit den oben beschriebenen Produkten arbeiten, soll mit
einer mobilen Datenerfassungssoftware die Möglichkeit geboten werden, ihre Werkstattplanung
noch einen weiteren Schritt zu digitalisieren und automatisieren.
Motivation
Was waren die Überlegungen, den Schritt zu mobilen Geräten zu wagen, wo doch damit so
offensichtliche Nachteile wie kleine Displays und damit schlechtere Bedienbarkeit oder mangelnde
Robustheit verbunden sind?
Ein erster Punkt ist natürlich der, dass mit diesem Projekt im Rahmen einer Master Thesis dem
Auftraggeber kaum Kosten entstehen und das Risiko somit relativ klein ist.
ist
Der Grundgedanke ist aber ein anderer: Der
D Auftraggeber hat bei seinen Kunden den Trend
beobachtet, dass sie für Informatikmittel
Informati
immer weniger zu investieren
en bereit sind.
sind Hier könnte die
Mehrfachverwendung von mobilen Geräten
Geräte eine Chance sein:
•
•
•
•
Ein Verkäufer, der sowieso ein Geschäftshandy hat oder haben muss, kann damit dann auch
noch seine Daten erfassen und zurückmelden.
Das Handy mit der Geschäftsapplikation kann einem Mitarbeiter auch für private Zwecke
Zweck zur
Verfügung gestellt werden (z.B. als Lohnbestandteil oder anstelle einer Lohnerhöhung).
Ein Mitarbeiter installiert die Applikation auf seinem privaten Handy und verwendet es
(gegen ein Entgelt) im Betrieb.
usw.
Das bedeutet:
•
•
•
Es muss keine
eine doppelte Investition in Hardware getätigt werden.
Es bleibt mehr
ehr Budget für
für Software (auf Hardware gibt es kaum mehr Marge).
Marge)
Die Bereitschaft
eitschaft etwas auszuprobieren ist grösser, wenn nicht extra Hardware gekauft
werden muss bzw. wenn die Hardware auch für Anderes
A
(z.B.
z.B. im privaten Bereich)
verwendet werden kann.
2.3 Ziel der Master Thesis
Es soll eine Applikation mit dem Windows Mobile SDK für Geräte mit Windows Mobile 6.0/6.1
Betriebssystem
tem erstellt werden, welche die bestehende DMS-Software-Suite
DMS
Suite von GCS um eine mobile
Komponente ergänzt. Der Fokus richtet sich jedoch nicht unbedingt auf die Applikation selbst,
sondern auf die Untersuchung und Ausarbeitung der Grundlagen für die Kommunikation
Kommunik
und den
Datenaustausch zwischen
en der DMS-Lösung
DMS
und dem mobilen Gerät. Anhand
hand eines vertikalen
Prototyps im Bereich vom Job Planing System (JPS) soll dann die Umsetzbarkeit geprüft werden.
Gesamtüberblick
Projekt
Seite
Mobile DMS-Datenerfassung
Datenerfassung
Autor
Datum
Version
Dokument
Philipp Buser
10.09.2009
1.0
Projektdokumentation
Projektteilziele
14(141)
Ergebnisse
Geräteauswahl
•
2 mobile Testgeräte
Anforderungen und Anwendungsfall des Prototyps
definieren
•
Pflichtenheft
Windows Mobile SDK sowie .NET Compact Framework
kennenlernen
•
Kleine Testanwendung
Möglichkeiten des Datenaustausches untersuchen
•
Technologie-Studie,
Studie, Softwarearchitektur
Prototyp für den Anwendungsfall implementieren
•
Funktionierender Prototyp
Optional: Spracherkennung evaluieren
evaluier und allenfalls
implementieren
•
Prototyp mit Sprachunterstützung
Dokumentation erstellen
•
Bericht
a)
b)
c)
d)
e)
Datenbank Direktzugriff
Datenbank Remote-Datenzugriff
Datenzugriff
Datenbank Merge-Replikation
Replikation
Webservices
Sync Services for ADO.NET
Nicht-Ziele
Es ist nicht das Ziel eine fertige, einsatzfähige Applikation
A
zu erstellen.
Dementsprechend ist auch kein Benutzerhandbuch o.ä. zu schreiben.
Eine
ne webbasierte Lösung
L
wird nicht verfolgt,, damit für zukünftige Erweiterungen
keine Einschränkungen bestehen.
Wirkung / Nutzen
Projektphasen /
Hauptaufgaben
Grundlage für weitere Entwicklung. Prototyp als Machbarkeitsstudie sowie als
Demonstrationsobjekt für zukünftige Kundenbefragungen.
1.
Einarbeitung und Anforderungen
2.
Technologie-Studie
3.
Analyse und Entwurf
4.
Entwicklung und Verifikation
5.
Dokumentation
2.4 Meilensteine
Nr.
Meilenstein
Soll-Termin
Termin
Ist-Termin
MS 1
Projektstart
MO, 09.03.2009 MO, 09.03.2009
MS 2
Projektauftrag liegt vor
FR, 20.03.2009
FR, 20.03.2009
MS 3
Anforderungen festgelegt, Abgabe Pflichtenheft
DO, 23.04.2009
DI, 28.04.2009
MS 4
Pflichtenheft bestätigt
FR, 08.05.2009
MI, 29.04.2009
MS 5
Technologie-Studie
Studie abgeschlossen
FR, 10.07.2009
MI, 29.07.2009
MS 6
Entwicklung und Verifikation abgeschlossen
FR,, 04.09.2009
FR, 28.08.2009
MS 7
Abgabe Bericht
DO,, 10.09.2009 DO, 10.09.2009
MS 8
Präsentation und Projektende
FR, 11.09.2009
Gesamtüberblick
FR, 11.09.2009
Projekt
Mobile DMS-Datenerfassung
Datenerfassung
Autor
Datum
Version
Dokument
Philipp Buser
10.09.2009
1.0
Projektdokumentation
Seite
15(141)
2.5 Rahmenbedingungen
Es wurde wo immer möglich mit den aktuellsten Technologien und Produkten gearbeitet werden. Es
sind dies:
•
•
•
•
•
•
Windows Mobile 6.1 Professional
.NET Framework 3.5
.NET Compact Framework 3.5
SQL Server 2008
SQL Server Compact 3.5
Visual Studio 2008 Professional Edition
Die Hardware- und Softwareanforderungen
twareanforderungen an das mobile Gerät, an den Server und an das
Entwicklungssystem sind in den folgenden Unterkapiteln beschrieben.
2.5.1 Zielsystem Mobiles Gerät
Zusammen mit dem Auftraggeber sind die folgenden Muss-Anforderungen
Anforderungen an das mobile Gerät
definiert worden:
•
•
•
•
•
•
Windows Mobile Betriebssystem
Wir konzentrieren uns auf Geräte mit
mi Windows Mobile Betriebssystem.. Die aktuelle Version
6.0 oder 6.1 wird bevorzugt, je nachdem kommt auch noch die Version 5.0 in Frage.
Der Einsatz von WindowsWindows und .NET-Technologien
n in der Firma GCS hat Tradition. Die
gesamte Software-Produktpalette
Produktpalette basiert darauf. Deshalb kommen für den Auftraggeber nur
windowsbasierte Systeme in Frage und auf die Evaluation von Geräten mit Symbian-OS
Symbian
oder
Palm-OS,
OS, etc. wird vollständig verzichtet.
Mit Windows Mobile sehen wir zudem die Möglichkeit, dass sowohl professionelle Geräte
wie auch bei Bedarf eine Vielzahl von einfacheren und günstigeren Smartphones oder PDA‘s
PD
zum Einsatz kommen können.
Touchscreen
Die Applikation muss über einen Touchscreen
Touchscreen (per Finger oder Stift) bedient werden können.
Unser Zielgerät wird deshalb mit Windows Mobile 6 Classic oder Professional ausgerüstet
sein, wohingegen Windows Mobile 6 Standard für Geräte ohne Touchscreen zum Einsatz
kommt.
Grosses Farbdisplay
Für diee Praxistauglichkeit und Akzeptanz des Gerätes spielt das Display sicherlich eine
massgebende Rolle. Displaygrössen ab 2.8 Zoll kommen in Frage.
Auflösung: mindestens 240x320
240x
Pixel
Um die geplanten Funktionalitäten benutzergerecht darstellen zu können, wird
wir eine
möglichst hohe Auflösung benötigt.
benötigt. Ideal wäre wohl VGA (480x640 Pixel).
Pixel)
Wireless-LAN: IEEE 802.11b (11 MBit/s) oder IEEE 802.11g (54 MBit/s).
Der Datenaustausch zwischen mobilen Gerät und Server erfolgt vorzugsweise über WLAN, in
Ausnahmefällen natürlich
rlich auch über GSM/GPRS.
WLAN stellt zurzeit die beste Möglichkeit dar, in einem überschaubaren Gebiet die drahtlose
Kommunikation kostengünstig zu gewähren.
Robustes Gehäuse oder zumindest Schutzhülle erhältlich
Das Umfeld, in welchem die zu entwickelnde Applikation auf dem mobilen Gerät eingesetzt
werden soll, sind Autowerkstätten, Garagen
Garage und Carrosserie-Betriebe.
etriebe. Also ein Umfeld, in
Gesamtüberblick
Projekt
Mobile DMS-Datenerfassung
Datenerfassung
Autor
Datum
Version
Dokument
Philipp Buser
10.09.2009
1.0
Projektdokumentation
Seite
16(141)
welchem das Gerät auch mal mit schmutzigen Händen bedient wird, oder es vom Tisch fallen
kann. Deswegen soll das Gerät einigermassen stabil und robust sein.
Optionale Anforderungen zur Erhöhung der Funktionalität oder für eine bessere Betriebsstabilität
sind:
•
•
•
•
RFID-Sender/Empfänger
Sender/Empfänger
Für spätere Anwendungsfälle, die jedoch nicht Bestandteil von diesem Projekt sind, könnte
die RFID-Technologie
Technologie durchaus zum Einsatz kommen.
Barcode-Leser
Ebenfalls für weitere Anwendungsfälle einsetzbar.
GSM/GPRS/UMTS/HSDPA
Die Nutzung der klassischen Mobilfunktechnologien
Mobilfunktechnologien macht auf jeden Fall als Alternative zum
WLAN Sinn und bieten auch die Möglichkeit,
Möglichkeit, das mobile Gerät von extern oder für andere
Zwecke zu verwenden.
Akku und Ladestation
Der Batterie bzw. der Akkudauer sollte ebenfalls Aufmerksamkeit beigemessen werden.
Zudem sollte der Akku problemlos ausgewechselt werden können, falls er mit der
de Zeit
schwächer wird. Grundsätzlich sind Akkus mit langer Betriebs- und Standbyzeit, schnelle
Wiederaufladung und langer Lebensdauer zu bevorzugen. Idealerweise gibt es zum Gerät
eine Ladestation in welcher es versorgt
ve
und geladen werden kann.
Mögliche Zielgeräte
Eine (unvollständige) Auswahl möglicher Zielgeräte im Low-End
Low End Bereich, welche die obigen
Anforderungen erfüllen, zeigt die folgende Auflistung:
•
•
•
•
•
•
i900, SGH-GT-M8800,
SGH
SGH-F480, etc.
Samsung Omnia SGH-i900,
HTC Touch Series (Touch HD, Touch 3G, Touch Diamond,
Diam
Touch Cruise, Touch Dual, etc.)
LG KS20, LG GM730
Aktuelle HP iPAQ Series, z.B. HP iPAQ 614, iPAQ 210
Toshiba Portégé G810, TG01
Acer F900
Im etwas professionelleren und industriellen Bereich, der sich vor allem durch die höhere Robustheit
der Geräte auszeichnet, kommen unter anderem folgende Modelle in Frage:
•
•
•
•
Motorola MC5590 (ca. CHF 2100.-),
2100. MC75 (ca. CHF 3000.-)
Unitech PA500 (ca. CHF 850.-)
850.
TimbaTec Nautiz X5 (ca.
ca. CHF 2000.-),
2000. TDS Nomad (ca. CHF 2600.-),
TDS Recon (ca. CHF 1800.-)
1800.
Psion Teklogix
ix Ikôn (ca. CHF 3000.-)
3000.
Weitere Hersteller von MDE-Geräten,
Geräten, die allenfalls zum Einsatz kommen könnten, sind Intermec und
Honeywell (Dolphin Series).
Für diese Master Thesis stand ein HTC Touch HD und ein Psion Teklogix Ikôn zur Verfügung.
Gesamtüberblick
Projekt
Mobile DMS-Datenerfassung
Datenerfassung
Autor
Datum
Version
Dokument
Philipp Buser
10.09.2009
1.0
Projektdokumentation
Seite
17(141)
2.5.2 Zielsystem Server
Ein DMS-Server besteht – nebst den GCS-Programmen
GCS
– typischerweise aus folgender Software:
•
•
•
•
Windows Server 2003 oder 2008
SQL Server 2005 oder 2008
.NET Framework 3.5
Internet Information Services (IIS) 6.0 oder 7.0
Für Kleinstkunden, die ohne Server
ver-Betriebssystem arbeiten, kann jedoch auch folgende
Konfiguration zum Einsatz kommen:
•
•
•
•
Windows XP Professional
SQL Server 2008 Express Edition with Advanced Services
.NET Framework 3.5
Internet Information Services (IIS) 5.1
2.5.3 Entwicklungssystem
Das zur Verfügung
erfügung stehende Entwicklungssystem weist folgende Software auf:
•
•
•
•
•
•
•
•
•
Windows XP Professional
SQL Server 2008 Enterprise Edition
SQL Server 2008 Express Edition with Advanced Services
.NET Framework 3.5
Internet Information Services (IIS) 5.1
Visual Studio 2008
08 Professional Edition
Windows Mobile 6 Professional SDK
Enterprise Architect 7.5
ActiveSync 4.5
Gesamtüberblick
Projekt
Seite
Mobile DMS-Datenerfassung
Datenerfassung
Autor
Datum
Version
Dokument
Philipp Buser
10.09.2009
1.0
Projektdokumentation
18(141)
Teil 1 – Technologie-Studie
Technologie
3 Einführung
Dieser Teil beschreibt die Erkenntnisse aus den gelesenen Büchern, Dokumenten und Artikeln und
die theoretischen Grundlagen
dlagen zu den durchgeführten Untersuchungen und
und Test, die ich im Rahmen
der Technologie-Studie
Studie durchgeführt habe.
Die aus dem Pflichtenheft übernommene und ergänzte Tabelle zeigt, welche Themen erfolgreich
bearbeitet werden konnten.
ID
Priorität 1
Priorität 2
Priorität 3
Kennenlernen,
Testanwendung
-
-
TS002
Windows Mobile SDK
und .NET Compact
Framework
SQL Server Compact
Kennenlernen,
Testanwendung
-
-
TS003
Webservice
Datensatz abrufen,
Tabelle/Liste abrufen
Daten
zurückschreiben
-
TS004
SQL Server MergeReplikation
Tabellenstruktur
replizieren
-
TS005
SQL Server RemoteDatenzugriff
Datensatz abrufen,
Tabelle/Liste abrufen
Daten
zurückschreiben
-
TS006
Sync Services for
ADO.NET
Datensatz abrufen,
Tabelle/Liste abrufen
Daten
zurückschreiben
-
TS009
Direct Access
Datensatz abrufen,
Tabelle/Liste abrufen
Daten
zurückschreiben
TS007
Microsoft Voice
Command
-
-
Sprachsteuerung
testen
TS008
Speech Application
Programming Interface
-
-
Sprachsteuerung
implementieren
TS001
Tabelle replizieren
Tabelle 1: Themen der Technologie-Studie
Studie
Es folgen Ausschnitte und Zusammenfassungen aus dem Dokument „Technologie-Studie“,
„Technologie
welches
während dieser Master-Arbeit
Arbeit erstellt wurde.
4 Grundlagen und Basistechnologien
Als erstes ging es darum, die Grundlagen für die Applikationsentwicklung für Windows Mobile zu
erarbeiten. Die Ergebnisse sind nur soweit dokumentiert, wie sie für dieses Projekt relevant sind.
Ich habe untersucht,, welche Funktionen und Möglichkeiten aber auch welche Einschränkungen das
Windows Mobile Software Development Kit und das .NET
.NET Compact Framework 3.5 bieten,
bieten
insbesondere natürlich im Hinblick auf den zu entwickelnden
entwickelnden Prototyp. Dazu wurde eine kleine
Testanwendung erstellt, mit der auch die Handhabung des Deployments aufs mobile
obile Gerät getestet
werden konnte.
Grundlagen und Basistechnologien
Projekt
Mobile DMS-Datenerfassung
Datenerfassung
Autor
Datum
Version
Dokument
Philipp Buser
10.09.2009
1.0
Projektdokumentation
Seite
19(141)
4.1 Windows Mobile
4.1.1 Windows CE vs. Windows Mobile
Windows CE ist ein Real-Time
Time Operating System (RTOS, Echtzeitbetriebsystem) das man verwenden
kann um z.B. Roboter, industrielle Controller, Internet Appliances,
Appliances, etc. zu bauen. Windows CE kommt
mit einen Platform-Builder
Builder Tool, mit welchem man diejenigen Komponenten für die eigene Plattform
auswählen kann, die man will und benötigt. Entwickler können dann die Plattform, die man auf diese
Weise erstellt hat, weiter ausbauen. Die Plattform ist jedoch nicht standardisiert.
Windows Mobile auf der anderen Seite ist eine standardisierte Plattform für PDAs und
Mobiltelefone. Das Windows Mobile Team baut sie aus ausgewählten Windows CE-Komponenten
CE
und erstellt so ein
in Bausatz für Mobilgeräte-Hersteller
Mobilgeräte
und -Verkäufer,
Verkäufer, die diesen auf ihrer Hardware
integrieren. Windows Mobile hat damit Windows CE als Kern und zusätzlich ein eigenes
standardisiertes User Interface sowie ein Standardset an Applikationen und APIs.
4.1.2 Windowss Mobile 5.0 vs.
vs Windows Mobile 6
Windows Mobile 6 bietet ausgezeichnete Kompatibilität
Ko
mit Windows Mobile 5.0-Anwendungen.
5.0
Kompatibilität
mpatibilität mit Windows Mobile 5.0 ist ein explizites
lizites Ziel von Windows Mobile 6 und ist während
des gesamten Entwicklungsprozesse
ngsprozesses von Windows Mobile 6 strikt getestet worden. Die
überwältigende
nde Mehrheit von Windows Mobile 5.0-Anwendungen wird auf Windows Mobile 6Geräten ohne Änderung ausgeführt. Es ist lediglich erforderlich, dass die Anwendung unterstützte
unte
APIs verwendet. Wie man sich denken kann,
k
kann es bei Windows Mobile 5.0-Anwendungen,
Anwendungen, die
undokumentierte oder nicht unterstützte APIs verwenden, zu Anwendungskompatibilitätsproblemen
kommen, die bei den Anwendungen, die unterstützte APIs verwenden, nicht auftreten.
Die gute Kompatibilität
mpatibilität von Windows Mobile 6 mit Windows Mobile 5.0-Anwendungen,
Anwendungen, ermöglicht
es, eine einzige Exe-Datei für Windows Mobile 5.05.0 und Windows Mobile 6-Geräte
Geräte zu erstellen,
indem man nach eigener Wahl
ahl entweder das Windows Mobile 5.0-SDK
5.0 SDK oder das Windows Mobile
M
6SDK verwendet.. Diese Anwendungen laufen hervorragend auf Windows Mobile 5.0 und sogar noch
besser auf Windows Mobile 6, dank vieler Verbesserungen
Verbesserungen in Windows Mobile 6 wie z.B.
z. der
Aufnahme
ahme von .NET Compact Framework 2.0 und SQL Server Compact Edition
on in das ROM.
4.1.3 Windows Mobile 6.1
Windows Mobile 6.1 ist die zurzeit aktuelle Betriebssystemversion. Eine von Microsoft angekündigte
Zwischenversion 6.5 soll ab Oktober 2009 zur Verfügung stehen, erste Geräte werden für Ende 2009
erwartet. Windows Mobile 7 soll voraussichtlich 2010 unter der Bezeichnung Windows Phone
erscheinen.
Windows Mobile 6.1 gibt es sowohl für Smartphone-Geräte
Smartphone Geräte (Windows Mobile Standard) als auch für
Touchscreen-Geräte
Geräte (Windows Mobile Professional). Eine spezielle Version gibt es für Geräte ohne
Telefonfunktionen (Windows Mobile Classic).
Die Plattform unterstützt verschiedenen Displayauflösungen,
Displayauflösungen, die in der folgenden Tabelle aufgeführt
sind.
Grundlagen und Basistechnologien
Projekt
Mobile DMS-Datenerfassung
Datenerfassung
Autor
Datum
Version
Dokument
Philipp Buser
10.09.2009
1.0
Projektdokumentation
Seite
20(141)
Tabelle 2:: Unterstützte Auflösungen von Windows Mobile 6
In den vielen Jahren seit der Einführung des ursprünglichen Pocket PC-Geräts
PC Geräts wurden Mobilgeräte
enorm weiterentwickelt. Heutzutage sind viele verschiedene Gerätetypen und Ausführungen
erhältlich, und jedes hat seine eigenen Stärken. Früher gab es eine klare Unterscheidung
Unterscheidung zwischen
Gerätetypen, heute dagegen sind Unterschiede zwischen diesen Geräten zunehmend verwischt.
Traditionelle Begriffe, wie z.B.
B. Pocket PC, Smartphone und Pocket PC Phone Edition sind unter
Umständen nicht mehr aussagekräftig genug und können manchmal zu Verwirrung führen. Um die
Möglichkeiten der Geräte und die Beziehung zwischen ihnen klarer zu machen, führte
führt Microsoft
neue Benennungskonventionen für alle
al Versionen des Windows Mobile 6 Betriebssystems ein. Die
Tabelle zeigt die Beziehung zwischen
chen den Benennungskonventionen
Benennungskonventionen von Windows Mobile 5.0 und
Windows Mobile 6.
Windows Mobile 5.0
Windows Mobile 5.0 für Smartphone
Windows Mobile 5.0 für Pocket PC Phone Edition
Windows Mobile 5.0 für Pocket PC
Windows Mobile 6.0
Windows Mobile 6 Standard
Windows Mobile 6 Professional
Windows Mobile 6 Classic
Tabelle 3: Beziehung zwischen den Benennungskonventionen von WM 5.0 und WM 6
4.1.4 Windows Mobile SDK
Die neue Benennungskonvention konzentriert sich auf die Möglichkeiten jeder Version aus der
Perspektive der Anwendung anstelle der Gerätehardware.
Wenn man schon vorher Windows Mobile-Anwendungen
Mobile
entwickelt hat, ist die äusserst
äu
konsistente
Entwicklererfahrung in der Windows Mobile-Gerätefamilie
Mobile
bekannt.. Der gleiche API-,
API Tool- und
Dienstprogrammsatz wird in der gesamten Windows Mobile-Familie
Mobile Familie verwendet. Das einzige
gerätespezifische Feature ist die Touchscreenunterstützung.
Touchscreenunterstützung. Pocket PC und Pocket PC Phone EditionGeräte haben Touchscreens und unterstützen daher direkte Bildschirmeingabe;
Bildsch
Smartphone
Smartphone-Geräte
haben keinen Touchscreen, eine direkte Bildschirmeingabe wird daher nicht unterstützt.
Unter Berücksichtigung dieses Hauptunterschieds
Hauptuntersc
zielen die Windows Mobile 6-SDKs
SDKs nicht mehr auf
bestimmte Gerätetypen ab, wie es bei früheren Windows
W
Mobile-SDKs
SDKs der Fall war. Stattdessen
unterscheiden
eiden die beiden Windows Mobile 6-SDKs
SDKs zwischen Geräten mit und ohne Touchscreen. Das
Windows Mobile 6 Professional--SDK
SDK wird verwendet, um Anwendungen für Geräte mit Touchscreen
Touchsc
zu entwickeln, also Gerätee der bisherigen Klassen „Pocket PC“ und „Pocket PC Phone
Pho Edition“. Das
Windows Mobile 6 Standard-SDK
SDK wird verwendet, um Anwendungen für Geräte ohne Touchscreen
zu entwickeln, also Geräte, die bisher unter der Bezeichnung „Smartphone“ liefen. Die Beziehung
Bezieh
Grundlagen und Basistechnologien
Projekt
Mobile DMS-Datenerfassung
Datenerfassung
Autor
Datum
Version
Dokument
Philipp Buser
10.09.2009
1.0
Projektdokumentation
Seite
21(141)
zwischen den Windows Mobile 6-SDKs
6
und Windows Mobile 6-Geräten wird in der folgenden Tabelle
gezeigt.
Windows Mobile 6-Betriebssystem
Betriebssystem
Windows Mobile 6 Standard
Windows Mobile 6 Professional
Windows Mobile 6 Classic
Windows Mobile 6-SDK
Windows Mobile 6 Standard-SDK
SDK
Windows Mobile 6 Professional--SDK
Windows Mobile 6 Professional--SDK
Tabelle 4: Beziehung zwischen Betriebssystemen und SDKs
Für Windows Mobile 6.1 gibt es übrigens kein entsprechendes Windows Mobile 6.1 SDK, da die
di
Version 6.1 im Vergleich zur Version 6.0 für Entwickler keine Neuerungen bietet. Somit wird also das
Windows Mobile 6 SDK verwendet. Dennoch gibt es Emulations-Images
Emulations Images für Windows Mobile 6.1
Geräte zum Herunterladen.
Images ermöglichen
ermöglichen es, die mit Visual Studio 2005 oder Visual Studio
Windows Mobile 6.1 Emulator-Images
2008 entwickelten Applikationen zu testen, ohne sie jedesmal auf dem physischen Gerät installieren
zu müssen.
4.2 Windows Mobile 6 SDK
Die Windows Mobile 6-SDKs
SDKs enthalten Tools und Bibliotheken, die benötigt
benötigt werden, um mit dem
Entwickeln von Anwendungen in Windows Mobile 6 mithilfe von Microsoft Visual Studio 2005/2008
zu beginnen.
In Folgenden werden die wichtigsten vom Windows Mobile 6-SDK
6 SDK bereitgestellten Entwicklungstools
und deren Rolle im Anwendungsentwicklungsprozess
ngsentwicklungsprozess beschrieben.
4.2.1 Device Emulator
Emulatoren sind schon immer ein wichtiger Teil der Mobilanwendungsentwicklung gewesen. Sie
ermöglichen das Testen von Anwendungen ohne physisches Gerät. Je mehr Prüfungsvorgänge man
mit dem Emulator machen
en kann, desto leichter, schneller und kostengünstiger kann man arbeiten.
Device Emulator 2.0 wird als Teil des Windows Mobile 6-SDK
6
installiert.. Er bietet grössere Ähnlichkeit
mit der wirklichen Geräteerfahrung durch Emulieren von vielen Gerätezuständen. Device Emulator
2.0 ist ein echter ARM-Emulator.. Er führt damit die gleichen ausführbaren Dateien aus wie ein Gerät,
und hebt dadurch die Notwendigkeit auf,
eigene, für den Emulator ausführbare
Anwendungsdateien zu verwalten.
Ladezustandsemulation
Naturgemäss
mäss nutzen Mobilgeräte
grösstenteils Batteriestrom, an Wechselstrom
werden sie nur gelegentlich angeschlossen.
Eine Anwendung muss ggf. bestimmte
Aktionen vornehmen, um einen Datenverlust
für den Fall zu vermeiden, dass die Batterie
vollständig entladen wird.
Damit die Auswirkungen von Änderungen des
Ladezustands auf die Anwendung getestet
werden kann, wurde mit Device Emulator 2.0
eine Ladezustandsemulation eingeführt.
Abbildung 3:: Steuerelemente der Ladezustandskoniguration
von Device Emulator
Grundlagen und Basistechnologien
Projekt
Mobile DMS-Datenerfassung
Datenerfassung
Autor
Datum
Version
Dokument
Philipp Buser
10.09.2009
1.0
Projektdokumentation
Seite
22(141)
Der Konfigurationsdialog des Emulators ermöglicht durch Aktivieren bzw. Deaktivieren des
Kontrollkästchens Battery zwischen Batteriestrom und Wechselstrom umzuschalten. Für
Batteriestrom kann der Prozentsatz des Batterieladeniveaus festgelegt werden. Der Emulator
reagiert auf diese Änderungen in Energiezustand und Ladeniveau genauso wie ein
ei Gerät. Der
Emulator zeigt die passenden Symbole und Nachrichten an; er löst auch die passenden Ereignisse für
Zustand und Benachrichtigungsvermittlung aus.
Telefonprofilemulation
Device Emulator 2.0 stellt Support für drei Telefonprofile bereit: Kopfhörer,
Kopfhörer, Lautsprecher und
Autofreisprechanlage. Jedes dieser Profile kann über Kontrollkästchen aktiviert werden. Wenn ein
Profilkontrollkästchen aktiviert ist, agiert der Emulator so, als wäre ein Kopfhörer angeschlossen, der
Lautsprecher aktiviert oder die Freisprechanlage
Freisprechanlage angeschlossen, wozu auch das Auslösen der
passenden Ereignisse für Zustand und Benachrichtigungsvermittlung gehört.
4.2.2 Cellular Emulator
Die Mehrheit der heute erhältlichen Windows Mobile-Geräte
Mobile
bietet Telefonie- und andere
Möglichkeiten der drahtlosen
rahtlosen Kommunikation. Es gibt viele verschiedene Situationen, in denen eine
Anwendung mit diesen Kommunikationsmöglichkeiten interagieren könnte. In jedem Fall war die
Entwicklung dieser Art Anwendungen traditionell schwierig, grösstenteils aufgrund der Schwierigkeit,
so eine Anwendung zu testen. Deshalb enthält das
Windows Mobile 6-SDK
SDK den Cellular Emulator.
Cellular Emulator ist ein leistungsfähiges Tool zum
Testen des Verhaltens einer Anwendung, wenn sich
der Zustand mobiler Kommunikation ändert. Er
ermöglicht es, einfache Tests durchzuführen, wie
ausgehende Anrufe vorzunehmen, eingehende
Anrufe zu empfangen und eine Verbindung
abzubrechen. Der Emulator enthält ähnliche Features
für SMS-Nachrichten.
Nachrichten. Für Entwickler, die weitere
damit zusammenhängende Features
eatures testen müssen,
bietet Cellular Emulator Unterstützung für das
Ändern der SIM-Konfiguration
Konfiguration und das Simulieren
von Netzwerkhandoffs zwischen 2G2G und 3GNetzwerken. All diese Prüfungen werden
Abbildung 4:: Cellular Emulator für den Test von
durchgeführt, ohne dass ein physisches Gerät
Telefonie- und Kommunikationsverhalten
erforderlich ist.
4.2.3 FakeGPS
Die weit verbreitete Verfügbarkeit preiswerter globaler Positionssysteme in Kombination mit dem
leicht zu bedienenden GPS Intermediate Driver, der in Windows Mobile 5.0 eingeführt wurde, bietet
Entwicklern die Gelegenheit, ihre Anwendungen standortaktiviert
standortaktiviert zu gestalten. Bisher war es
schwierig, eine gute Testmethode für standortaktivierte Anwendungen zu finden. In Windows Mobile
6.0 wurde dieses Problem mit dem FakeGPS-Dienstprogramm
FakeGPS
gelöst.
FakeGPS ermöglicht es, standortaktivierte Anwendungen
Anwendungen ohne Zugriff auf ein aktives GPS-Gerät
GPS
oder
einen aktiven GPS-Feed
Feed zu testen. Stattdessen erstellt man eine einfache Textdatei, die eine Liste von
GPS NMEA-Nachrichten enthält und aktiviert dann FakeGPS.
Wenn FakeGPS in Verbindung mit GPS Intermediate Driver
Driver arbeitet, leitet es die Nachrichten von der
Textdatei an alle Anwendungen, die den GPS-Feed
GPS Feed lesen, weiter. Weil FakeGPS direkt mit GPS
Grundlagen und Basistechnologien
Projekt
Mobile DMS-Datenerfassung
Datenerfassung
Autor
Datum
Version
Dokument
Philipp Buser
10.09.2009
1.0
Projektdokumentation
Seite
23(141)
Intermediate Driver arbeitet, kann man die Anwendungen sowohl auf echten Geräten als auch auf
Device Emulator testen,
n, ohne Änderungen am Programm vorzunehmen.
4.2.4 Security Configuration Manager
Wenige Dinge sind frustrierender als ein plötzliches Versagen der Anwendung, an deren Entwicklung
man so hart gearbeitet hat, wenn diese auf dem Gerät eines Benutzers installiert wird.
w
Leider kann es
dazu kommen, wenn die Anwendung nicht unter den gleichen Sicherheitseinstellungen getestet
wurde, die auf dem Gerät des Endbenutzers herrschen. Die beste Möglichkeit, sicherheitsbezogene
Probleme zu vermeiden, besteht darin, Sicherheitsplanung
Sicherheitsplanung zu einem zentralen Teil des
Anwendungsentwurfs, der Entwicklung und des Prüfungsprozesses zu machen. Dies ist der Zweck
von Security Configuration Manager.
Security Configuration Manager läuft auf dem Desktop und stellt zwei wesentliche Dienste bereit.
ber
Security Configuration Manager zeigt die aktuellen Sicherheitseinstellungen des Geräts bzw.
Emulators an, das bzw. der derzeit eine Verbindung zum Desktop durch Microsoft ActiveSync auf
Windows XP oder Windows Mobile Device Center (WMDC) auf Vista hat.
hat. Zu diesen Einstellungen
gehören Gerätesicherheitsrichtlinie, die Liste einzelner Sicherheitseinstellungen und die Liste der
Zertifikate, die in jedem Zertifikatspeicher des Geräts installiert sind.
Security Configuration Manager ermöglicht es auch, den Emulator
Emulator mit gemeinsamen
Sicherheitsrichtlinien zu konfigurieren. So kann die Wirkung der verschiedenen Sicherheitsrichtlinien
auf die Anwendung getestet werden, ohne ein Gerät zu benötigen.
4.2.5 CabSignTool
Vor der Verteilung einer Anwendung müssen normalerweise
normalerweis die Anwendungs-Exe
Exe-Dateien und die
Installationsdateien mit dem passenden Zertifikat signiert werden, um eine Organisation als
Herausgeber der Anwendung zu identifizieren. Aus Sicherheitsgründen müssen alle ausführbaren
Dateien der Anwendung (sowohl *.dll
*.dl als auch *.exe) und die CAB-Datei,
Datei, die die Anwendung
installiert, signiert werden. Das Signieren jeder einzelnen ausführbaren Datei, das Erstellen der CABCAB
Datei und anschliessend das Signieren der CAB-Datei,
CAB
können zeitaufwändig sein, besonders in
Fällen,, in denen eine Anwendung aus mehreren ausführbaren Dateien zusammengesetzt ist. Das
Dienstprogramm CabSignTool ist ein Befehlszeilenprogramm, das den Signiervorgang vereinfacht,
indem es von der Kleinarbeit des Signierens der einzelnen Teile einer Anwendung
Anwendung entlastet.
Mit dem CabSignTool-Dienstprogramm
Dienstprogramm können eine CAB-Datei
CAB Datei und alle enthaltenen ausführbaren
Dateien in einem einzigen Vorgang signiert werden. Man erstellt einfach die ausführbaren Dateien
der Anwendung und erstellt die CAB-Datei,
CAB
ohne sich um
m das Signieren zu kümmern. Das
CabSignTool-Dienstprogramm
Dienstprogramm löst dann den CAB-Dateiinhalt
CAB Dateiinhalt auf, signiert jede ausführbare Datei,
baut die CAB-Datei
Datei wieder zusammen, integriert die signierte Version der Exe-Dateien,
Exe Dateien, und signiert
dann die CAB-Datei.
4.2.6 Weitere Tools
ols und Bestandteile des SDK
Das Windows Mobile 6 SDK enthält noch eine Reihe weiterer Tools und Bibliotheken, auf welche an
dieser Stelle jedoch nur ganz kurz eingegangen wird:
•
•
Hopper: Simuliert
imuliert einen Benutzer, der schnell und wahllos innerhalb der Anwendung
Anwen
klickt.
Dies stellt eine Anwendung unter ungeheure Belastung, und macht in solchem Ausmass
unstrukturierten Gebrauch von der Anwendung, dass Anwendungsfehler angezeigt werden
können, die beim Durchführen traditioneller Funktionsprüfungen
Funktionsprüfungen nicht leicht zu finden sind.
Local Server Framework:: Enthält
Enthält Tools und Klassen zur Vereinfachung der Prüfung mobiler
Anwendungen, deren Funktion auf der Kommunikation mit Remoteservern basiert.
Grundlagen und Basistechnologien
Projekt
Mobile DMS-Datenerfassung
Datenerfassung
Autor
Datum
Version
Dokument
Philipp Buser
10.09.2009
1.0
Projektdokumentation
•
•
•
Seite
24(141)
Beispiele: Das Windows Mobile 6-SDK
6 SDK bietet mehrere nützliche Beispiele. Diese
Di
decken die
meisten Punkte ab, denen man beim Entwickeln von Windows Mobile 66-Anwendungen
begegnen wird, verhelfen zu grosser Zeitersparnis und dienen als Lerninstrument.
.NET
NET Compact Framework 2.0:
2.0 Das ROM aller Windows Mobile 6.0-Geräte
Geräte enthält .NET
Compact
ompact Framework 2.0 SP1. Daher können die reichhaltigen Funktionen von .NET Compact
Framework 2.0 im vollen Umfang genutzt werden, ohne .NET Compact Framework 2.0 für
eine Anwendung bereitstellen zu müssen.
SQL Server 2005 Compact Edition:
Edition Bei allen Windows Mobile 6-Geräten
Geräten ist SQL Server
Compact Edition, eine für Unternehmen geeignete relationale Datenbank im ROM installiert.
Mit SQL Server Compact Edition im ROM können Anwendungen eine lokale, vollständig
relationale Datenbank unter SQL Server Compact Edition
Edition nutzen, ohne dass die
Installationskomponenten der Datenbank in die Anwendungsbereitstellung aufgenommen
werden muss.
4.3 .NET
NET Compact Framework
Microsoft .NET Compact Framework ist eine wesentliche Komponente auf Windows MobileMobile und
Windows Embedded CE-Geräten,
Geräten, mit der verwaltete Anwendungen erstellt und ausgeführt sowie
Webdienste verwendet werden können. .NET Compact Framework umfasst eine optimierte Common
Language Runtime (CLR) und eine Teilmenge der .NET Framework-Klassenbibliothek,
Framework Klassenbibliothek, die Features
wie Windows Communication Foundation (WCF) und Windows Forms unterstützt. Sie enthält zudem
Klassen, die ausschliesslich für .NET Compact Framework vorgesehen sind.
4.3.1 Architektur
.NET Compact Framework erbt die
vollständige .NET Framework-Architektur
Architektur
der Common
n Language Runtime für die
Ausführung von verwaltetem Code. Sie
bietet Interoperabilität mit dem Windows
CE-Betriebssystem
Betriebssystem eines Geräts, damit man
auf systemeigene Funktionen zugreifen und
bevorzugte systemeigene Komponenten in
eine Anwendung integrieren kann.
ann.
Verwaltete und systemeigene
Anwendungen können gleichzeitig
ausgeführt werden. Der
Anwendungsdomänenhost, selbst eine
systemeigene Anwendung, startet eine
Instanz der Common Language Runtime für
die Ausführung von verwaltetem Code.
Abbildung 5:: Übersicht der Plattformarchitektur von .NET
Compact Framework
Windows CE
.NET Compact
ompact Framework verwendet das Windows CE-Betriebssystem
CE Betriebssystem für Kernfunktionen und
mehrere gerätespezifische Features. Mehrere Typen und Assemblys, beispielsweise für Windows
Forms, Grafiken, Zeichenvorgänge und Webdienste, wurden neu erstellt. Auf diese Weise
Weis können sie
effizient auf Geräten ausgeführt und müssen nicht aus dem vollständigen .NET Framework kopiert
werden.
Grundlagen und Basistechnologien
Projekt
Mobile DMS-Datenerfassung
Datenerfassung
Autor
Datum
Version
Dokument
Philipp Buser
10.09.2009
1.0
Projektdokumentation
Seite
25(141)
.NET Compact Framework bietet die folgende Interoperabilität mit Windows CE:
• Kompatibilität mit systemeigener Sicherheit
• Volle Integration
n mit systemeigenen Setupprogrammen
• Interoperabilität mit systemeigenem Code unter Verwendung von COMCOM-Interop und
Plattformaufruf
Common Language Runtime
Die Common Language Runtime (CLR) von .NET Compact Framework wurde ebenfalls umgestaltet.
Eingeschränkte
kte Ressourcen können mit begrenztem Arbeitsspeicher ausgeführt und Akkukapazitäten
effizient genutzt werden.
Zwischen Windows CE und der Common Language Runtime wurde eine in der Abbildung nicht
dargestellte Anpassungsschicht für Plattformen implementiert.
implementiert. Über diese Schicht können die von
der CLR und von Framework benötigten Dienste Windows CE-Diensten
CE
und -Schnittstellen
Schnittstellen
zugeordnet werden.
Framework
.NET Compact Framework umfasst einen Teil der Funktionalität von .NET Framework und enthält
darüber hinauss Features, die ausschliesslich für .NET Compact
Compact Framework entwickelt wurden.
Visual Studio
Die Entwicklung von Anwendungen für intelligente Geräte ist in Microsoft Visual Studio 2005 oder
Visual Studio 2008 genauso einfach wie die Entwicklung von Desktopanwendungen.
Desktopanwendungen. Die Entwicklung
für intelligente Geräte in Visual Studio umfasst eine Reihe von Projekttypen und Emulatoren, die die
Entwicklung für Pocket PC, Smartphone und die eingebettete Windows CE-Entwicklung
CE Entwicklung zum Ziel
haben.
4.3.2 Verwaltung des Gerätespeichers
Gerätespeiche
Eine der Stärken von .NET Compact Framework ist seine effiziente Ressourcennutzung, besonders
beim flüchtigen Arbeitsspeicher. Geräte müssen keine Hardware-Speicherverwaltungseinheiten
Hardware Speicherverwaltungseinheiten
(Memory Management Units, MMU) oder virtuellen Speicher
Speich im Betriebssystem
ystem aufweisen.
.NET Compact Framework-Speichergrösse
Speichergrösse
.NET Compact Framework Version 3.5 ist noch nicht im ROM verfügbar.
Für .NET Compact Framework Version 2.0
2 gilt folgende Speichergrösse:
• 5,5 MB (ROM), unkomprimiert, auf Windows Mobile 5.0.
Hinweis: Permanenter Speicher wird ab Windows Mobile 5.0 nicht mehr komprimiert.
Für .NET Compact Framework Version 1.0 gilt folgende Speichergrösse:
Speichergrö
• 1,55 MB (ROM),
OM), komprimiert, auf Pocket PC 2000 und 2002.
• 1,35 MB (ROM), komprimiert, auf Windows Mobile 2003 für
ür Pocket PC und Windows Mobile
2003 für Smartphone.
RAM-Anforderungen
Anforderungen zur Laufzeit:
• 0,5 MB+ (hängt von der Anwendung ab).
Typische Anwendungsgrössen:
• 5-100 KB.
Grundlagen und Basistechnologien
Projekt
Mobile DMS-Datenerfassung
Datenerfassung
Autor
Datum
Version
Dokument
Philipp Buser
10.09.2009
1.0
Projektdokumentation
Seite
26(141)
Speichernutzung
.NET Compact Framework nutzt verfügbaren Systemspeicher konservativ. Auf RAM wird erst
zugegriffen, wenn eine Anwendung gestartet wird. Ausserdem gibt .NET Compact
act Framework RAM
frei, wenn Programme beendet werden.
werden. Das systemeigene Betriebssystem benötigt keine eigenen
Speicherschutzfunktionen. Ausnahmen werden grundsätzlich ausgelöst,
ausgelöst, wenn auf nicht eigenen
Speicher zugegriffen wird.
Bei einer knappen Speichersituation gibt .NET Compact Framework interne Datenstrukturen, die vom
derzeit ausgeführten Code nicht benötigt werden, aggressiv frei. Daher kann das Programm
weiterhin ausgeführt
geführt werden, auch wenn der Speicher knapp ist. Beansprucht die Anwendung mehr
Speicher, als verfügbar ist, schliesst
schlie t .NET Compact Framework die Anwendung sauber und gibt alle
zugrunde liegenden Ressourcen frei. Es ist unwahrscheinlich, dass .NET Compact Framework wegen
Speicherknappheit abstürzt.
Der Anwendungsdomänenhost startet .NET Compact Framework-Anwendungen
Framework Anwendungen und die Common
Language Runtime. Codebereiche sowie statische und dynamische Datenbereiche werden von .NET
Compact Framework-Anwendungen
Anwendungen in der
der gleichen Weise verwendet wie von systemeigenen
Anwendungen. Wenn keine .NET Compact Framework-Anwendungen
Framework Anwendungen aktiv sind, wird über den
Anwendungsdomänenhost hinaus kein RAM beansprucht, und
und die Common Language Runtime
verwendet nur eine kleine Menge an statischen
sta
Daten. Windows CE .NET erstellt einen
Anwendungsdomänenhost, wenn eine .NET Compact Framework-Anwendung
Framework Anwendung gestartet wird.
Anwendungen werden in EXEEXE und DLL-Dateien
Dateien gepackt, die in einem
.NET Compact Framework-Anwendungen
Dateisystem für Nur-Lesen- oder Lese-/Schreibzugriff
Lese
im Flash-Speicher
Speicher (bzw. für Nur-Lesen-Zugriff
Nur
im ROM) gespeichert werden können. Das Klassenladeprogramm der Common Language Runtime
kann diese Dateien in direkt ansprechbaren Blöcken lesen, ohne eine Speicherkopie zu erstellen und
ohne, dass eine Speicherverwaltungseinheit ein Speicherabbild der Datei erstellen muss.
RAM-Speicherung
RAM (Random Access Memory, Speicher mit wahlfreiem Zugriff) wird zum Speichern von
dynamischen Datenstrukturen und JIT-(Just-In-Time-)kompiliertem
JIT
)kompiliertem Code verwendet.
verwend .NET Compact
Framework verwendet verfügbares RAM bis zu der vom Gerät vorgegebenen Obergrenze, um
generierten Code und Datenstrukturen zwischenzuspeichern, und gibt den Speicher zum geeigneten
Zeitpunkt wieder frei.
Die Common Language Runtime verwendet
verwendet eine Codepitchingtechnik, um zur Laufzeit Blöcke von
JIT-kompiliertem
kompiliertem Code freizugeben, wenn wenig Speicher verfügbar ist. Dadurch können
umfangreichere Programme bei minimalen Leistungseinbussen
Leistungseinbu en auf Systemen mit begrenztem
be
RAM
ausgeführt werden.
ROM-Speicherung
Systemeigener
temeigener Code, der die Common Language Runtime bildet, kann im ROM (Read-Only
(Read
Memory,
Nur-Lese-Speicher)
Speicher) oder in einem RAM-Dateisystem
RAM Dateisystem vorliegen. .NET Compact Framework nutzt
verfügbares ROM, Flash-Speicher
Speicher oder Festplattenspeicher, damit Anwendungen bei
Speicherknappheit mit eingeschränkter Leistung weiter ausgeführt werden können.
Dateien, die MSIL (Microsoft Intermediate Language)-Anweisungen
Language) Anweisungen enthalten, und Metadaten für
Klassenbibliotheken werden entweder in einem ROMROM oder in einem RAM-Dateisystem
Dateisystem gespeichert.
Klassenbibliotheken können im Rahmen der Installation der downloadbaren Anwendung in ein
Dateisystem mit Lese-/Schreibzugriff
zugriff heruntergeladen werden.
Grundlagen und Basistechnologien
Projekt
Mobile DMS-Datenerfassung
Datenerfassung
Autor
Datum
Version
Dokument
Philipp Buser
10.09.2009
1.0
Projektdokumentation
Seite
27(141)
4.3.3 Unterstützte Geräte und Plattformen
Auf allen intelligenten Geräten von Microsoft
Microsof wie Pocket PC-Geräten,
Geräten, Pocket PC Phone Edition,
Smartphone-Geräten
Geräten und anderen Geräten mit Windows Embedded CE steht .NET Compact
Framework als Betriebssystemkomponente zur Verfügung.
.NET Compact
Framework-Version
1.0
Gerät
Pocket PC
1.0
Smartphone
1.0
Andere Windows Embedded CE-Geräte
CE
2.0
Pocket PC
2.0
Smartphone
2.0
Andere Windows Embedded CE-Geräte
CE
3.5
Pocket PC
3.5
Smartphone
3.5
Andere Windows Embedded CE-Geräte
CE
Plattform
Pocket PC 2000
Pocket PC 2002
Windows Mobile 2003 für Pocket PC
Windows Mobile 2003 für Pocket PC SE
Windows Mobile 5.0 für Pocket PC
Windows Mobile 2003 für Smartphone
Windows Mobile 5.0 für Smartphone
Windows CE 4.1
Windows CE 4.2
Windows CE 5.0
Windows Mobile 2003 für Pocket PC
Windows Mobile 2003 für Pocket PC SE
Windows Mobile 5.0 für Pocket PC
Windows Mobile 6 Professional
Windows Mobile 5.0 für Smartphone
Windows Mobile 6 Standard
Windows CE 4.2
Windows CE 5.0
Windows Embedded CE 6.0
Windows Mobile 2003 für Pocket PC
Windows Mobile 2003 für Pocket PC SE
Windows Mobile 5.0 für Pocket PC
Windows Mobile 6 Professional
Windows Mobile 5.0 für Smartphone
Windows Mobile 6 Standard
Windows Embedded CE 6.0
Tabelle 5:: Von .NET Compact Framework unterstützte Geräte und Plattformen
.NET Compact Frameworkk 2.0 kann im RAM oder in einem permanenten Speicher installiert werden,
falls noch keine Installation im ROM erfolgt ist. .NET Compact Framework 3.5 ist noch nicht im ROM
verfügbar, kann aber basierend auf den in der Tabelle oben angegebenen unterstützten Geräten im
RAM installiert werden.
Für Windows Mobile-Geräte
Geräte ist die im ROM installierte Version von .NET Compact Framework an die
spezifische Plattform gebunden. In einigen Fällen können OEMs jedoch zwischen zwei Versionen
wählen. In der folgenden Tabellee ist die im ROM installierte Version von .NET Compact Framework
aufgeführt, die der jeweiligen Plattformversion entspricht.
Plattform
Windows Mobile 2003 für Pocket PC
Windows Mobile 2003 für Pocket PC SE
Windows Mobile 5.0
Windows Mobile 5.0 (Build 15096.3.0)
Windows Mobile 5.0 (Build 15341.4.0)
Windows Mobile 6
.NET Compact Framework-Version
Version
1.0 SP2
1.0 SP3
1.0 SP3
1.0 SP3 oder 2.0 (von OEM bestimmt)
1.0 SP3 oder 2.0 SP1 (von OEM bestimmt)
2.0 SP2
Tabelle 6: Im ROM installierte
llierte Version von .NET Compact Framework für eine Plattform
Grundlagen und Basistechnologien
Projekt
Mobile DMS-Datenerfassung
Datenerfassung
Autor
Datum
Version
Dokument
Philipp Buser
10.09.2009
1.0
Projektdokumentation
Seite
28(141)
4.3.4 Unterschiede zwischen .NET Compact Framework und .NET Framework
.NET Compact Framework stellt eine Teilmenge des vollständigen .NET Framework dar. Es unterstützt
ca. 30 Prozent der Namespaces und
un Klassen der gesamten .NET Framework-Klassenbibliothek
Klassenbibliothek und
erreicht ca. 8 Prozent von dessen Umfang. Um die Grösse überschaubar zu halten, werden nur die
wichtigsten Klassen und Member unterstützt. Es enthält aber darüber hinaus spezielle Features und
Klassen
ssen zur Entwicklung für Mobile und Embedded.
Embedded
Nicht
cht unterstützte Funktionalität
.NET Compact Framework unterstützt die folgenden Technologien nicht:
•
•
•
•
•
•
Serverfunktionalität
ASP.NET
Remoting
Reflektionsausgabe
C++-Entwicklung
J#- und JSL-Entwicklung
In diesem
em Kapitel sind nicht alle Unterschiede zwischen den beiden Frameworks behandelt, sondern
es sind die wesentlichen Unterschiede bei der Anwendungsentwicklung aufgeführt.
ASP.NET
.NET Compact Framework ist in erster Linie eine leistungsstarke Clientplattform
Clientplattform und bietet keine
ASP.NET-Unterstützung.
Unterstützung. Um Webseiten für Mobilgeräte zu entwickeln, können ASP.NET MobileMobile
Websteuerelemente verwendet werden.
Assemblys und Dateiformate
Assemblys werden für Anwendungen in beiden Framework-Versionen
Framework Versionen verwendet. Beide FrameworkFra
Versionen greifen auf PE-Dateien
Dateien (Portable Executables, übertragbare ausführbare Dateien) zu. Diese
enthalten MSIL (Microsoft Intermediate Language) und Metadaten, die eine .NET FrameworkFramework
Anwendung definieren. Eine PE-Datei
Datei kann auf einen Programmiernamespace
Programmiernamespace verweisen, der durch
andere Assemblydateien definiert und mit diesen gemeinsam verwendet wird.
Assemblys und globaler Assemblycache
.NET Compact Framework unterstützt derzeit keine Assemblys mit mehreren Modulen, bietet jedoch
Unterstützung für Satellitenassemblys.
Klassen und Typen
.NET Compact Framework unterstützt eine Teilmenge der .NET Framework-Klassenbibliothek.
Framework Klassenbibliothek. Diese
Teilmenge ist für Anwendungen geeignet, die auf Geräten mit beschränkten Ressourcen zum Einsatz
kommen sollen, und ist hinsichtlich
insichtlich der Semantik mit den gleichnamigen Klassen in .NET Framework
kompatibel.
COM-Interop
Ab .NET Compact Framework 2.0 kann man COM Interop direkt ausführen, die MarshalAsAttributeMarshalAsAttribute
Klasse verwenden und eine erweiterte Typgruppe marshallen.
Grundlagen und Basistechnologien
Projekt
Mobile DMS-Datenerfassung
Datenerfassung
Autor
Datum
Version
Dokument
Philipp Buser
10.09.2009
1.0
Projektdokumentation
Seite
29(141)
Common Language Runtime
Die Common Language Runtime profitiert in beiden Framework-Versionen
Framework Versionen von der verwalteten
Codeausführung, der Just-in-Time
Time (JIT)-Kompilierung
(JIT Kompilierung und der Garbage Collection. Beide Versionen
unterstützen die CLS (Common
Common Language Specification).
Die Common Language Runtime für .NET Compact Framework umfasst etwa 12 % des Umfangs der
vollständigen Common Language Runtime von .NET Framework.
Framewo
Steuerelemente
.NET Compact Framework unterstützt die meisten Windows Forms-Steuerelemente
Forms Steuerelemente des
vollständigen .NET Framework und enthält spezifische Steuerelemente für .NET Compact Framework.
Die Windows Forms-Steuerelemente
Steuerelemente sind speziell für .NET Compact
act Framework erstellt.
Aktuelles Verzeichnis
Die Funktionalität eines aktuellen Verzeichnisses ist im Windows Embedded CE-Betriebssystem
CE Betriebssystem nicht
vorhanden. Deshalb unterstützt .NET Compact Framework keine GetCurrentDirectory-Methode
GetCurrentDirectory
und
keine SetCurrentDirectory-Methode.
Methode.
.NET Compact Framework unterstützt die WorkingDirectory-Eigenschaft für ein ProcessStartInfoProcessStart
Objekt. Ihr Kontext wird von der ausgeführten ausführbaren Datei in nachfolgenden Starts und
Dateiladungen jedoch nicht beibehalten.
Daten
.NET Compact Framework stellt die Implementierung einer Teilmenge von ADO.NET bereit. Der
System.Data.OleDb-Namespace
Namespace wird nicht unterstützt.
Bereitstellung von Anwendungen
Zur Bereitstellung einer Anwendung braucht man lediglich die Assembly über eine Kabelverbindung
vom Desktopcomputer,
r, einen Infrarotanschluss oder eine drahtlose InternetInternet oder
Intranetverbindung auf das Zielgerät zu kopieren. In Microsoft Visual Studio 2005 ist während des
Debuggens eine direkte Bereitstellung auf dem Gerät möglich.
Diagnoseablaufverfolgung
.NET Compact
pact Framework unterstützt keine Konfigurationsdateien für die Ablaufverfolgung. Man
kann jedoch Leistungsindikatoren verwenden.
Verworfene Objekte
Im vollständigen .NET Framework ist nicht garantiert, dass der Zugriff auf Eigenschaften oder
Methoden einess verworfenen Objekts immer erfolgreich ist. Der Zugriff auf einige Eigenschaften, z.B.
Text,, ist in .NET Framework jedoch häufig erfolgreich. Aufgrund von Unterschieden bei der
Implementierung zwischen beiden Frameworks schlägt der Zugriff auf Methoden oder
od Eigenschaften
eines verworfenen Objekts in .NET Compact Framework fast immer fehl.
Codierung und Lokalisierung
Unterstützung für Lokalisierung (Globalisierung), z.B. Datumsformate und Tabellensortierung
entsprechend dem Gebietsschema, wird aus KompatibilitätsKompatib
und Effizienzgründen nach Möglichkeit
aus dem zugrunde liegenden Betriebssystem bezogen.
.NET Compact Framework hängt bei der Datensortierung vom Betriebssystem ab. Deshalb ergibt die
Sortierung möglicherweise unerwartete Ergebnisse für einige Kulturen.
Kul
.NET Compact Framework bietet keine Unterstützung für threadspezifische CurrentUICultureCurrentUICulture
Einstellungen.
Grundlagen und Basistechnologien
Projekt
Mobile DMS-Datenerfassung
Datenerfassung
Autor
Datum
Version
Dokument
Philipp Buser
10.09.2009
1.0
Projektdokumentation
Seite
30(141)
Ereignisse
.NET Compact Framework unterstützt
unterstüt das GotFocus-Ereignis und das LostFocus-Ereignis,
Ereignis, jedoch nicht
das Activated-Ereignis und das Deactivated-Ereignis.
Deactiva
Dateinamen und -pfade
Bei Angabe eines Dateinamens ohne Pfadinformationen wird in Windows Embedded CE davon
ausgegangen, dass sich die Datei im Stammverzeichnis des Geräts und nicht im
Anwendungsverzeichnis befindet. Um einen fehlerfreien Betrieb
Betrieb zu gewährleisten, sollten absolute
Pfadinformationen angegeben werden.
.NET Compact Framework verarbeitet Uniform Resource Identifier (URI)-Zeichenfolgen,
(URI) Zeichenfolgen, denen das
Präfix file:// vorangestellt ist, anders als das vollständige .NET Framework. Eine relative
relative Angabe wie
file://myfile wird in \\myfile
myfile aufgelöst. Die URI-Zeichenfolge
URI Zeichenfolge file:///myfile (mit drei Schrägstrichen)
wird im Stammverzeichnis in \myfile
myfile aufgelöst.
Hohe Auflösung
In .NET Compact Framework 2.0 und höheren Versionen wird die DPI-Auflösung
DPI
sung automatisch in
Visual Studio-Projekten
Projekten behandelt.
Eingabe/Ausgabe (E/A)
Wegen der Unterschiede in den Gerätebetriebssystemen gelten Einschränkungen für das E/A-Modell.
E/A
.NET Compact Framework gibt bei Dateiänderungen keine Benachrichtigung aus.
Da die Geräte-E/A
E/A im RAM erfolgt, können DateiDatei und Verzeichnisattribute nicht festgelegt oder
abgerufen werden.
Installation und CAB-Dateien
Man kann CAB-Dateien
Dateien verwenden und Microsoft Windows Installer-Anwendungen
Installer Anwendungen erstellen, um
eine Anwendungen zu verteilen..
Programmiersprachen
Die Compact-Version
Version unterstützt die Entwicklung mithilfe von Visual Basic und Visual C#, bietet
derzeit aber keine Unterstützung für C++.
Mathematik
Auf den verschiedenen Geräteplattformen werden nicht alle mathematischen Methoden unterstützt,
u
für Kompatibilitätszwecke sind sie jedoch in der API enthalten.
Speicher
.NET Compact Framework ist für akkubetriebene Systeme optimiert und vermeidet intensive
Beanspruchung von RAM und CPU-Zyklen.
CPU
Netzwerk
.NET Compact Framework bietet IrDA (Infrared Data Association)-Klassen
Klassen für das Herstellen von
Infrarotverbindungen sowie Webüberwachungsklassen für die Abwicklung von HTTP-Anforderungen
HTTP
an das Gerät. Diese Klassen sind nur in .NET Compact Framework verfügbar.
Proxycode
.NET Compact Framework
ork unterstützt nicht den gesamten von Web Services Description LanguageLanguage
Tool (Wsdl.exe) generierten Code.
Grundlagen und Basistechnologien
Projekt
Mobile DMS-Datenerfassung
Datenerfassung
Autor
Datum
Version
Dokument
Philipp Buser
10.09.2009
1.0
Projektdokumentation
Seite
31(141)
Reflektion
.NET Compact Framework unterstützt nicht den System.Reflection.Emit-Namespace.
Namespace. Und es
unterstützt beim Vergleichen von Reflektionsobjekten wie MethodInfo, FieldInfo,, PropertyInfo,
EventInfo, MemberInfo, MethodBase,
MethodBase ConstructorInfo und ParameterInfo derzeit nicht den
Gleichheitsoperator (==).
Remoting
.NET Compact Framework unterstützt kein Remoting.
Serialisierung
Aus Gründen der Grösse und Leistungsfähigkeit unterstützt .NET Compact Framework die binäre
Serialisierung mit BinaryFormatter und die SOAP-Serialisierung mit SoapFormatter nicht.
.NET Compact
act Framework bietet jedoch Serialisierungsunterstützung bei der Übertragung von
Objektdaten mit SOAP in XML-Webdiensten
Webdiensten und der Serialisierung von Datasets in XML.
Grösse
.NET Compact Framework macht 8 % der Grösse des verteilbaren Pakets des vollständigen
vollständig .NET
Framework aus. Die Grösse auf einem Datenträger ist aufgrund der Dateisystemkomprimierung von
Windows Embedded CE 50 % kleiner.
Threads
Eine .NET Compact Framework-Anwendung
Anwendung erstellt bis zu vier Threads:
• Ein Hauptanwendungsthread.
• Ein Thread, mit dem verschiedene Zeitgeber für Zeitspannen und Timeouts gesteuert
werden, die vom System oder von Anwendungen geplant werden können.
• Ein Thread, mit dem Änderungen an den aktiven TCP/IP-Schnittstellen
TCP/IP Schnittstellen nachverfolgt werden
(wobei das Medienverhalten simuliert
simuliert wird, das in Windows XP, aber nicht in Windows
Embedded CE vorhanden ist).
• Ein Thread, der zum Ausführen von Objektfinalizern verwendet wird. Dieser Thread wird
erstellt, wenn für das erste abschliessbare Objekt eine Garbage Collection durchgeführt wird.
wi
Zeitintervalle
Die Now-Eigenschaft
Eigenschaft gibt einen Wert zurück, der nur auf die Sekunde, aber nicht auf die Millisekunde
genau angegeben wird. Die TickCount-Eigenschaft
TickCount Eigenschaft stellt ein genaueres Mass zur Verfügung.
Zeitgeber
Objekt werden nicht
Die Start-Methode und die Stop--Methode für ein System.Timers..::.Timer-Objekt
unterstützt. Man kann die zeitliche Steuerung jedoch starten und anhalten, indem die EnabledEigenschaft eines System.Windows.Forms..::.Timer-Objekts
System.Windows.Forms..::.Timer
auf true oder false festgelegt wird.
Webdienste
Der Webdienstclient führt von wsdl.exe generierte Assemblys direkt aus.
Zum Erstellen eines Webdiensts auf dem Gerät sollte nicht localhost verwendet werden, da sich
localhost
ocalhost auf das Gerät bezieht, auf dem die Anwendung ausgeführt wird. Stattdessen sollte
entweder den Namen oder die IP-Adresse
IP
des Computers verwendet werden.
XML
Aus Gründen der Grösse unterstützt .NET Compact Framework keine XML-Schemavalidierung.
XML Schemavalidierung. Es
unterstützt jedoch das XML-Dokumentobjektmodell
Dokumentobjektmodell (DOM).
Grundlagen und Basistechnologien
Projekt
Mobile DMS-Datenerfassung
Datenerfassung
Autor
Datum
Version
Dokument
Philipp Buser
10.09.2009
1.0
Projektdokumentation
Seite
32(141)
4.3.5 .NET Compact Framework 3.5
.NET Compact Framework Version 3.5 erweitert .NET Compact Framework um viele neue Features.
Die wichtigsten sind hier aufgeführt.
Windows Communication Foundation
.NET Compact
ct Framework 3.5 unterstützt Windows Communication Foundation (WCF), das
einheitliche Programmiermodell von Microsoft zum Erstellen dienstorientierter Anwendungen.
Clients, auf denen .NET Compact Framework ausgeführt wird, können eine Verbindung zu
vorhandenen WCF-Webdiensten
Webdiensten auf dem Desktop herstellen. Darüber hinaus wurde Unterstützung
für eine neue WCF-Übertragung,
Übertragung, die Microsoft Exchange Server-E-Mail-Übertragung,
Server
Übertragung, für .NET
Compact Framework-Anwendungen
Anwendungen und Desktopanwendungen hinzugefügt.
LINQ
Language-Integrated
ntegrated Query (LINQ) fügt .NET Compact Framework allgemeine Abfragefunktionen
hinzu. Diese können auf verschiedene Informationsquellen wie relationale Datenbanken, XML-Daten
XML
und Objekte im Arbeitsspeicher angewendet werden.
Windows Forms
An einigen Windows Forms-Steuerelementen
Steuerelementen wurden in .NET Compact Framework 3.5
Verbesserungen vorgenommen. So können zum Beispiel gewissen Steuerelementen nun Grafiken
hinzugefügt werden.
Komprimierung
.NET Compact Framework 3.5 bietet zudem Unterstützung für die folgenden
folgenden Klassen im
System.IO.Compression-Namespace:
Namespace: CompressionMode, DeflateStream, GZipStream
Zudem wird auch die AutomaticDecompression-Eigenschaft
AutomaticDecompression
unterstützt.
Debuggen
In .NET Compact Framework 3.5 wurden u.a. folgende Verbesserungen für das Debuggen eingeführt:
• Geschachtelte Funktionsauswertungen
Funktionsaus
werden jetzt unterstützt.
• Nicht verarbeitete Ausnahmen verursachen eine Unterbrechung beim Auftreten der
Ausnahme statt beim Aufrufen der Run-Methode.
Protokollierung
Die folgenden Verbesserungen wurden an den Protokollfeatures vorgenommen:
• Interop-Protokolle
Protokolle enthalten nun Informationen über gemarshallte Objekte, die sich in
Strukturen oder in Referenztypen befinden.
• Die Finalizerprotokollierung umfasst
umfasst nun Informationen zur Reihenfolge und zeitlichen
Steuerung des Finalizers.
• Protokolldateien sind nicht mehr gesperrt, während die Anwendung ausgeführt wird. Daher
können die Protokolle zur Laufzeit gelesen werden.
• Stapelüberwachungen umfassen nun die vollständige
vollständige Methodensignatur, um
Methodenüberladungen zu unterscheiden.
Plattform-ID
.NET Compact Framework 3.5 bietet neue Informationen zum Plattformtyp, besonders zur
Unterscheidung zwischen einem Pocket PC oder einem Smartphone.
Grundlagen und Basistechnologien
Projekt
Mobile DMS-Datenerfassung
Datenerfassung
Autor
Datum
Version
Dokument
Philipp Buser
10.09.2009
1.0
Projektdokumentation
Seite
33(141)
4.4 SQL Server Compact
4.4.1 SQL Server Compact 3.5
Microsoft SQL Server Compact 3.5 ermöglicht es, kompakte Datenbanken zu erstellen, die auf
Desktopcomputern, intelligenten Geräten und Tablet PCs bereitgestellt werden können. Im
Gegensatz zu früheren Versionen (z.B. SQL Server Mobile Edition)
Edition) besteht damit ein wesentlicher
Unterschied darin, dass das Produkt nicht mehr ausschliesslich für mobile Anwendungen verwendet
werden kann. Diese Lizenzbeschränkung ist aufgehoben.
SQL Server Compact 3.5 ist eine funktionenreiche
funktio
relationale Datenbank.. Sie bietet vollständige
Transaktionskonsistenz und stellt sicher, dass die Datenbank immer in einem konsistenten Zustand
bleibt, sogar im Falle eines Anwendungsabsturzes oder vollständigen Energieausfalls. SQL Server
Compact 3.5 bietet Sperrfunktion auf Datensatzebene, Seitenebene und Datenbankebene, und stellt
die Datenbankintegrität sogar dann sicher, wenn gleichzeitig darauf zugegriffen und durch mehrere
Threads oder mehrere Anwendungen aktualisiert wird.
wird
Wichtige
ichtige Features in SQL Server Compact 3.5
3.
Wenn SQL Server Compact 3.5 als lokaler Datenspeicher für Anwendungen verwendet wird, sollten
die folgenden Features beachtet werden:
•
•
•
•
•
SQL Server Compact 3.5 ist dateibasiert, d.h. die Verbindungszeichenfolge ist ein Dateipfad
zur SDF-Datenbankdatei.
Datenbankdatei.
SQLL Server Compact 3.5 besteht aus sieben DLLs mit einer Grösse von ca. 1,4 MB.
SQL Server Compact 3.5 wird nicht als Dienst ausgeführt. Das ist einer der Hauptunterschiede
zwischen SQL Server Compact 3.5 und SQL Server oder SQL Server Express Edition.
SQL Server
erver Compact 3.5 unterstützt (wie auch SQL Server 2005 Mobile Edition) bis zu 256
Verbindungen. Das Öffnen von Verbindungen für verschiedene Prozesse wird ebenfalls
unterstützt.
Die aktuelle Version von SQL Server Compact 3.5 unterstützt Datenbankdateien mit einer
Grösse von maximal 4 GB.
Wann sollte SQL Server Compact 3.5 verwendet werden?
In den folgenden Fällen empfiehlt es sich, in Anwendungen SQL Server Compact 3.5 zu verwenden:
•
•
•
•
•
Bei Anwendungen, die für Desktopcomputer und mobile Geräte gedacht sind
Bei Anwendungen, die gelegentlich eine Verbindung erfordern
Wenn eine Datenbank benötigt wird, die frei verteilt werden kann
Wenn der Umfang einer Anwendung möglichst gering sein soll und möglichst wenig
Arbeitsspeicher beansprucht werden soll
Wenn der Code
de für den Datenzugriff in einem Prozess ausgeführt werden soll
Bereitstellung
SQL Server Compact 3.5 stellt zwei Bereitstellungsmodelle bereit, die man in die Anwendungen
integrieren kann. Zum einen kann die herkömmliche Microsoft-Setuptechnologie
Microsoft Setuptechnologie verwendet
verwen
werden,
einschliesslich ClickOnce-Bereitstellung.
Bereitstellung. Zum anderen kann eine dateibasierte Bereitstellung
verwendet werden, bei der man die SQL Server Compact Edition-DLLs
Edition DLLs hinzufügt und mit dem Projekt
bereitstellt.
Grundlagen und Basistechnologien
Projekt
Mobile DMS-Datenerfassung
Datenerfassung
Autor
Datum
Version
Dokument
Philipp Buser
10.09.2009
1.0
Projektdokumentation
Seite
34(141)
Abwärtskompatibilität
SQL Server Compact
act 3.5 kann auf Desktopcomputern und Tablet PCs gemeinsam mit der vorherigen
Version (3.1) installiert werden. Wenn man eine Datenbankdatei öffnet, die mit einer früheren
Version erstellt wurde, wird eine Meldung angezeigt, dass die Datei nicht geöffnet werden
w
kann. Um
diese zu öffnen, muss die Datenbankdatei zuerst mithilfe des Dialogfelds „Auf
„Auf SQL Server Compact
3.5-Datenbank“ aktualisieren in Visual Studio 2008 aktualisiert werden. Die Dateinamenerweiterung
für SQL Server Compact 3.5-Dateien
Dateien ist SDF, also
also dieselbe wie bei früheren Versionen (SQL Server
2005 Compact Edition und SQL Server 2005 Mobile Edition). Wenn eine Datenbankdatei auf SQL
Server Compact 3.5 aktualisiert wird, kann diese nicht mehr mit den früheren Versionen des SQL
Server Compact-Moduls
ls geöffnet werden.
Weitere Features in SQL Server Compact 3.5 SP 1
SQL Server Compact 3.5 Service Pack 1 (SP1) ist in SQL Server 2008 und Visual Studio 2008 SP1
enthalten und bietet unter anderem folgende neue Features:
•
•
•
•
•
•
Der SQL Server Compact 3.5-Tabellen-Designer
3.5
Designer in Visual Studio 2008 wurde verbessert, um
eine Benutzeroberfläche zum Erstellen von PrimärschlüsselPrimärschlüssel und Fremdschlüsselbeziehungen
zwischen Tabellen bereitzustellen.
Mithilfe von SQL Server Management Studio (SSMS) in SQL Server 2008 können SQL
SQ Server
Compact-Datenbanken
Datenbanken verwaltet werden, die auf einem intelligenten Gerät oder einem
Desktopcomputer gespeichert sind.
SQL Server Compact unterstützt die Datenreplikation mit SQL Server 2000, SQL Server 2005
und SQL Server 2008 durch Verwendung von Microsoft Synchronization Services für
ADO.NET. Microsoft Synchronization Services für ADO.NET ist für Desktopcomputer und neu
auch für mobile Geräte verfügbar.
SQL Server Compact unterstützt die Datenreplikation mit SQL Server 2005 und SQL Server
2008 durch
ch Verwendung von Mergereplikation und Remotedatenzugriff (Remote Data
Access, RDA).
Die Servertools für die Konfiguration von Mergereplikation und RDA mittels SQL Server
Compact 3.5 SP1 können im Microsoft Download Center heruntergeladen werden. Die
Servertools von SQL Server Compact 3.5 SP1 können nicht zusätzlich zu früheren Versionen
der Servertools auf dem Computer installiert werden, der als IIS-Server
IIS Server (Internet Information
Services, Internetinformationsdienste)
informationsdienste) fungiert. Die Servertools von SQL Server Compact 3.5
SP1 ermöglichen die Replikation von Daten zwischen SQL Server Compact 3.5 und SQL Server
2005 oder SQL Server 2008. Weiterhin unterstützen sie die Datenreplikation zwischen SQL
Serverr 2005 Compact Edition oder SQL Server 2005 Mobile Edition und SQL Server 2005 oder
SQL Server 2008.
SQL Server Compact unterstützt Windows Server 2008.
SQL Server Management Studio und Visual Studio
SQL Server Compact 3.5 kann sowohl mit SQL Server Management
Management Studio als auch mit Visual Studio
zusammenwirken. Mithilfe von SQL Server Management Studio können neue SQL Server Compact
3.5-Datenbanken
Datenbanken erstellt, Datenbankobjekte angezeigt, Tabellen erstellt, Tabellen geändert und
interaktivee Abfragen durchgeführt
durchgeführ werden.
Visual Studio 2008 bietet volle Unterstützung für SQL Server Compact 3.5 und die gleichen
datenorientierten Funktionen wie für andere Datenbanken. Mithilfe von Visual Studio 2008 kann
einem Projekt eine SQL Server Compact Edition-Datenbank
Edition
als Datenquelle
tenquelle hinzugefügt werden.
Beim Hinzufügen einer SQL Server Compact 3.5-Datenquelle
3.5 Datenquelle agiert Visual Studio 2008 genau wie bei
einer SQL Server-Datenbank.
Datenbank. Es wird eine stark typisierte, DataSet-abgeleitete
abgeleitete Klasse generiert, und
Grundlagen und Basistechnologien
Projekt
Mobile DMS-Datenerfassung
Datenerfassung
Autor
Datum
Version
Dokument
Philipp Buser
10.09.2009
1.0
Projektdokumentation
Seite
35(141)
die Datenbanktabellen werden in das Datenquellenfenster in Visual Studio 2008 eingefügt. Wie auch
bei SQL Server können Tabellen und Spalten aus dem Datenquellenfenster auf die
Anwendungsformulare gezogen werden, wobei automatisch die passenden Steuerelemente und
datenbindender Code generiert werden.
Mithilfe des Server-Explorer
Explorer von Visual Studio 2008 kann eine Datenbank geöffnet und den
Datenbankinhalt interaktiv durchsucht werden. Man kann auch Datenbanktabellen vom ServerServer
Explorer aus öffnen, um Datensätze anzuzeigen, hinzuzufügen, zu ändern und zu löschen.
Sicherheit
Die Tragbarkeit der Mobilgeräte macht den Einsatz sicherer Vorgehensweisen erforderlich, damit
wichtige Informationen nicht beeinträchtigt werden. Zur Sicherung der Daten in der SQL Server
Compact 3.5-Datenbank ermöglicht
icht SQL Server Compact 3.5 den Kennwortschutz für die Datenbank
und das Verschlüsseln des Datenbankinhalts. Kennwortschutz und Verschlüsselung können bei der
Erstellung der Datenbank problemlos implementiert werden. Der folgende Code ist eine SQLSQL
Anweisung,
g, mit der eine Datenbank mit dem Namen „SafeData.sdf“ auf Laufwerk C erstellt, das
Kennwort „P@ssw0rd“ festgelegt und die Datenbank zur Verschlüsselung aller Daten konfiguriert
wird.
Create Database "c:\SafeData.sdf"
SafeData.sdf" databasepassword 'P@ssw0rd' encryption on
Quellcode 1: SQL-Anweisung zur Datenbank-Erstellung
Datenbank
mit Kennwortschutz und Verschlüsselung
Alle Daten in der Datenbank werden auf diese Weise verschlüsselt. Es kann nur dann auf den
Datenbankinhalt zugegriffen werden, wenn
wenn beim Öffnen das richtige Kennwort eingegeben wird. Das
folgende Codebeispiel zeigt, wie eine durch Kennwort geschützte, verschlüsselte Datenbankdatei
programmatisch aus einem C#-Programm
Programm heraus zu erstellen ist.
SqlCeEngine dbEngine = new SqlCeEngine(@"data
SqlCeEngine
source=\MyDocuments\SafeData.sdf;
SafeData.sdf;
password=P@ssw0rd;encrypt database=TRUE");
database=TRUE"
dbEngine.CreateDatabase();
Quellcode 2: C#-Anweisung zur Datenbank-Erstellung
Datenbank
mit Kennwortschutz und Verschlüsselung
Neben der Datenbanksicherung
herung sorgt SQL Server Compact 3.5 auch für einen sicheren
Datenaustausch beim Synchronisieren mit einer Unternehmensdatenbank über RDA oder
Mergereplikation. Sowohl RDA als auch Mergereplikation unterstützen die Verwendung von HTTPs
zur Verschlüsselung der
er Änderungsverlaufsdaten beim Austausch mit der Back-End
Back End-Datenbank über
das Internet.
4.4.2 Netzwerktopologien
Beim Übertragen von Daten zwischen Clients mit Microsoft SQL Server Compact 3.5 und SQL Server
werden die Daten mithilfe der Microsoft Internetinformationsdienste
Internetinformationsdienste (Internet Information Services,
IIS) weitergegeben. In einem Netzwerk kann entweder ein einzelner Server sowohl für IIS als auch für
SQL Server konfiguriert werden oder aber mehrere Server sowie mehrere Firewalls eingerichtet
werden, um Leistung
ng und Sicherheit zu steigern. Die Netzwerktopologie, die implementiert wird,
hängt von den Sicherheits- und Leistungsanforderungen ab.
Obwohl zwischen verschiedenen möglichen Netzwerktopologien für die Übertragung von Daten
zwischen SQL Server Compact 3.5-Clients
3.5 Clients und SQL Server gewählt werden kann, werden im
Allgemeinen die zwei folgenden Netzwerktopologien bevorzugt eingesetzt.
Grundlagen und Basistechnologien
Projekt
Mobile DMS-Datenerfassung
Datenerfassung
Autor
Datum
Version
Dokument
Philipp Buser
10.09.2009
1.0
Projektdokumentation
Seite
36(141)
Topologie mit einem Server
Bei dieser Topologie befinden sich IIS, der SQL Server-Verleger
Server Verleger und der SQL Server-Verteiler
Server
zusammen auf einem einzelnen Server. Dieser Server kann sich hinter einer Firewall befinden, muss
aber nicht. Falls dies der Fall ist, muss nur Port 80 für den Internetdatenverkehr geöffnet sein.
Abbildung 6:: Netzwerktopologie mit einem
ein
Server
Topologie mit zwei Servern
Bei dieser Topologie werden IIS auf einem Server und der SQL Server-Verleger
Server Verleger sowie der SQL ServerServer
Verteiler auf einem gesonderten Server konfiguriert. Der Server mit IIS kann vom restlichen Netzwerk
(einschliesslich des Computers mit SQL Server) durch eine Firewall getrennt und sogar durch eine
zusätzliche Firewall vom Internet geschützt werden. Auf der Firewall zwischen dem Client und IIS
muss Port 80 geöffnet werden, während auf der Firewall zwischen IIS und SQL Server zwei Ports
geöffnet werden müssen: Port 80 und der Port, der der SQL Server-Instanz
Server Instanz zugewiesen wurde. In der
Regel ist dies Port 1443.
Abbildung 7:: Netzwerktopologie mit zwei Servern
Grundlagen und Basistechnologien
Projekt
Mobile DMS-Datenerfassung
Datenerfassung
Autor
Datum
Version
Dokument
Philipp Buser
10.09.2009
1.0
Projektdokumentation
Seite
37(141)
4.4.3 IIS-Sicherheit
IIS-Authentifizierung
Bei der Konfiguration des Server-Agents
Server
für SQL Server Compact 3.5 gibt man an, ob Clients beim
Herstellen einer Verbindung mit dem Server-Agent
Server Agent für SQL Server Compact 3.5 die Authentifizierung
für Microsoft Internetinformationsdienste (Internet Information Services, IIS) ausführen müssen. Es
gibt drei Arten der IIS-Authentifizierung
Authentifizierung: Anonymer Zugriff, Standardauthentifizierung und
integrierte Windows-Authentifizierung
Authentifizierung.
Normalerweise verwenden die meisten Internetanwendungen die Standardauthentifizierung und die
SSL-Verschlüsselung
Verschlüsselung (Secure Sockets Layer).
•
•
•
Anonymer Zugriff: Bei einem anonymen Zugriff führt IIS keine Clientauthentifizierung aus.
Alle Aktionen, die der Server-Agent
Server Agent für SQL Server Compact 3.5 für den Client ausführt,
erfolgen unter der Identität des Internetgastkontos. Standardmässig ist IUSR_computername
das Internetgastkonto,
tkonto, es kann aber auch ein anderes Windows-Benutzerkonto
Windows Benutzerkonto als
Internetgastkonto festgelegt werden.
Standardauthentifizierung: Bei der Standardauthentifizierung muss der SQL Server Compact
3.5-Client
Client einen Benutzernamen und ein Kennwort für ein gültiges Windows
Windows-Konto angeben.
Bei einem erfolgreichen Anmeldeversuch werden alle Aktionen des Server-Agents
Server
für SQL
Server Compact 3.5 unter der Identität des angegebenen Windows-Benutzerkontos
Windows Benutzerkontos
ausgeführt. Schlägt der Anmeldeversuch fehl, wird die Clientanforderung
Clientanforderung zurückgewiesen.
Die Standardauthentifizierung kann für InternetInternet und Intranetanwendungen verwendet
werden.
Wichtig: Standardmässig werden der Benutzername und das Kennwort bei der
Standardauthentifizierung im Netzwerk in Base64-Codierung
Base64 Codierung übertragen. Dies
Die kann ein
Sicherheitsrisiko darstellen, wenn der Kennwortaustausch abgehört wird, da die Base64Base64
Codierung leicht decodiert werden kann. Zum Schutz des Benutzerkennworts sollte bei der
Standardauthentifizierung stets die SSL-Verschlüsselung
SSL Verschlüsselung verwendet werden.
werde
Integrierte Windows-Authentifizierung:
Authentifizierung: Die integrierte Windows-Authentifizierung
Authentifizierung
funktioniert ähnlich wie die Standardauthentifizierung, sie weist jedoch einen wichtigen
Vorteil gegenüber der Standardauthentifizierung auf: Im Gegensatz zur
Standardauthentifizierung
entifizierung werden bei der integrierten Windows-Authentifizierung
Windows Authentifizierung der
Benutzername und das Kennwort des Clients im Netzwerk verschlüsselt übertragen. Damit
wird das Risiko umgangen, dass das Kennwort abgefangen wird. Die integrierte WindowsWindows
Authentifizierung
rung eignet sich am besten für Intranetanwendungen. Sie wird hingegen selten
für Internetanwendungen verwendet, weil sie nicht über einen Proxyserver oder eine
Firewall ausgeführt werden kann.
Hinweis: Da Microsoft Windows CE die Digestauthentifizierung nicht unterstützt, wird diese Form
der Authentifizierung auch nicht von den Konnektivitätslösungen von SQL Server Compact 3.5
unterstützt.
IIS-Autorisierung
Nach der Authentifizierung des IIS-Clients
IIS
wird über die IIS-Autorisierung
Autorisierung ermittelt, ob der Client
Clie den
Server-Agent
Agent für SQL Server Compact 3.5 aufrufen kann. IIS stellt die folgenden Mechanismen für die
Zugriffssteuerung bereit:
•
IIS prüft zuerst, ob für die Adresse des Clients konfigurierte Beschränkungen für IP-Adressen
IP
gelten. Der Webserver kann so
so konfiguriert werden, dass bestimmte Computer,
Computergruppen oder ganze Netzwerke nicht auf den Server-Agent
Server Agent für SQL Server Compact
Grundlagen und Basistechnologien
Projekt
Mobile DMS-Datenerfassung
Datenerfassung
Autor
Datum
Version
Dokument
Philipp Buser
10.09.2009
1.0
Projektdokumentation
•
•
•
Seite
38(141)
3.5 zugreifen können. Wenn der Zugriff aufgrund der IP-Adresse
IP Adresse verweigert wird, wird die
Synchronisierungsanforderung des Clients mit der Fehlermeldung "403 Zugriff verweigert"
zurückgewiesen.
Wenn IIS so konfiguriert ist, dass eine Authentifizierung erforderlich ist, prüft IIS, ob der
Client über ein gültiges Windows-Benutzerkonto
Windows
verfügt (siehe IIS-Authentifizierung).
Authentifizierung). Falls
dies nicht der Fall ist, wird die Synchronisierungsanforderung des Clients ebenfalls mit der
Fehlermeldung
hlermeldung "403 Zugriff verweigert" zurückgewiesen.
IIS prüft dann die Webberechtigungen. Diese IIS-Sicherheitsprüfung
IIS Sicherheitsprüfung ist für
Konnektivitätslösungen von SQL Server Compact 3.5 nicht relevant.
Anschliessend überprüft IIS die NTFS-Berechtigungen
NTFS
für den Server-Agent
Agent für SQL Server
Compact 3.5, um sicherzustellen, dass der jeweilige Benutzer über die entsprechenden
Berechtigungen verfügt.
Hinweis: IIS kann zwar auch mit einem FAT-Dateisystem
Dateisystem verwendet werden, die Verwendung von
NTFS wird jedoch dringend empfohlen. NTFS ermöglicht die Verwendung von
Zugriffssteuerungslisten (Access Control List, ACL), die den Zugriff auf den Server-Agent
Server
für SQL
Server Compact 3.5
5 und auf die EingabeEingabe und Ausgabenachrichtendateien auf dem IIS-System
IIS
gewähren oder verweigern.
IIS-Verschlüsselung
Beim Konfigurieren des Server-Agents
Agents für SQL Server Compact 3.5 kann die SSL-Verschlüsselung
SSL Verschlüsselung
angeben werden. Dadurch wird die gesamte Kommunikation
Kommunikation zwischen dem Client-Agent
Client
für SQL
Server Compact 3.5 und dem Server-Agent
Server Agent für SQL Server Compact 3.5 verschlüsselt. Die SSLVerschlüsselung sollte in folgenden Situationen verwendet werden:
•
•
•
Wenn IIS mit der Standardauthentifizierung
Standardauthe
konfiguriert wird, da dort Benutzername und das
Kennwort im Netzwerk in Base64-Codierung
Base64
übertragen wir, welche leicht decodiert werden
kann.
Nur für RDA: Wenn
enn von der Anwendung ein OLEDBConnectionString-Parameter
Parameter mit einem
Kennwort angegeben wird. Für die RDA-Methoden
RDA
Pull, Push und SubmitSQL ist ein
OLEDBConnectionString--Parameter
Parameter erforderlich. Diese Verbindungszeichenfolge wird im
Netzwerk im Klartextformat weitergeleitet.
Nur für die Replikation: Wenn der SQL Server-Verleger oder -Verteiler
Verteiler die SQL ServerServer
Authentifizierung
fizierung verwendet. Der Verteiler bzw. der Verleger verwendet die SQL ServerServer
Authentifizierung, wenn für die DistributorSecurityMode-Eigenschaft bzw. für die
PublisherSecurityMode-Eigenschaft
Eigenschaft der Wert DB_AUTHENTICATION angegeben wird. Dann
werden DistributorPassword
torPassword und PublisherPassword im Netzwerk im Klartextformat
übertragen.
4.4.4 SQL Server-Sicherheit
Sicherheit
SQL Server-Authentifizierung
SQL Server unterstützt zweii Formen der Authentifizierung: Windows-Authentifizierung
Authentifizierung und SQL
Server-Authentifizierung.
•
Windows-Authentifizierung
thentifizierung. Wenn die Windows-Authentifizierung
Authentifizierung für die Verbindung mit
SQL Server verwendet wird, liegt die vollständige Verantwortung für die Authentifizierung
des Clients bei Microsoft Windows. In diesem Fall wird der Client anhand seines WindowsWindows
Benutzerkontos
utzerkontos identifiziert. Bei der SQL Server Compact 3.5-Replikation
3.5 Replikation oder dem
Grundlagen und Basistechnologien
Projekt
Mobile DMS-Datenerfassung
Datenerfassung
Autor
Datum
Version
Dokument
Philipp Buser
10.09.2009
1.0
Projektdokumentation
•
Seite
39(141)
Remotedatenzugriff fungiert der Server-Agent
Server Agent für SQL Server Compact 3.5 als
Datenbankclient, der unter der Identität eines Windows-Benutzerkontos
Windows Benutzerkontos ausgeführt wird:
o Wenn IIS so konfiguriert
nfiguriert wurde, dass der anonyme Zugriff verwendet wird, wird der
Server-Agent
Agent für SQL Server Compact 3.5 unter der Identität des Internetgastkontos
ausgeführt. Standardmässig handelt es sich hierbei um das Konto
IUSR_Computername
IUSR_Computername.
o Wenn IIS so konfiguriert
konfiguriert wurde, dass die Standardauthentifizierung verwendet wird,
wird der Server-Agent für SQL Server Compact 3.5 unter der Identität des WindowsWindows
Benutzerkontos ausgeführt, für das der Client den Internetbenutzernamen und das
zugehörige Kennwort angegeben hat.
hat
o Wenn IIS so konfiguriert wurde, dass die integrierte Windows-Authentifizierung
Windows Authentifizierung
verwendet wird, wird der Server-Agent
Server Agent für SQL Server Compact 3.5 unter der
Identität des Clients ausgeführt.
SQL Server-Authentifizierung
Authentifizierung. Bei Verwendung von SQL Server authentifiziert
tifiziert SQL Server
den Client durch Vergleichen des vom Client bereitgestellten Benutzernamens und
Kennworts mit der Liste der gültigen Benutzernamen und Kennwörter in SQL Server. In
diesem Fall muss die Anwendung den geeigneten SQL Server-Anmeldenamen
Server
enamen und
u das
Kennwort angeben.. Der Client-Agent
Client Agent für SQL Server Compact 3.5 übermittelt den
Anmeldenamen und das Kennwort an den Server-Agent
Server Agent für SQL Server Compact 3.5. Der
Server-Agent
Agent für SQL Server Compact 3.5 ruft SQL Server auf und verwendet hierfür den vom
Client angegebenen Anmeldenamen und das entsprechende Kennwort.
SQL Server-Autorisierung
Wenn ein Client erfolgreich authentifiziert wurde, wird der BenutzerBenutzer oder Gruppenname des Clients
einem SQL Server-Benutzerkonto
Benutzerkonto zugeordnet. Der Client muss in jeder
er Datenbank, auf die er
zugreifen will, über ein Benutzerkonto verfügen. Mit dem Benutzerkonto wird der Zugriff auf die
Tabellen, Sichten, gespeicherten Prozeduren usw. in dieser Datenbank gesteuert. Die vom Client
ausführbaren Aktivitäten werden anhand der
der Berechtigungen gesteuert, die dem Benutzerkonto
zugeordnet sind, über das der Client den Zugriff auf die Datenbank erhalten hat.
Nur für RDA: Datenbankvorgänge, die RDA-Clients
RDA Clients ausführen können, können mithilfe der
Berechtigungen, die ihnen erteilt werden,
wer
präzise gesteuert werden.
Nur für die Replikation: Beim Erstellen einer Veröffentlichung erzeugt SQL Server eine
Veröffentlichungszugriffsliste für die Veröffentlichung. Die Veröffentlichungszugriffsliste muss
aktualisiert werden, um den Zugriff auf die Veröffentlichung zu gewähren.
Beim Erstellen einer Veröffentlichung wird der Pfad des Snapshotordners angegeben. Der
Snapshotordner wird verwendet, wenn ein Abonnement erstmalig erstellt oder erneut initialisiert
wird. Wenn der Computer mit SQL Server ein NTFS-Dateisystem
Dateisystem verwendet, müssen die geeigneten
NTFS-Berechtigungen
Berechtigungen angeben werden.
werden
Beim Erstellen einer Veröffentlichung kann die Option „Berechtigungen
„Berechtigungen überprüfen“
überprüfen verwendet
werden, um ein erhöhtes Mass an Sicherheit für die Veröffentlichung bereitzustellen.
bereitzustellen. Durch die
Option „Berechtigungen
Berechtigungen überprüfen“
überprüfen wird sichergestellt, dass der Merge-Agent
Agent berechtigt ist,
Datenänderungen auf einen Verleger hochzuladen. Wenn diese Option angeben wird, wird von SQL
Server überprüft, ob die Merge-Agent
Agent-Anmeldung über
er die Berechtigung verfügt, INSERT-, UPDATEund DELETE-Anweisungen
Anweisungen auf der Veröffentlichungsdatenbank auszuführen.
Grundlagen und Basistechnologien
Projekt
Mobile DMS-Datenerfassung
Datenerfassung
Autor
Datum
Version
Dokument
Philipp Buser
10.09.2009
1.0
Projektdokumentation
Seite
40(141)
5 Datenaustausch / Kommunikation
Das Schwergewicht der Technologie-Studie
Technologie Studie liegt auf der Untersuchung der verschiedenen
Möglichkeiten des Datenaustausches
tenaustausches zwischen mobiler Applikation und der serverbasierten
Datenbank. Dazu kommen die im Folgenden beschriebenen Technologien und Verfahren in Frage,
deren Sachverhalt und Praxistauglichkeit in Bezug auf die Anforderungen des Prototyps überprüft
und bewertet wurden. Es galt auch die Konsequenzen auf die Applikationslogik, auf den
Programmieraufwand und auf die Performance zu untersuchen.
5.1 Übersicht
Die Strategie zur Datensynchronisierung ist einer der wichtigsten Punkte beim Entwurf einer mobilen
LOB (Line of Business)-Anwendung.
Anwendung. Wenn Daten von einer Unternehmensdatenbank zum ersten Mal
auf ein Mobilgerät kopiert werden, haben sowohl das Gerät als auch die Unternehmensdatenbank
die gleichen Informationen. Aber es dauert nicht lange, bis die zwei Datenbanken
Datenbanken abweichende
Informationen haben. Aktivitäten seitens des Benutzers können zu Änderungen an den Daten auf
dem Gerät führen. In ähnlicher Weise führen Aktivitäten im Unternehmen wahrscheinlich zu
Änderungen an den Daten in der Unternehmensdatenbank. Es gilt zu entscheiden, wie die
Anwendung die Gerätedatenbank und die Unternehmensdatenbank synchronisieren soll, um beide
in einen konsistenten Zustand zu bringen.
Microsoft SQL Server Compact 3.5 unterstützt drei Methoden für den Datenaustausch mit SQL
Server-Datenbanken:
•
•
•
Der Remotedatenzugriff (Remote Data Access, RDA) bietet eine einfache Lösung für eine
Anwendung für intelligente Geräte, um von einer Microsoft SQL ServerServer
Remotedatenbanktabelle und einer lokalen SQL Server Compact 3.5-Datenbanktabelle
3.5 Datenbanktabelle auf
Daten zuzugreifen und Daten an diese zu senden.
Mit der Mergereplikation können Standorte autonome Änderungen an replizierten Daten
vornehmen, Änderungen zusammenführen und ggf. Konflikte lösen.
Microsoft Synchronization Services für ADO.NET ermöglicht
ermöglicht die Synchronisierung von
Datenbanken, etwa zwischen einer SQL Server Compact-Clientdatenbank
Compact Clientdatenbank und einer
Serverdatenbank, für die ein ADO.NET-Anbieter
ADO.NET
verfügbar ist.
Eine weitere Methode für den Datenaustausch sind Webservices. Bei Webservices hat man als
al
Entwickler die volle Kontrolle, welche Daten wie ausgetauscht werden. Sie sind nicht an eine
bestimmte Datenbank (Oracle, DB2, MSSQL, etc.) gebunden. Sie sind damit sehr flexibel einsetzbar.
Der Preis dafür ist natürlich, dass man einen grossen Teil der Entwicklung selbst machen muss.
Remote Data Access und Merge Replication hingegen sind Lösungen, die speziell für Microsoft SQL
Server zum Einsatz kommen.
In der Tabelle auf der nächsten Seite sind die verschiedenen Methoden aufgelistet, in den
nachfolgenden
den Kapiteln wird jede Methode detailliert beschrieben.
Datenaustausch / Kommunikation
Projekt
Mobile DMS-Datenerfassung
Datenerfassung
Seite
41(141)
Autor
Datum
Version
Dokument
Philipp Buser
10.09.2009
1.0
Projektdokumentation
Methode
Direct Access
Kurze Beschreibung
Die mobile Applikation befindet sich im LAN und greift direkt auf die SQL Server
Datenbank zu.
Bei Remote Date Access (RDA) werden Initialdaten
Initialdaten mittels Pull-Methode
Pull
vom SQL
Server in die SQL Server Compact Datenbank geholt. Das Gerät bzw. die
Anwendung verfolgt die lokalen Änderungen und übermittelt diese zurück zum
Server (Push). Die API ist gut geeignet wenn nur Änderungen auf dem Gerät,
Gerä nicht
jedoch auf dem Server, verfolgt werden müssen. Das .NET Compact Framework
bietet einen Managed Wrapper: SqlCeRemoteDataAccess.
Datensynchronisation zwischen SQL Server Compact und SQL Server. SQL Server ist
„Publisher“, SQL Server
Serv Compact ist „Subscriber“.
SQL Server Compact erhält einen initialen Snapshot vom SQL Server, danach
können sowohl SQL Server Compact wie auch SQL Server die Daten ändern. Die
Konfliktauflösung erfolgt durch den SQL-Server
SQL Server und ist konfigurierbar.
Das .NET
ET Compact Framework bietet auch hierfür einen Managed Wrapper:
SqlCeReplication. Damit können Abonnemente programmatisch erstellt und
SqlCeReplication.
synchronisiert werden.
Ein Webservice und dessen Verhalten muss vom Entwickler erstellt und
implementiert werden.
werden. Er ist dadurch sehr flexibel einsetzbar.
Es kann zwischen herkömmlichen ASP.NET Webservices und den neueren WCFWCF
Services unterschieden werden.
Synchronization Services bietet eine Infrastruktur zum Nachverfolgen
Nachverfolgen von
inkrementellen Änderungen in der Clientdatenbank (SQL Server Compact 3.5).
Diese Infrastruktur wird aktiviert, sobald eine Tabelle mit einer der
Synchronisierungsmethoden, mit Ausnahme der Snapshotsynchronisierung,
erstmals synchronisiert wird.
w
Die Serverdatenbank kann jede Datenbank sein, für
die ein ADO.NET-Anbieter
ADO.NET
verfügbar ist.
Remote Data Access
Merge Replication
Web Services
Microsoft
Synchronization
Services für ADO.NET
Tabelle 7: Übersicht Datenaustausch-Technologien
Technologien
5.2 Direct Access (SQL Server Client)
Wenn das mobile Gerät direkt mit dem LAN verbunden ist, zum Beispiel durch WiFi oder über eine
ActiveSync-Verbindung
Verbindung zu einem PC der am LAN angeschlossen ist, dann ist die direkte Verbindung
zum Backend SQL Server ein sehr einfacher Weg. Übers Internet hingegen kann diese Technik nicht
verwendet werden (es sei denn, man ist über ein VPN verbunden).
Die benötigten Klassen sind in der Komponente System.Data.SqlClient zu finden.
Im Zusammenhang mit der Datenbankverbindung sind im Vergleich zum herkömmlichen .NET
Framework beim .NET Compact Framework folgende Punkte zu beachten:
•
•
•
•
Es werden nur TCP/IP Verbindungen unterstützt. Shared Memory und Named Pipes können
nicht verwendet werden.
Es werden keine verteilten Transaktionen über verschiedene Datenbanken oder Server
unterstützt. Transaktionen auf einer einzelnen
einzeln Datenbank sind möglich.
Connection-Pooling
Pooling wird nicht unterstützt. Wird im Connection-String
Connection String ein ConnectionConnection
Pooling Schlüsselwort oder Wert verwendet, dann führt dies zu einem Fehler.
Verschlüsselte Verbindungen werden nicht unterstützt.
Die Zeit zum Verbindungsaufbau
erbindungsaufbau zum SQL-Server
SQL
ist im Vergleich zu den nachfolgenden Abfragen
relativ lang. Da Connection Pooling nicht unterstützt wird, tritt diese Verzögerung jedes Mal wenn
sich die Applikation zur Datenbank verbindet auf. Dies kann verhindert werden, wenn die Verbindung
offen gehalten und erst beim Schliessen der Applikation geschlossen wird.
Datenaustausch / Kommunikation
Projekt
Mobile DMS-Datenerfassung
Datenerfassung
Autor
Datum
Version
Dokument
Philipp Buser
10.09.2009
1.0
Projektdokumentation
Seite
42(141)
5.3 Remote Data Access (RDA)
Mithilfe des Remotedatenzugriffs (Remote Data Access, RDA) in SQL Server Compact 3.5 kann eine
Anwendung auf Daten aus einer Remote-Datenbanktabelle
Remote
nbanktabelle in SQL Server zugreifen und diese Daten
in einer lokalen SQL Server Compact 3.5-Datenbanktabelle
3.5 Datenbanktabelle speichern. Von der Anwendung kann dann
die lokale SQL Server Compact 3.5-Datenbanktabelle
3.5 Datenbanktabelle gelesen und aktualisiert werden. Von SQL
Server Compact 3.5 können optional alle Änderungen nachverfolgt werden, die an der lokalen
Tabelle vorgenommen werden. Von der Anwendung können später die in der lokalen Tabelle
geänderten Datensätze auch in der SQL Server-Tabelle
Server
aktualisiert werden.
act 3.5 wird das Übertragen von Daten von der SQL Server-Tabelle
Server Tabelle zu einer
In SQL Server Compact
lokalen SQL Server Compact 3.5--Tabelle
Tabelle als Pull bezeichnet. Die Rückübertragung der in der lokalen
SQL Server Compact 3.5-Tabelle
Tabelle vorgenommenen Änderungen in die SQL ServerServer-Tabelle wird als
Push bezeichnet.
Anwendungen können SQL-Anweisungen,
Anweisungen, die für eine SQL Server-Remotedatenbank
Server Remotedatenbank ausgeführt
werden sollen, auch per RDA absenden. So kann eine Anwendung beispielsweise SQL-Anweisungen
SQL
absenden, über die Datensätze in einer SQL Server-Remotetabelle
Server emotetabelle eingefügt, aktualisiert oder
gelöscht werden. Anwendungen können jede beliebige SQL-Anweisung
SQL Anweisung aufrufen, die kein Recordset
zurückgibt. Dazu gehören auch gespeicherte Prozeduren auf dem Remotesystem.
Der Prozess, in welchem RDA die Daten zurück
zurü in die zentrale Datenbank synchronisiert
onisiert, ist relativ
simpel und nicht geeignet für komplexe Datenstruktur oder Mehrbenutzer-Applikationen,
Mehrbenutzer Applikationen, in welchen
viele Benutzer versuchen die gleichen Daten zu ändern. RDA kann zudem nicht mit einer CASECASE
SENSITIVE SQL
QL Server Datenbank verwendet werden.
RDA bietet keine Unterstützung für Konfliktlöser zur Verarbeitung von Zeilen, die aufgrund von
Fehlern auf dem Server nicht übernommen werden. Die Anwendung auf dem Gerät muss Code zur
Fehlerbehandlung enthalten. Fehler
Fehler können optional in einer Fehlertabelle in der SQL Server
Compact 3.5-Datenbank
Datenbank auf dem Gerät protokolliert werden. Darüber hinaus erkennt RDA
Standardkonflikte nicht, wie z.B.
B. wenn Daten von verschiedenen Benutzern geändert werden. Im
Konfliktfall wird die
ie letzte Aktualisierung übernommen. Deshalb sollte RDA in einer vollständig
partitionierten Anwendung verwendet werden, in der Daten nicht von verschiedenen Benutzern
aktualisiert werden.
RDA erfordert keine Konfiguration auf dem Server. Deshalb bleibt das
das Schema der Serverdatenbank
unberührt. Diese Lösung empfiehlt sich, wenn Änderungen am Datenschema auf dem Server
aufgrund von Unternehmensanforderungen nicht möglich sind. Clients müssen über die auf dem
Gerät ausgeführte Anwendung einzeln für RDA konfiguriert
konfiguriert werden. Deshalb eignet sich diese
Konnektivitätslösung am besten für Anwendungen, die nicht allzu viele Clients bedienen, oder wenn
nicht viel Clientcode für die Verwaltung der verbundenen Daten in der Anwendung benötigt wird.
Bei Verwendung des Remote-Datenzugriffs
Datenzugriffs (oder auch der in Kapitel 5.4 beschriebenen MergeMerge
Replikation) stellt SQL Server Compact über einen Server eine Verbindung mit dem SQL Server her,
auf dem Microsoft Internet-Informationsdien
Informationsdienste
ste (IIS) ausgeführt wird. Da die Konnektivität zu SQL
Server von IIS sichergestellt wird, muss das Gerät lediglich eine Verbindung über HTTP oder HTTPS
mit dem IIS-Webserver
Webserver herstellen können. Dadurch können Remote-Datenzugriffs
Remote Datenzugriffs- und ReplikationsOperationen
nen über jeden beliebigen Netzwerkverbindungstyp ausgeführt
aus
werden, der HTTP
unterstützt: Local Area Networks (LANs), Wide Area Networks (WANs) sowie Microsoft ActiveSyncActiveSync
Verbindungen.
Datenaustausch / Kommunikation
Projekt
Mobile DMS-Datenerfassung
Datenerfassung
Autor
Datum
Version
Dokument
Philipp Buser
10.09.2009
1.0
Projektdokumentation
Seite
43(141)
Remote-Datenzugriff
Datenzugriff und Replikation sind auch für drahtlose Übertragungen
Übertragungen gut geeignet.
gee
Zur
Verringerung der Grössee der übermittelten Daten werden diese komprimiert. Zum Schutz
vertraulicher Benutzerdaten während der Übertragung ist zudem eine Verschlüsselung der Daten
möglich.
Datenzugriff und Replikation unterstützen
unterstützen jeweils die integrierte Windows-Authentifizierung
Windows
Remote-Datenzugriff
und SQL Server-Authentifizierung
Authentifizierung beim Herstellen einer Verbindung mit SQL Server.
Microsoft weist allerdings darauf hin, dass aufgrund von Entwurfseinschränkungen der
Remotedatenzugriff in einer Folgeversion
Folgeversion entfernt werden wird. Wenn man beabsichtigt, RDA in
einer neuen Anwendung zu verwenden, sollte man stattdessen die Verwendung der MergeMerge
Replikation oder der Synchronization Services in Betracht ziehen.
5.3.1 Architektur
Beim Remotedatenzugriff werden drei Komponenten von
Microsoft
icrosoft SQL Server Compact 3.5 verwendet: das
d
Datenbankmodul, der Client-Agent
Agent und der Server-Agent.
RDA verwendet IIS als Kommunikationsmittel zwischen der
SQL Server-Datenbank
Datenbank auf einem Server und der SQL Server
Compact 3.5-Datenbank auff dem Gerät. Der
Remotedatenzugriff wird vom Datenbankmodul, dem
Client-Agent und dem Server-Agent
Agent zusammen
abgeschlossen.
hlossen. Dieser Vorgang ist in der Abbildung
dargestellt.
SQL Server Compact 3.5 Datenbankmodul
Das Datenbankmodul verwaltet den auf dem Gerät
gespeicherten SQL Server-Datenspeicher.
Datenspeicher. Bei
nachverfolgten Pull-Vorgängen
Vorgängen protokolliert das
Datenbankmodul alle Datenbankeinträge, die eingefügt,
aktualisiert oder gelöscht werden, indem zusätzlich zu
jedem Datensatz einige Informationen zur
Änderungsprotokollierung
tokollierung gespeichert werden.
werde
Agent für SQL Server Compact 3.5
Client-Agent
Der Client-Agent,
Agent, der sich auf dem Gerät befindet, ist
diejenige Komponente, die hauptsächlich für RDA
Abbildung 8:: Architektur von Remote Data
verwendet wird. Sie implementiert die RDARDA
Access
Objektschnittstelle und wird von Anwendungen
Anw
zur
programmseitigen
n Steuerung von RDA aufgerufen. In der Tabelle werden die Aktionen beschrieben,
die der Client-Agent
Agent in Reaktion auf Methodenaufrufe von RDA-Objekten
RDA Objekten ausführt.
Methode
Pull
Push
SubmitSQL
Aktion
Leitet die Anforderung an den Server-Agent
Server
mithilfe von HTTP weiter. Wenn der Client-Agent
Client
das Recordset vom SQL Server empfängt, speichert er es in der SQL Server Compact 3.53
Datenbank.
Extrahiert alle eingefügten, aktualisierten und gelöschten Datensätze aus der SQL Server
Compact 3.5-Datenbank
nbank und sendet sie mithilfe von HTTP an den Server-Agent.
Server
Leitet die angegebene SQL-Anforderung
SQL
an den Server-Agent
Agent mithilfe von HTTP weiter.
Tabelle 8:: Aktionen des Client Agent von RDA in Reaktion auf Methodenaufrufe
Methodenaufr
Datenaustausch / Kommunikation
Projekt
Mobile DMS-Datenerfassung
Datenerfassung
Autor
Datum
Version
Dokument
Philipp Buser
10.09.2009
1.0
Projektdokumentation
Seite
44(141)
Server-Agent
Agent für SQL Server Compact 3.5
Der Server-Agent,
Agent, der sich auf dem Computer mit IIS befindet, verarbeitet die HTTP-Anforderungen
HTTP
des Client-Agents.
Agents. Er verwendet temporäre Nachrichtendateien (IN und OUT) für die Verwaltung des
Datenaustauschs zwischen SQL Server und SQL Server Compact 3.5. Der Server-Agent
Agent läuft als
Internet Server API (ISAPI) Extension unter IIS. Er ist in der Sscesa35.dll Datei implementiert, welche
sich auf einer speziellen Webseite für die Verwendung von RDA befindet. In der Tabelle werden die
Aktionen beschrieben, die der Server-Agent
Server Agent in Reaktion auf Methodenaufrufe von RDA-Objekten
RDA
ausführt.
Methode
Pull
Push
SubmitSQL
Aktion
Empfängt die Anforderung vom Client-Agent,
Client Agent, stellt eine Verbindung mit SQL Server über den
OLE DB-Anbieter
Anbieter für SQL Server her und ruft die SQL-Anweisung
Anweisung des Clients auf. Der ServerServer
Agent gibt das resultierende Recordset an den Client-Agent
Client Agent mithilfe von HTTP zurück.
Empfängt alle eingefügten, aktualisierten und gelöschten Datensätze vom Client-Agent,
Client
stellt
eine Verbindung über OLE DB mit SQL Server her und fügt die Datensätze in die SQL ServerServer
Datenbank ein bzw. aktualisiert oder löscht sie. Falls Fehler auftreten, meldet der ServerServer
Agent die Fehler mithilfe von HTTP an den Client-Agent.
Client
Empfängt die angegebene SQL-Anforderung
SQL
vom Client-Agent
Agent mithilfe von HTTP, stellt eine
Verbindung über OLE DB mit SQL Server her und ruft die SQL-Anweisung
SQL Anweisung des Clients auf. Falls
Fehler auftreten, meldet der Server-Agent
Server Agent die Fehler mithilfe von HTTP an den Client-Agent.
Client
Tabelle 9:: Aktionen des Server Agent von RDA in Reaktion auf Methodenaufrufe
5.3.2 Implementieren des Remotedatenzugriffs
5.3.2.1 Erteilen von Zugriff auf eine SQL Server-Datenbank
Server
Für die Verwendung des Remotedatenzugriffs muss der Zugriff
riff auf die Microsoft SQL ServerDatenbank auf der Grundlage der konfigurierten Authentifizierung in
i IIS und in SQL Server erteilt
werden. In der folgenden Tabelle wird der Datenbankzugriff aufgeführt, der für die verschiedenen
IIS- und SQL Server-Authentifizierungsmodi
ifizierungsmodi erteilt werden muss.
IIS-Authentifizierungsmodus
Anonymer Zugriff
Standardauthentifizierung
Integrierte WindowsAuthentifizierung
Anonymer Zugriff,
Standardauthentifizierung
oder integrierte WindowsAuthentifizierung
SQL ServerServer
Authentifizierungsmodus
Integrierte WindowsWindows
Authentifizierung
Integrierte WindowsWindows
Authentifizierung
Integrierte WindowsWindows
Authentifizierung
SQL Server-Authentifizierung
Datenbankzugriff muss erteilt werden für:
für
Computername\IUSR_Computername
IUSR_Computername
oder das konfigurierte anonyme
Benutzerkonto in IIS
Den Benutzer oder die Gruppe des IISIIS
Clients.
Den Benutzer oder die Gruppe des IISIIS
Clients.
ients. Diese Konfiguration wird nur
unterstützt, wenn SQL Server und IIS auf
demselben Computer ausgeführt werden.
Den im SQL Server
OLEDBConnectionString
onnectionString-Parameter der
Pull-, Push- oder SubmitSQL-Methode
SubmitSQL
im
RDA-Objekt
Objekt angegebenen
angegebene Benutzer.
Tabelle 10:: Erforderlicher Datenbankzugriff für die verschiedenen IISIIS und SQL Server- Authentifizierungsmodi
Wenn beispielsweise der anonyme Zugriff als IIS-Authentifizierungsmodus
Authentifizierungsmodus und die integrierte
Windows-Authentifizierung
Authentifizierung verwendet wird, muss für Computername\IUSR_Computername
IUSR_Computername
Datenbankzugriff erteilt werden.. Dies wird nur unterstützt, wenn auf dem Computer sowohl
so
SQL
Server als auch IIS ausgeführt wird, weil es sich dabei nicht um ein Domänenkonto oder das
konfigurierte anonyme Benutzerkonto in IIS handelt.
Datenaustausch / Kommunikation
Projekt
Mobile DMS-Datenerfassung
Datenerfassung
Autor
Datum
Version
Dokument
Philipp Buser
10.09.2009
1.0
Projektdokumentation
Seite
45(141)
5.3.2.2 Daten mithilfe von Pull vom Server zum Client senden
Remotedatenzugriff wird oft initialisiert, indem Daten mithilfe von
v Pull von einer Microsoft SQL
Server- zu
u einer SQL Server Compact 3.5 Clientdatenbank gesendet werden. Wenn Daten mit einem
Pull-Vorgang
Vorgang von einem Server zu einem Client gesendet werden, wird der Pull-Vorgang
Pull Vorgang von SQL
Server Compact 3.5 initiiert. Von SQL Server Compact 3.5 werden Daten von einer SQL ServerDatenbank extrahiert und in einer Tabelle in einer SQL Server Compact 3.5-Datenbank
3.5 atenbank gespeichert.
Zum Abrufen von Daten vom Server mithilfe
mith eines Pull-Vorgangs
Vorgangs kann RDA in einer Anwendung
programmgesteuert
ert konfiguriert werden.
werden. Beim Einrichten und Initiieren eines Pull-Vorgangs
Pull
mithilfe
einer der beiden Techniken gibt man Folgendes an:
•
•
•
•
•
Die Datenbank, von der man Daten mit einem Pull-Vorgang
Vorgang abrufen möchte
Die für die Verbindung mit dem Webserver erforderliche
erforderliche Webserverauthentifizierung
Die verwendete SQL Server-Authentifizierung
Server
Die Tabellen, die kopiert und an den Client weitergegeben werden
Pull-Optionen, einschliess
sslich Nachverfolgung und einer Fehlertabelle
private void RDAPull()
{
CreateEmptyDatabase();//
// First ensure we have an empty local SQL CE database
using (SqlCeRemoteDataAccess
SqlCeRemoteDataAccess rda = new SqlCeRemoteDataAccess())
{
string sCon = @"Provider=SQLOLEDB;Data Source=CL1MBING;Initial Catalog=Traffic;"
+ @"integrated security=SSPI;Persist
curity=SSPI;Persist Security Info=False";
Info=False"
rda.InternetUrl = @"http://CL1MBING/TrafficRDA/sqlcesa30.dll";
@"http://CL1MBING/TrafficRDA/sqlcesa30.dll"
rda.LocalConnectionString = @"Data Source=\My Documents\TrafficRDA.sdf"
TrafficRDA.sdf";
rda.InternetLogin = @"CL1MBING\RDAUser";
@"CL1MBING
rda.InternetPassword
InternetPassword = "P@ssw0rd";
try
{
rda.Pull("Cars", "SELECT CarID,Reg,Location FROM Cars",
Cars"
sCon, RdaTrackOption.TrackingOnWithIndexes,
RdaTrackOption
"rdaCarErrors");
}
catch (SqlCeException sqlCeEx)
{
//Catch exception
}
try
{
rda.Pull("Obs", "SELECT ObsID,CarID,ObsDateTime,ObsNote FROM Obs",
Obs"
sCon, RdaTrackOption.TrackingOn,
RdaTrackOption
"rdaObsErrors");
}
catch (SqlCeException sqlCeEx)
{
//Catch exception
}
}
}
Quellcode 3: Remote Data Access Pull
Um
m die lokalen Tabellendaten anhand von Datenänderungen der SQL Server-Tabelle
Serve Tabelle zu aktualisieren,
muss die Tabelle gelöscht und ein erneuter Pull
Pul der Tabelle ausgeführt werden.
Datenaustausch / Kommunikation
Projekt
Mobile DMS-Datenerfassung
Datenerfassung
Autor
Datum
Version
Dokument
Philipp Buser
10.09.2009
1.0
Projektdokumentation
Seite
46(141)
5.3.2.3 Ausführen von Push--Vorgängen,
Vorgängen, um Daten vom Client zum Server zu übertragen
Das Ausführen von Push-Vorgängen,
Vorgängen, um Daten von einem Client zu einem Server zu übertragen,
schliesst das Weitergeben der Änderungen von Microsoft SQL Server Compact 3.5 zurück zu einer
SQL Server-Tabelle ein. Die lokale SQL Server Compact 3.5-Tabelle
3.5 Tabelle muss in der Anwendung erstellt
worden sein, indem die Pull-Methode
Methode mit aktivierter Nachverfolgungsoption aufgerufen wurde.
private void RDAPush()
{
using (SqlCeRemoteDataAccess
qlCeRemoteDataAccess rda = new SqlCeRemoteDataAccess())
{
string sCon = @"Provider=SQLOLEDB;Data Source=CL1MBING;Initial Catalog=Traffic;"
+ @"integrated security=SSPI;Persist Security Info=False";
Info=False"
rda.InternetUrl = @"http://CL1MBING/TrafficRDA/sqlcesa30.dll";
@"http:
rda.LocalConnectionString = @"Data Source=\My Documents\TrafficRDA.sdf"
TrafficRDA.sdf";
rda.InternetLogin = @"CL1MBING\RDAUser";
@"CL1MBING
rda.InternetPassword = "P@ssw0rd";
try
{
rda.Push("Cars",
, sCon);
}
catch (SqlCeException sqlCeEx)
{
//Catch exception
}
}
}
Quellcode 4:: Remote Data Access Push
5.3.2.4 Verwenden der SubmitSQL-Methode
SubmitSQL
Möglicherweise müssen Anweisungen an eine Remoteinstanz von Microsoft SQL Server übermittelt
werden, wenn auf dem SQL Server während des RDA-PullRDA
oder RDA-Push-Vorgangs
Vorgangs eine bestimmte
Aktion ausgeführt werden soll. Wenn eine direkte Verbindung zu SQL Server besteht,
besteht sollte sqlclient
für das Ausführen von Anweisungen
isungen auf dem Server verwendet werden.
werden. Wenn über HTTP eine
ein
Verbindung zum Server mit SQL Server hergestellt wird, verwendet man SubmitSQL,
SubmitSQL allerdings nur
dann, wenn eine Anweisung ausgeführt
geführt wird,
wird bei der keine Daten
en zurückgegeben werden.
werde
private void SubmitSQLRDA()
{
using (SqlCeRemoteDataAccess
SqlCeRemoteDataAccess rda = new SqlCeRemoteDataAccess())
{
string sCon = @"Provider=SQLOLEDB;Data Source=CL1MBING;Initial Catalog=Traffic;"
+ @"integrated security=SSPI;Persist Security Info=False";
rda.InternetUrl = @"http://CL1MBING/TrafficRDA/sqlcesa30.dll";
@"http://CL1MBING/TrafficRDA/sqlcesa30.dll"
rda.LocalConnectionString = @"Data Source=\My Documents\TrafficRDA.sdf"
TrafficRDA.sdf";
rda.InternetLogin = @"CL1MBING\RDAUser";
@"CL1MBING
rda.InternetPassword = "P@ssw0rd";
try
{
rda.SubmitSql("UPDATE
"UPDATE Cars SET Archive = 1",
1" sCon);
}
catch (SqlCeException ex)
{
//Catch exception
}
}
}
Quellcode 5:: Remote Data Access SubmitSql
Subm
Datenaustausch / Kommunikation
Projekt
Mobile DMS-Datenerfassung
Datenerfassung
Autor
Datum
Version
Dokument
Philipp Buser
10.09.2009
1.0
Projektdokumentation
Seite
47(141)
5.3.3 Konflikterkennung und -berichterstellung für RDA
Remotedatenzugriff in Microsoft SQL Server Compact 3.5 stellt einen eingeschränkten Mechanismus
zur Konfliktberichterstellung für Zeilen bereit, die während eines Push-Vorgangs
Push Vorgangs nicht auf dem SQL
Server aktualisiert
iert werden können.
Wichtig: Konflikt verursachende Zeilen sind im Remotedatenzugriff streng als Einfüge-,
Einfüge
Aktualisierungs- und Löschvorgänge definiert, die aufgrund eines Fehlers beim Push von SQL Server
Compact 3.5 in die SQL Server-Tabelle
Tabelle fehlschlagen.
fehlschlagen. Von verschiedenen Benutzern vorgenommene
Änderungen an Daten werden nicht als Konflikte betrachtet, wenn sie keine Fehler verursachen.
RDA stellt im Gegensatz zur Replikation zwar keinen speziellen Konfliktlöser bereit, SQL Server
Compact 3.5 bietet jedoch eine Fehlertabelle, die alle Konflikt verursachenden Zeilen aufzeichnet.
Die Fehlertabelle kann als Teil der Pull-Methode
Methode angegeben werden. Alle Fehler, die während des
Push-Vorgangs
Vorgangs auftreten, werden in dieser Fehlertabelle aufgezeichnet. Mithilfe
Mithilfe der Fehlertabelle
können Anwendungen zum Verwalten der Konflikterkennung und -berichterstellung
berichterstellung entwickelt
werden.
Ein Konflikt besteht in RDA, wenn für eine Zeile kein Push von SQL Server Compact 3.5 zu SQL Server
ausgeführt werden kann. RDA unterstützt
unterstützt nur Nachverfolgung auf Zeilenebene. Deshalb werden,
abhängig von den in einer Push-Methode
Methode ausgewählten Optionen, einige Zeilen erfolgreich gesendet,
während andere fehlschlagen. Zum Nachverfolgen von Konflikten in RDA gibt man TRACKINGON oder
TRACKINGON_INDEXES in der Pull-Methode
Pull
an.
Konflikte und Fehler können vermieden werden, wenn nachverfolgte RDA-Tabellen
RDA Tabellen verwendet
werden, indem Tabellen richtig gefiltert werden und beim Übertragen von Daten eine stabile
Netzwerkverbindung verwendet wird.
Ursachen
achen für das Auftreten von RDA-Konflikten
RDA
Änderungen an einer Zeile können auf dem Server aus folgenden Gründen nicht angewendet
werden:
•
•
•
RDA verfolgt Einfüge-,, AktualisierungsAktualisierungs und Löschvorgänge speziell für jede Zeile nach, die in
der nachverfolgten Tabelle
belle auf dem Gerät geändert wurde. Wenn eine Zeile auf dem Client
eingefügt wird, die denselben Primärschlüsselwert hat wie eine Zeile, die ebenfalls auf dem
Server in dieselbe Tabelle eingefügt wurde, schlägt deshalb der Push vom Client mit einem
Fehler fehl, da der Einfügevorgang bereits stattgefunden hat.
Wenn die Daten nicht für jeden Benutzer richtig partitioniert wurden, kann ein Benutzer eine
Zeile löschen, während ein anderer Benutzer versucht, dieselbe Zeile zu aktualisieren.
Das Senden von Zeilen
en zum Server kann auch fehlschlagen, wenn ein vorhergehender PushPush
Vorgang unterbrochen wurde. Beispielsweise beginnt ein Benutzer, ein Push zum Server für
Daten auszuführen, die Einfügungen enthalten, und während des Push-Vorgangs
Push Vorgangs wird die
Netzwerkverbindung
ung unterbrochen. Der Client zeigt eine Meldung an, dass der Push
aufgrund des Verlustes der Netzwerkverbindung fehlgeschlagen ist. Die Änderungen wurden
jedoch auf dem Server angewendet. Wenn die Netzwerkverbindung für den Client
wiederhergestellt wird und
und der Benutzer versucht, einen zweiten Push für dieselben Daten
auszuführen, können einige Zeilen nicht angewendet werden, weil diese während des ersten
Push-Vorgangs
Vorgangs eingefügt wurden. In diesem Fall sollte die Anwendung alle Fehler in der
Fehlertabelle ignorieren,
norieren, bei denen es sich um Fehler aufgrund eines doppelten
Primärschlüssels basierend auf dem zweiten Push handelt.
Datenaustausch / Kommunikation
Projekt
Mobile DMS-Datenerfassung
Datenerfassung
Autor
Datum
Version
Dokument
Philipp Buser
10.09.2009
1.0
Projektdokumentation
Seite
48(141)
Verwalten von Fehlertabellen
Fehlertabellen werden automatisch gelöscht, wenn die zugehörige nachverfolgte RDA-Tabelle
RDA
gelöscht wird, selbst
elbst wenn noch Zeilen in der Fehlertabelle vorhanden sind. Der Entwickler muss
Zeilen auflösen, die als konfliktverursachend betrachtet werden, da diese Zeilen nicht auf dem Server
angewendet werden können.
Das Aktualisieren der Daten auf dem Gerät ist möglicherweise
möglicherweise erforderlich, um den Fehler, der beim
ursprünglichen Push von Daten zum Server aufgetreten ist, richtig aufzulösen. Daten in der
Fehlertabelle sollten zwischengespeichert werden, sodass sie nicht verloren gehen, wenn die
nachverfolgte Tabelle gelöscht wird. Alternativ kann für die aktualisierten Daten einen Pull zu einer
Tabelle ausgeführt werden, die einen anderen Namen als die ursprünglich nachverfolgte Tabelle hat.
5.4 Merge Replication
Mithilfe der Mergereplikation können Daten nach SQL Server Compact 3.5 repliziert werden. Mobile
Benutzer haben so die Möglichkeit, Datenänderungen schnell und einfach mit einer zentralen SQL
Server-Datenbank
Datenbank zu synchronisieren.
synchronisieren
Bei der Mergereplikation erfolgt die Datensynchronisierung mit SQL Server Compact 3.5 über die
Websynchronisierung. Das Format, in dem Datenänderungen an SQL Server Compact 3.5 übergeben
werden, unterscheidet sich von anderen SQL Server-Editionen,
Server Editionen, die Architektur stimmt jedoch
grundsätzlich überein: Ein Abonnent sendet seine Änderungen über
über den Microsoft-IIS-Server
Microsoft
an den
Verleger und erhält seine Änderungen vom Verleger über denselben IIS-Server.
IIS
Die Mergereplikation eignet sich ideal für tragbare Geräte, da Daten selbstständig und unabhängig
vom tragbaren Gerät und dem Server aktualisiert
aktualisiert werden können. Die Daten auf dem Gerät und dem
Server können, sobald das Gerät verbunden ist, synchronisiert werden, um Änderungen vom Client
an den Server zu senden und neue Änderungen vom Server zu empfangen.
Die Mergereplikation setzt ein höheres Mass
Ma an Konfiguration und Verwaltung auf dem Server
voraus als der Remotedatenzugriff, eignet sich jedoch optimal für Anwendungen, die mit zahlreichen
Geräten kommunizieren. Die Mergereplikation verfügt zudem über integrierte und
benutzerdefinierte Funktionen zur Konfliktlösung, ermöglicht die gleichzeitige Replikation von Daten
aus mehreren Tabellen, unterstützt die Verwendung von Überwachungsprogrammen
Überwachungsprogrammen mithilfe von
SQL Server und bietet moderne Optionen
Option der Datenreplikation, wie z.B.
B. Artikeltypen und Filter, zur
Leistungssteigerung, abhängig von den Datenanforderungen und der
der Identitätsbereichverwaltung.
5.4.1 Replikationsarchitektur
Die Replikation verwendet in Microsoft SQL Server Compact 3.5 folgende Komponenten:
•
•
•
•
SQL Server Compact 3.5 Datenbankmodul
SQL Server Compact 3.5--Client-Agent
Server-Agent
Agent für SQL Server Compact 3.5
SQL Server Compact 3.5--Replikationsanbieter
SQL Server Compact 3.5-Datenbankmodul
Datenbankmodul
Das Datenbankmodul verwaltet die lokale Datenbank auf einem Gerät. Bei Abonnementdatenbanken
führt das Datenbankmodul
enbankmodul für die Datensätze der Datenbank die Nachverfolgung aller Einfügungen,
Aktualisierungen oder Löschungen aus, indem es die Änderungsprotokollierung verwaltet.
Datenaustausch / Kommunikation
Projekt
Mobile DMS-Datenerfassung
Datenerfassung
Autor
Datum
Version
Dokument
Philipp Buser
10.09.2009
1.0
Projektdokumentation
Seite
49(141)
Client-Agent
Agent für SQL Server Compact 3.5
Der Client-Agent ist die primäre
skomponente von SQL Server
Replikationskomponente
Compact 3.5 auf einem Gerät. Der ClientClient
Agent implementiert
iert die SQL Server Compact
3.5-Objektschnittstelle.
Objektschnittstelle. Diese Schnittstelle
wird von Anwendungen für die
programmgesteuerte Replikation aufgerufen.
Server-Agent für SQL Server Compact 3.5
Der Server-Agent ist für die Kommunikation
zwischen SQL Server und SQL Server Compact
3.5 zuständig. Der Server-Agent
Agent befindet sich
auf dem Server mit IIS.. Er verarbeitet alle
HTTP-Anforderungen des Client--Agents.
nd SQL Server
SQL Server-Synchronisierung und
Compact 3.5-Replikationsanbieter
Replikationsanbieter
Beim Ausführen einerr Synchronisierung ruft
die SQL Server-Synchronisierung
Synchronisierung den SQL
Server Compact 3.5-Replikationsanbieter
onsanbieter auf.
Abbildung 9:: Architektur von Merge Replication
Sowohl die SQL Server-Synchronisierung
Synchronisierung als
auch der Replikationsanbieter befinden
befind sich
auf dem Server mit IIS, auf dem die Servertools von SQL Server Compact 3.5 installiert sind. Wenn die
SQL Server-Synchronisierung
Synchronisierung gestartet wird, wird dem Abonnement beim Verleger
Verleger ein Merge-Agent
Merge
zugeordnet.
5.4.2 Funktionsweise der Replikation
Die Mergereplikation
replikation mit Microsoft SQL Server Compact 3.5 wird folgendermassen eingerichtet:
1.
2.
3.
4.
Daten werden auf einem Computer mit SQL Server veröffentlicht.
Abonnements für die Veröffentlichungen werden erstellt.
Daten auf dem Abonnenten werden aktualisiert.
Daten werden synchronisiert.
Die folgende Tabelle definiert einige der in diesem Kapitel verwendeten Begriffe.
Begriff
Artikel
Veröffentlichung
Partition
Verleger
Abonnent
Abonnement
Abonnementdatenbank
Definition
Eine Datenbanktabelle, die für die Replikation aktiviert ist.
Eine Auflistung von Artikeln.
Ein bestimmter ZeilenZeilen oder Spaltensatz in einer Veröffentlichung.
Eine Datenbank, die eine Veröffentlichung durch Replikation verfügbar macht.
Eine Datenbank, die replizierte Daten empfängt und Datenänderungen an den
Verleger zurückgeben
zurückg
kann.
Eine Anforderung, eine Kopie der Veröffentlichung an den Abonnenten zu
übermitteln.
Eine Datenbank, die von einem Verleger veröffentlichte Artikel empfängt.
Tabelle 11: Begriffe der Merge
ge Replikation
Datenaustausch / Kommunikation
Projekt
Mobile DMS-Datenerfassung
Datenerfassung
Autor
Datum
Version
Dokument
Philipp Buser
10.09.2009
1.0
Projektdokumentation
Seite
50(141)
Veröffentlichen von Daten
Veröffentlichungen geben an, welche Daten veröffentlicht werden. Sie sind normalerweise an
verschiedene Benutzer oder Benutzergruppen angepasst. Es kann vorkommen, dass alle Benutzer die
gleichen Daten benötigen. Beispielsweise
eispielsweise benötigt möglicherweise jeder Mitarbeiter eine Kopie des
Mitarbeiterverzeichnisses des Unternehmens. In anderen Fällen benötigen unterschiedliche Gruppen
verschiedene Partitionen von Daten. Verkaufsmitarbeiter brauchen beispielsweise einen anderen
an
Datensatz als Kundendiensttechniker. Einzelne Benutzer benötigen möglicherweise auch speziell für
sie gefilterte Daten. Das Personal der Verkaufsabteilung braucht zum Beispiel möglicherweise nur die
Daten für die eigenen Kundenkonten.
Wenn Veröffentlichungen
ichungen erstellt werden, gibt man an, welche Artikel sie enthalten sollen.
soll
SQL
Server-Veröffentlichungen
Veröffentlichungen können zwar andere Datenbankobjekte enthalten, z.B. gespeicherte
Prozeduren, Sichten und benutzerdefinierte Funktionen, die SQL Server Compact 3.5-Replikation
3.5
ignoriert diese Objekte jedoch und schliesst nur Tabellen in das SQL Server Compact 3.53.5
Abonnement ein. Durch Filtern kann man angeben, welche Zeilen und Spalten im Artikel enthalten
sein sollen.
Abonnieren von Veröffentlichungen
Nachdem die Veröffentlichungen
öffentlichungen definiert wurde, kann sie von einer Anwendung abonniert werden.
Dies erfolgt programmgesteuert auf dem Gerät, durch Aufrufen der vom Replication-Objekt
Replication
von SQL
Server Compact 3.5 bzw. der SqlCeReplication-Klasse
SqlCeReplication Klasse offen gelegten Methoden oder mithilfe des
Assistenten für neue Abonnements in SQL Server Management Studio. Wenn das Abonnement
erstellt ist, wird der Anfangssnapshot vom Verteiler in der Abonnementdatenbank auf dem
Abonnenten angewendet.
Aktualisieren von Daten auf dem Abonnenten
Die Anwendung aktualisiert wahrscheinlich die Abonnementdatenbank. Aktualisierungen können
unabhängig davon stattfinden, ob das Gerät mit dem Netzwerk verbunden
verbunden ist. Jede SQL Server
Compact 3.5-Datenbank
Datenbank verwendet Änderungsnachverfolgung, um auf dem SQL Server Compact 3.53.5
Abonnenten ausgeführte INSERT-,
INSERT UPDATE- und DELETE-Anweisungen
Anweisungen zu verfolgen. Es kann sowohl
Nachverfolgung auf Zeilenebene als auch Nachverfolgung
Nachverfolgung auf Spaltenebene verwendet werden.
Synchronisieren von Daten
Normalerweise verbinden Benutzer das Gerät periodisch mit dem Netzwerk. Diese Verbindungen
ermöglichen es der Anwendung, auf dem Abonnenten vorgenommene Änderungen mit auf dem
Verleger vorgenommenen
orgenommenen Änderungen zu synchronisieren. Die Synchronisierung wird von der
Anwendung durch Aufrufen einer Synchronisierungsmethoden gestartet. Die Methoden werden vom
Replication-Objekt
Objekt oder von der SqlCeReplication-Klasse
Klasse offen gelegt. Der Synchronisierungsprozess
Synchronisie
besteht aus vier Schritten.
1. Extrahieren von Änderungen und Erstellen der Eingabenachrichtendatei.
Der Client-Agent
Agent extrahiert alle eingefügten, aktualisierten und gelöschten Datensätze aus
der Abonnementdatenbank auf dem SQL Server Compact 3.5-Abonnenten
3 Abonnenten und gibt sie über
HTTP an den Server-Agent
Agent weiter. Der Server-Agent
Server
erstellt eine neue
Eingabenachrichtendatei und schreibt die vom Client-Agent
Client Agent gesendeten Einfüge-,
Einfüge
Aktualisierungs- und Löschänderungen in diese Datei.
2. Ausführen des SQL Server-Synchronisierungsprozesses
Serve Synchronisierungsprozesses und Anwenden der Änderungen auf
die Veröffentlichungsdatenbank.
Veröffentlichungsdatenbank
Wenn alle Anforderungen in die Eingabenachrichtendatei geschrieben wurden, startet der
Server-Agent
Agent die SQL Server-Synchronisierung.
Server
Die SQL Server-Synchronisieru
Synchronisierung lädt den SQL
Server Compact 3.5-Replikationsanbieter,
Replikationsanbieter, der die Eingabenachrichtendatei liest und die SQL
Datenaustausch / Kommunikation
Projekt
Mobile DMS-Datenerfassung
Datenerfassung
Autor
Datum
Version
Dokument
Philipp Buser
10.09.2009
1.0
Projektdokumentation
Seite
51(141)
Server-Synchronisierung
Synchronisierung über an der SQL Server Compact 3.5-Abonnementdatenbank
3.5 Abonnementdatenbank
vorgenommene Änderungen informiert, die auf die Veröffentlichungsdatenbank
Veröffentlichungsdaten
auf dem
Verleger angewendet werden müssen. Während des Verarbeitens erkennt die SQL ServerServer
Synchronisierung Konflikte und löst diese auf. Ein Konflikt tritt auf, wenn mehr als ein
Abonnent oder Verleger denselben
de
Datensatz aktualisiert.
Hinweis: Die SQL Server-Synchronisierung
Server Synchronisierung löst Konflikte mithilfe von Konfliktlösern. Man
kann die mit SQL Server bereitgestellten Konfliktlöser verwenden, um einfache
Konfliktlösung für SQL Server Compact 3.5-Replikationsanwendungen
3.5 Replikationsanwendungen zu implementieren. Es
können aber auch
ch benutzerdefinierte Konfliktlöser erstellt werden, um ausgefeiltere
Lösungen zu implementieren.
3. Erstellen der Ausgabenachrichtendatei.
Die SQL Server-Synchronisierung
Synchronisierung informiert den SQL Server Compact 3.53.5Replikationsanbieter über auf dem Verleger vorgenommene
vorgenommene Änderungen, die auf die
Abonnementdatenbank auf dem Gerät angewendet werden müssen. Der SQL Server
Compact 3.5-Replikationsanbieter
Replikationsanbieter schreibt diese Änderungen in eine
Ausgabenachrichtendatei auf dem Server, auf dem IIS ausgeführt wird.
4. Lesen der Ausgabenachrichtendatei
gabenachrichtendatei und Anwenden von Änderungen auf die SQL Server
Compact 3.5-Abonnementdatenbank.
Abonnementdatenbank.
Wenn der SQL Server-Synchronisierungsprozess
Synchronisierungsprozess abgeschlossen ist, sucht der Server-Agent
Server
die Ausgabenachrichtendatei, die vom SQL Server Compact 3.5-Replikationsanbieter
3.5
tionsanbieter erstellt
wurde. Diese Datei enthält die Änderungen, die auf dem Verleger vorgenommen wurden und
auf die Abonnementdatenbank auf dem Gerät angewendet werden müssen. Der ServerServer
Agent liest die Ausgabenachrichtendatei und überträgt sie an den ClientCl
-Agent auf dem
Gerät. Der Client-Agent
Agent wendet die Änderungen aus der Ausgabenachrichtendatei auf die
SQL Server Compact 3.5--Abonnementdatenbank an.
Hinweis: Der Client-Agent
Agent verarbeitet sowohl die EingabeEingabe als auch die
Ausgabenachrichtendatei in logischen
logischen Blöcken, während er aus der Abonnementdatenbank
auf dem Gerät liest oder Änderungen auf sie anwendet. Da jede Nachrichtendatei auf diese
Weise verarbeitet wird, muss der Client-Agent
Client Agent nicht die gesamte Nachrichtendatei auf dem
Gerät schreiben und spart so Speicherplatz auf dem Gerät.
Nachdem der Client-Agent
Agent alle Änderungen in die Abonnementdatenbank auf dem Gerät eingefügt
hat und sämtliche Konflikte aufgelöst wurden, sind VeröffentlichungsVeröffentlichungs und Abonnementdatenbank
synchronisiert und die Daten zusammengeführt.
zusamme
Wichtig: Es ist nicht möglich zwei Mergereplikationsprozesse gleichzeitig auf derselben Datenbank
zu starten.
5.4.3 Implementieren der Replikation
5.4.3.1 Veröffentlichen von Daten für SQL Server Compact-Abonnenten
Compact Abonnenten
Der erste Schritt beim Konfigurieren der Mergereplikation
Me
likation zwischen Microsoft SQL Server und SQL
Server Compact 3.5 besteht aus dem Veröffentlichen der zu replizierenden Daten.
Daten
Zum Erstellen von Veröffentlichungen für SQL Server Compact 3.5 können die
Standardreplikationstools und -verfahren
verfahren von SQL Server verwendet werden. Am einfachsten kann
eine Veröffentlichung mit dem Veröffentlichungs-Assistenten
Veröffentlichungs Assistenten erstellt werden. Eine Veröffentlichung
kann man auch mithilfe von gespeicherten Prozeduren erstellen.
Datenaustausch / Kommunikation
Projekt
Mobile DMS-Datenerfassung
Datenerfassung
Autor
Datum
Version
Dokument
Philipp Buser
10.09.2009
1.0
Projektdokumentation
Seite
52(141)
Der Veröffentlichungs-Assistent
Assistent von SQL Server bietet
bietet eine grafische Benutzeroberfläche, über die
der Verleger, der Veröffentlichungstyp und die zu veröffentlichenden Artikel ausgewählt werden
können. Der Assistent ermöglicht es zudem, Filter für die Veröffentlichung zu konfigurieren.
Abonnenten HTTP über das Internet verwenden, um die
Da SQL Server Compact 3.5-Abonnenten
Synchronisierung mit Veröffentlichungen vorzunehmen, ist die richtige Konfiguration der
Veröffentlichung unerlässlich, um die Sicherheit der Daten sicherzustellen
Detaillierte Informationen zum Erstellen und Schützen von Veröffentlichungen sind im Dokument
„Technologie-Studie“ zu finden.
5.4.3.2 Konfigurieren des Snapshotordners
Im Snapshotordner befinden sich die Snapshotdateien, die das Schema und die Daten für die
veröffentlichten Tabellen enthalten. Beim Erstellen des Abonnements auf dem intelligenten Gerät
verwendet der Replikationsanbieter von Microsoft SQL Server Compact 3.5 das IIS-Benutzerkonto,
IIS
um diese Snapshotdateien zu lesen. Der Zugriff auf den Snapshotordner wird dem IIS-Benutzerkonto
IIS
über einen UNC-Pfad
Pfad oder ein virtuelles FTP-Verzeichnis
FTP Verzeichnis ermöglicht. Die Steuerung des Zugriffs auf
den Snapshotordner erfolgt, indem dem Ordner Dateisystemberechtigungen zugewiesen werden.
Detaillierte Informationen zum Konfigurieren des Snapshotordners sind wiederum
iederum im Dokument
„Technologie-Studie“ zu finden.
5.4.3.3 Abonnieren von Veröffentlichungen
Microsoft SQL Server Compact 3.5-Abonnenten
3.5 Abonnenten können Veröffentlichungen von SQL Server 2005 und
höheren Versionen abonnieren. Ein SQL Server Compact 3.5-Abonnent
3.5 Abonnent ist immer ein Clientabonnent,
der über HTTP eine Verbindung mit dem Verleger herstellt.
Erstellen eines Abonnements
Bevor ein Abonnement erstellt werden kann, muss die Microsoft SQL Server-Replikation
Server Replikation konfiguriert,
die SQL Server-Veröffentlichung
Veröffentlichung erstellt und Microsoft
Microsoft Internetinformationsdienste konfiguriert sein.
Danach kann eines der folgenden Verfahren verwendet werden, um ein Abonnement für SQL Server
Compact 3.5 zu erstellen:
•
•
Aufrufen der AddSubscription-Methode.
AddSubscription
Erstellen des Abonnements in SQL Server Management Studio.
Aufrufen der AddSubscription-Methode
Methode
SQL Server Compact 3.5-Anwendungen
Anwendungen verwenden das Replication-Objekt,
Objekt, um programmgesteuert
programmgesteuer
ein Abonnement zu erstellen und dieses Abonnement in eine SQL Server Compact 3.5-Datenbank
3.5
auf
einem intelligenten Gerät von Microsoft herunterzuladen. Dies erfolgt, indem die Anwendung das
Replication-Objekt
Objekt erstellt, die geeigneten Eigenschaften des Replication-Objekts
Objekts festlegt und die
AddSubscription-Methode
Methode aufruft.
Datenaustausch / Kommunikation
Projekt
Mobile DMS-Datenerfassung
Datenerfassung
Autor
Datum
Version
Dokument
Philipp Buser
10.09.2009
1.0
Projektdokumentation
Seite
53(141)
SqlCeReplication repl = new SqlCeReplication();
SqlCeReplication
repl.InternetUrl = @"http://MOBILEDEV/Northwind/sqlcesa35.dll";
@"http://MOBILEDEV/Northwind/sqlcesa35.dll"
repl.InternetLogin = @"MOBILEDEV\Philipp
@"MOBILEDEV
Buser";
repl.InternetPassword = @"pass";
@"pass"
repl.Publisher = @"MOBILEDEV";
repl.PublisherDatabase = @"northwind";
@"northwind"
repl.PublisherSecurityMode = SecurityType.NTAuthentication;
SecurityType
repl.Publication = @"NorthwindPublication";
@"NorthwindPublication"
repl.Subscriber = @"NorthwindSubscription";
@"NorthwindSubscription"
repl.SubscriberConnectionString
ring = @"Data Source=Northwind.sdf;Max Database Size=128;Default
Lock Escalation =100;";
try
{
if (!System.IO.File.Exists("Northwind.sdf"
"Northwind.sdf"))
{
repl.AddSubscription(AddOption
AddOption.CreateDatabase);
}
}
catch (SqlCeException ex)
{
//Catch exception
}
Quellcode 6:: Merge Replication AddSubscription
Erstellen des Abonnements in SQL Server Management Studio
Der Assistent für neue Abonnements erstellt SQL Server Compact 3.5-Abonnements
3.5 Abonnements für SQL ServerMergereplikationsveröffentlichungen.
ntlichungen. Derselbe Assistent kann aber auch zum Verwalten und
Synchronisieren von Abonnements verwendet
verwende werden.
Für das Herstellen einer Verbindung mit SQL Server Compact 3.5-Datenbanken
3.5 Datenbanken auf einem Gerät und
das Verwalten dieser Datenbanken müssen die folgenden
f
nden Produkte installiert sein:
•
•
•
•
•
SQL Server Management Studio
SQL Server
SQL Server Compact 3.5
Microsoft ActiveSync 4.0 oder höher
Microsoft .NET Compact Framework
Das Verwenden des Objekt-Explorers
Explorers innerhalb von SQL Server Management Studio ist die
di
bevorzugte Methode für den Zugriff
Zugri auf Datenbankobjekte von SQL Server und SQL Server Compact
3.5. Wenn man den Ordner „Replikation
Replikation“ in Management Studio erweitert,, wird vom ObjektObjekt
Explorer bestimmt, ob ein Abonnement vorhanden ist. Wenn ein Abonnement vorhanden
vorhanden ist, enthält
der Knoten „Replikation“ untergeordnete Knoten für jedes Abonnement in der Datenbank. Der
Anzeigename für das Abonnement basiert auf dem Datenbanknamen und dem Wort "Subscription",
beispielsweise "AdventureWorks Subscription".
Der Assistent
sistent für neue Abonnements bietet eine Schritt-für-Schritt-Anweisung
Schritt
Anweisung für das Erstellen eines
anonymen Mergereplikationsabonnements von einer SQL Server Compact 3.5-Datenbank.
3.5 Datenbank. Auf der
letzten Seite des Assistenten wird automatisch eine Mergereplikationssynchronisierung
Mergereplikationssynchronisierung
durchgeführt, die während der Ausführung des Assistenten zur Verfügung gestellten Informationen
werden überprüft, und das Abonnement wird erstellt.
Datenaustausch / Kommunikation
Projekt
Mobile DMS-Datenerfassung
Datenerfassung
Autor
Datum
Version
Dokument
Philipp Buser
10.09.2009
1.0
Projektdokumentation
Seite
54(141)
Löschen und erneute
rneute Initialisierung eines Abonnements
In Anwendungen von Microsoft SQL Server
Serve Compact 3.5 kann das Replication-Objekt
Objekt mit der
DropSubscription-Methode
Methode verwendet werden, um ein anonymes Abonnement und optional die SQL
S
Server Compact 3.5-Datenbank
Datenbank vom intelligenten Gerät zu löschen. Die erneute Initialisierung eines
Abonnements kann über die ReInitializeSubscription-Methode
ReInitializeSubscription
erfolgen. Details dazu sind
sin wie immer
im Dokument „Technologie-Studie“
Studie“ zu finden.
5.4.4 Synchronisieren von Daten
Beim Synchronisieren eines SQL Server Compact 3.5-Abonnenten
3.5 Abonnenten mit SQL Server werden alle
Änderungen an den Daten aus der Veröffentlichungsdatenbank abgerufen. Beim erstmaligen
Synchronisieren eines SQL Server Compact 3.5-Abonnenten
3.5 Abonnenten können jedoch Daten direkt aus der
Veröffentlichungsdatenbank oder der Snapshotdatei abgerufen werden.
Es können entweder synchrone oder asynchrone Datensynchronisierungen ausgeführt werden. Bei
der synchronen Datensynchronisierung wartet die Anwendung auf das Ende der Synchronisierung
und dann wird der Vorgang fortgesetzt. Wenn man hingegen eine Anwendung schreibt, die die
asynchrone Datensynchronisierung verwenden soll, kann die Anwendung andere Informationen
Inf
weiter verarbeiten, während sie auf das Ende der Synchronisierung wartet.
Zeitpunkt der Synchronisierung von Daten
Daten werden synchronisiert, wenn eine Anwendung die Synchronisierung durch Aufrufen der
Synchronize-Methode des Replication-Objekts
Replication jekts anfordert. Die Synchronisierung kann auch
automatisch ausgeführt werden, falls es zu einem Problem mit einer bestimmten Synchronisierung
kommt. Es wird eine Nachricht über die automatische erneute Synchronisierung vom Verleger
gesendet, wenn eines derr folgenden Szenarien eintritt:
1. Auf dem Verleger liegt eine Schemaänderung vor.
2. Es wird ein Konfliktlöser verwendet, bei dem der Abonnent immer gewinnt, und die Daten
vom Abonnenten können nicht auf den Server angewendet werden.
3. Es kommt zu einem Problem mit der referenziellen Integrität, wenn die Daten vom Verleger
auf den Abonnenten angewendet werden.
4. Auf dem Verleger liegt ein Konflikt auf Spaltenebene vor. Tritt dieses Problem auf, fordert
der Server an, dass die gesamte Zeile vom Abonnenten erneut gesendet
gesendet wird.
5. Falls IIS während der Synchronisierung erneut gestartet wird.
Hinweis: Die automatische erneute Synchronisierung kann bis zu fünf Mal nacheinander
stattfinden. Wird die erneute Synchronisierung durch ein Problem mit der referenziellen Integrität
Integri
ausgelöst, finden nur zwei automatische Synchronisierungsvorgänge statt.
5.4.4.1 Synchrone Datensynchronisierung
Eine Anwendung verwendet das Replication-Objekt, um
m ein vorhandenes Microsoft SQL ServerAbonnement zu synchronisieren. Man kann auch ein in SQL Server
rver Management Studio erstelltes
Abonnement synchronisieren.
Verwenden des Replication-Objekts
Objekts zum Synchronisieren von Daten
In Microsoft Visual Studio ruft die Anwendung die Methoden Synchronize und Dispose für eine
einzelne Instanz des Replication--Objekts
ekts auf. In systemeigenen Anwendungen müssen nacheinander
die Methoden Initialize, Run und Terminate für eine einzelne Instanz des Replication-Objekts
Replication
aufgerufen werden.
Datenaustausch / Kommunikation
Projekt
Mobile DMS-Datenerfassung
Datenerfassung
Autor
Datum
Version
Dokument
Philipp Buser
10.09.2009
1.0
Projektdokumentation
Seite
55(141)
SqlCeReplication repl = new SqlCeReplication();
SqlCeReplication
repl.InternetUrl = @"http://MOBILEDEV/Northwind/sqlcesa35.dll";
@"http://MOBILE
repl.InternetLogin = @"MOBILEDEV\Philipp
@"MOBILEDEV
Buser";
repl.InternetPassword = @"pass";
@"pass"
repl.Publisher = @"MOBILEDEV";
repl.PublisherDatabase = @"northwind";
@"northwind"
repl.PublisherSecurityMode = SecurityType.NTAuthentication;
SecurityType
repl.Publication = @"NorthwindPublication";
@"NorthwindPublication"
repl.Subscriber = @"NorthwindSubscription";
@"NorthwindSubscription"
repl.SubscriberConnectionString = @"Data Source=Northwind.sdf;Max Database Size=128;Default
Lock Escalation =100;";
try
{
repl.Synchronize();
}
catch (SqlCeException ex)
{
//Catch exception
}
finally
{
repl.Dispose();
}
Quellcode 7:: Merge Replication Synchronize
Hinweis: SQL Server Compact 3.5-Abonnements
3.5 Abonnements müssen stets mit dem ursprünglichen Verleger
synchronisiert werden. Ein SQL Server Compact 3.5-Abonnement
Abonnement kann nicht direkt mit einem
anderen synchronisiert werden.
5.4.4.2 Asynchrone Datensynchronisierung
Bei der asynchronen Datensynchronisierung kann eine Anwendung in SQL Server Compact 3.5 die
Verarbeitung anderer Informationen fortsetzen, während sie
s auf das Ende der
Datensynchronisierung wartet.
Angenommen, eine Anwendung führt Datensynchronisierungen in regelmässigen Abständen aus und
sendet viele Daten über eine langsame Verbindung. Während der Datensynchronisierung reagiert die
Anwendung nicht auf Benutzereingaben. Der Benutzer hat möglicherweise den Eindruck, dass die
Anwendung nicht richtig funktioniert. Zur Verbesserung der Benutzerfreundlichkeit während der
Datensynchronisierung kann eine Statusanzeige auf dem intelligenten Gerät eingeblendet
eingeblende werden,
die den Status der Synchronisierung anzeigt. Bei der asynchronen Datensynchronisierung kann die
Datensynchronisierung initiiert und dann eintretende Synchronisierungsereignisse aufgefangen
werden. Diese Ereignisse können dem Benutzer dann von der Anwendung angezeigt werden.
Verwenden der Methoden der asynchronen Datensynchronisierung
Wenn eine SQL Server Compact 3.5-Anwendung
3.5 Anwendung mithilfe von Microsoft .NET Compact Framework
und einer der verwalteten Programmiersprachen entwickelt wird (Microsoft Visual
Visual Basic oder
Microsoft Visual C#), werden asynchrone Aufrufe wie alle anderen asynchronen Aufrufe in Microsoft
.NET Framework verarbeitet.
Verwenden der verwalteten API
Bei der asynchronen Datensynchronisierung werden drei Typen im System.Data.SqlServerCESystem.Data.SqlServ
Namespace verwendet:
Datenaustausch / Kommunikation
Projekt
Mobile DMS-Datenerfassung
Datenerfassung
Autor
Datum
Version
Dokument
Philipp Buser
10.09.2009
1.0
Projektdokumentation
•
•
•
Seite
56(141)
OnStartTableUpload. Dieses Ereignis tritt ein, wenn die einzelnen Tabellen im Abonnement
auf den Verleger per Upload übertragen werden.
OnStartTableDownload.. Dieses Ereignis tritt ein, wenn die einzelnen Tabellen vom Verleger
zurückgegeben werden.
OnSynchronization. Dieses Ereignis tritt ein, wenn die Synchronisierung startet oder Ihr Code
eine Synchronisierungsprüfung ausführt.
Es stehen auch die folgenden drei Methoden des Replication-Objekts
Objekts zur Verfügung:
•
•
•
BeginSynchronize. Diese
iese Methode beginnt mit dem Synchronisierungsvorgang mithilfe eines
IAsyncResult -Objekts.
EndSynchronize. Man ruft EndSynchronize auf, wenn der Server eine Nachricht über das
Synchronisierungsende zurückgibt.
CancelSynchronize. Durch Aufrufen der CancelSynchronize-Methode
Methode kann die
Synchronisierung jederzeit abgebrochen werden.
5.4.5 Erkennung und Lösung von Replikationskonflikten
Bei Synchronisierungen nach der Erstsynchronisierung treten möglicherweise Konflikte zwischen
Änderungen an Daten auf einem Abonnenten
Abonnenten und Änderungen auf einem anderen Abonnenten oder
auf dem Verleger auf. Wenn die Veröffentlichung erstellt wird, kann ein Konfliktlöser zur Beseitigung
solcher Konflikte zugewiesen werden.
Erkennen von Konflikten
Während der Synchronisierung erkennt der
d Merge-Agent,
Agent, der auf dem Verleger ausgeführt wird, alle
Datenkonflikte und bestimmt dann auf der Grundlage des der Veröffentlichung zugeordneten
Konfliktlösers, welche Daten angenommen und an andere Standorte weitergegeben werden.
Microsoft SQL Server Compact
ompact 3.5 unterstützt bei der Synchronisierung mit SQL Server 20052005 und
SQL Server 2008-Verlegern
Verlegern sowohl die Nachverfolgung auf ZeilenZeilen als auch auf Spaltenebene.
Hinweis: Die Synchronisierung mit SQL Server 2000 wird in SQL Server Compact 3.5 nicht
unterstützt.
Verwenden von Konfliktlösern
Nach dem Erkennen eines Konflikts startet der Merge-Agent
Merge Agent den für den Artikel ausgewählten
Konfliktlöser. Es kann sich dabei um den Standardkonfliktlöser, einen der anderen bereitgestellten
Konfliktlöser oder um einen
n benutzerdefinierten Konfliktlöser handeln.
SQL Server Compact 3.5-Abonnentenkonflikte
Abonnentenkonflikte werden immer auf dem Verleger erkannt, gelöst und
protokolliert. Konfliktlöser
onfliktlöser können die Quelle der Datenänderung oder den Prioritätswert des
Abonnenten zur Lösung von Konflikten verwenden. So folgt beispielsweise der Standardkonfliktlöser
der Regel, dass Änderungen auf dem Verleger Änderungen auf dem Abonnenten immer ausser Kraft
setzen. Es kann wahlweise einen anderen Konfliktlöser verwendet werden, der immer Änderungen
Änderung
auf dem Abonnenten jenen auf dem Verleger vorzieht.
Verwenden benutzerdefinierter Konfliktlöser
Bei benutzerdefinierten Konfliktlösern kann Geschäftslogik zur Replikation hinzugefügt werden. Ein
benutzerdefinierter Konfliktlöser ist eine in verwaltetem oder systemeigenem Code erstellte DLL. Um
verwendet zu werden, muss der benutzerdefinierte Konfliktlöser auf dem Verleger und dem Server
mit IIS mithilfe einer gespeicherten Prozedur registriert werden.
Datenaustausch / Kommunikation
Projekt
Mobile DMS-Datenerfassung
Datenerfassung
Autor
Datum
Version
Dokument
Philipp Buser
10.09.2009
1.0
Projektdokumentation
Seite
57(141)
5.5 Vergleich von Remote Data Access und Merge-Replication
on
Ob die Verwendung
wendung von Remotedatenzugriff oder Replikation in einer SQL Server CompactCompact
Anwendung sinnvoller ist, hängt vom Zweck, der Funktion, dem Umfang und den Anforderungen der
Anwendung für intelligente Geräte ab. Jede Konnektivitätsdatenlösung bietet
bietet verschiedene VorVor und
Nachteile.
Beispielsweise kann eine Anwendung von der Einfachheit des Remote-Datenzugriffs
Remote Datenzugriffs oder der
robusten Funktionalität der Merge-Replikation
Merge Replikation profitieren. In einigen Fällen kann es sogar sinnvoll
sein, die Features von RDA und Merge-Replikation
Merge Replikation miteinander zu verbinden und in einer Lösung
zusammenzufassen, um Datenkonflikte auf dem Server auszuschliessen.
Sowohl bei RDA als auch bei der Mergereplikation wird die Datensynchronisierung über einen
Webserver durchgeführt, wobei die
die Datenänderungen entweder unter Verwendung von HTTP oder
HTTPS gesendet werden. Die Datensynchronisierung über einen Webserver ist sehr flexibel, denn sie
kann zu jeder Zeit, zu der das Gerät eine Verbindung zum Internet herstellen kann, ob durch eine
Schnellverbindung
nellverbindung wie WiFi oder eine langsamere Mobilverbindung, durchgeführt werden.
Beide eignen sich gut für den drahtlosen Transport. Komprimierung wird verwendet, um den Umfang
der übertragenen Daten zu verringern. Man kann Verschlüsselung verwenden, um sensitive
Benutzerdaten während der Übertragung zu schützen.
Feature
Austausch von
nachverfolgten
Datenänderungen
RDA
Änderungen werden nur von Client
zu Server übertragen. Vollständige
Aktualisierung der zum Empfang von
Serveränderungen erforderlichen
e
Daten.
Nachverfolgung auf Zeilenebene: es
wird die gesamte Zeile übertragen.
Anzahl der Tabellen,
von denen Daten
weitergegeben werden
können
Typen von Tabellen,
die weitergegeben
werden können
Eine Tabelle pro RDA-Methode
RDA
Einschränkungen und
Indizes
Das Hinzufügen oder Entfernen einer
Tabelle auf dem Server wird nicht
automatisch auf dem Client
repliziert.
Einschränkungen für referenzielle
Integrität werden nicht repliziert,
Indizes werden optional repliziert.
Beim Client muss eine zusätzliche
Schemadefinition definiert werden.
Replikation
Replikation von Änderungen von und zu
Server und Client.
Nachverfolgung auf Spaltenebene:
reduziert die übertragene Datenmenge,
indem nur geänderte Spaltendaten
übertragen werden.
Nachverfolgung auf Zeilenebene: es wird
die gesamte Zeile übertragen.
Mehrere Tabellen - so viele, wie in der
Veröffentlichung definiert
Verschiedene Tabellentypen zum Steuern
des Datenflusses.
Das Hinzufügen oder Entfernen einer
Tabelle in der Veröffentlichung (Server)
wird automatisch ohne Neuinitialisierung
des Abonnements auf dem Client
repliziert.
Einschränkungen und Indizes für
referenzielle Integrität werden
automatisch vom Server repliziert.
Datenaustausch / Kommunikation
Projekt
Mobile DMS-Datenerfassung
Datenerfassung
Autor
Datum
Version
Dokument
Philipp Buser
10.09.2009
1.0
Projektdokumentation
Feature
Konflikte
RDA
Zu Konflikten gehören nur Zeilen, die
wegen eines Fehlers nicht
angewendet wurden.
wurden Von RDA wird
nicht erkannt, ob Daten von einem
anderen Benutzer geändert wurden.
Konflikte werden nicht verwaltet,
aber optional in eine Fehlertabelle
auf dem Client geschrieben.
Keine Konfliktlöser.
Schemaänderungen sind nicht
zulässig. Wenn
Wen das Schema geändert
wird, muss der Client die Tabelle
beim Client löschen und die Daten
wieder mit einem Pull-Vorgang
Pull
vom
Server abrufen. Abhängig von der
Schemaänderung kann ein PushPush
Vorgang fehlschlagen.
Manuelle
Identitätsbereichsbehandlung.
Spalten vom Typ BigInt und Int
werden unterstützt.
Daten- und Schemadefinitionen
treten beim Client auf, wenn Daten
mit einem Pull-Vorgang
Pull
vom Server
zum Client übertragen werden.
Es werden keine Tools unterstützt.
Schemaänderungen
Identitätsspalten
Daten-/
Schemadefinition
Tools
(Benutzeroberfläche)
Serverinvasivität
Keine Änderung an Datenbanken auf
dem Server.
Seite
58(141)
Replikation
Zu Konflikten gehören Datenänderungen
durch verschiedene
ne Benutzer sowie Zeilen,
die wegen eines Fehlers nicht angewendet
werden.
Lösung und Verwaltung von Konflikten auf
dem Server.
Integrierte und benutzerdefinierte
Konfliktlöser werden unterstützt.
Schemaänderungen wie Hinzufüge-/
Hinzufüge
Löschspalten, Hinzufüge
inzufüge-/LöschEinschränkungen oder das Ändern von
Spaltendefinitionen können repliziert
werden.
Manuelle und automatische
Identitätsbereichsbeha
Identitätsbereichsbehandlung.
Spalten
vom Typ BigInt und Int werden
unterstützt.
Tritt beim Server auf, wenn die
Veröffentlichung
ichung konfiguriert und
automatisch beim Client definiert wird,
wenn das Abonnement erstellt wird.
Umfangreiche Tools zum Erstellen und
Verwalten von Abonnements sowie
Überwachungstools zum Verwalten
Ver
mehrerer Abonnements, für die
Leistungsüberwachung und zum
Überwachen von Synchronisierungszeiten.
Der Serverdatenbank hinzugefügte
Tabellen und Spalten zum Verwalten der
Replikation.
Tabelle 12:: Vergleich von RDA und Merge-Replication
Merge
5.6 Webservices
5.6.1 ASP.NET Webservice
ASP.NET-Webdienste
Webdienste wurden zum Erstellen von Anwendungen entwickelt, die Nachrichten mit SOAP
(Simple Object Access Protocol) über HTTP senden und empfangen. Die Struktur der Nachrichten
kann mit einem XML-Schema
Schema definiert werden, und zur einfacheren Serialisierung der Nachrichten
an und von .NET-Framework-Objekten
Objekten wird ein Tool (xsd.exe) bereitgestellt. Mit der Technologie
können Metadaten zum Beschreiben
reiben von Webdiensten in WSDL (Web Services Description Language)
automatisch generiert werden, und ein zweites Tool (wsdl.exe) wird zum Generieren von Clients für
Webdienste aus WSDL bereitgestellt. Das Vorgehen sowie weitere Informationen zu ASP.NET
Webservices und ein direkter Vergleich von ASP.NET Webservices mit WCF-Services
WCF Services werden im
Dokument „Technologie-Studie““ beschrieben.
Datenaustausch / Kommunikation
Projekt
Mobile DMS-Datenerfassung
Datenerfassung
Autor
Datum
Version
Dokument
Philipp Buser
10.09.2009
1.0
Projektdokumentation
Seite
59(141)
Occasionally Connected Clients / Disconnected Service Agent
Obwohl Webservices eine flexible Lösung bieten, die von vielen Anwendungen und mit Servern von
verschiedenen Herstellern verwendet werden kann, fehlt eine nicht unwesentliche Sache:
Webservices bieten nicht sehr viel, was Ausfallsicherheit oder eingebaute WiederholungsWiederholungs
Mechanismen anbelangt. Für Anwendungen, die nicht ständig über eine zuverlässige BreitbandBreitband
Internetverbindung verfügen, sondern nur ab und zu mit einem oder verschiedenen Netzwerken
(USB-Kabel,
Kabel, WiFi, GSM, etc.) verbunden sind, muss viel Zeit und Anstrengung dazu aufgewendet
werden, um zu berücksichtigen was passiert, wenn bei einem Webservice-Aufruf
Webservice Aufruf kein Netzwerk
verfügbar ist oder das Netzwerk mitten in einem Webservice-Aufruf
Webservice
ausfällt.
Die Microsoft Patterns & Practices Group hat sich diesem Problem in der Mobile Client Software
Factory angenommen. In dieser Tool-Suite,
Tool Suite, die für Windows Mobile 5.0 und höher verwendet
verwen
werden kann, gibt es einen Application Block namens Disconnected Service Agent. Mit dem
Disconnected Service Agent können Webservice-Aufrufe
Webservice Aufrufe zwischengespeichert und dann automatisch
ausgeliefert
fert werden sobald ein Netzwerk vorhanden ist, und für den Fall dass der Aufruf fehlschlägt,
kann die Anzahl der Wiederholungen konfiguriert werden. Das Prinzip ist in der untenstehenden
Grafik dargestellt.
Abbildung 10: Prinzip
zip des Disconnected Service Agents
Vermutlich wäre dieser Application Block eine gute Sache, leider konnte ich den Disconnected
Service Agent trotz ausgiebigen Versuchen auf meinem System nicht zum Laufen bringen. Die
Probleme haben bereits bei der Installation
Installation der Mobile Client Software Factory begonnen, da sie
anscheinend bestimmte Versionen von zusätzlichen Komponenten wie Guidance Automation
Extensions (GAX) und Guidance Automation Toolkit (GAT) benötigt, die offenbar mit Visual Studio
2005, jedoch nicht
ht mehr mit Visual Studio 2008 funktionieren.
Datenaustausch / Kommunikation
Projekt
Mobile DMS-Datenerfassung
Datenerfassung
Autor
Datum
Version
Dokument
Philipp Buser
10.09.2009
1.0
Projektdokumentation
Seite
60(141)
5.6.2 WCF Service
WCF (Windows Communication Foundation) eignet sich zum Aktivieren von .NET FrameworkFramework
Anwendungen für den Austausch von Nachrichten mit anderen Softwareeinheiten. SOAP wird
standardmässig verwendet, die Nachrichten können jedoch ein beliebiges Format aufweisen und mit
jedem Transportprotokoll übermittelt werden. Die Struktur der Nachrichten kann mit einem XMLXML
Schema definiert werden, und es gibt verschiedene Optionen zur Serialisierung der Nachrichten an
und von .NET-Framework-Objekten.
Objekten. WCF kann automatisch Metadaten zum Beschreiben von
Anwendungen generieren, die mit der Technologie in WSDL erstellt wurden, ausserdem wird ein Tool
zum Generieren von Clients für diese Anwendungen aus WSDL bereitgestellt.
bereitgestell
Kompatibilitätsmodusoption, mit der die Programmierung und
WCF besitzt auch eine ASP.NET-Kompatibilitätsmodusoption,
Konfiguration von WCF-Anwendungen
Anwendungen entsprechend den ASP.NET-Webdiensten
ASP.NET Webdiensten und das Imitieren
von deren Verhalten ermöglicht wird.
Der folgende (englische) Abschnitt stammt
s
aus dem Artikel „Mobile WCF: Write an IM App with the
.NET Compact Framework“ von Andrew Arnott vom MSDN Magazine und beschreibt das Vorgehen,
wie ein WCF-Service
Service für mobile Geräte erstellt werden kann.
Calling WCF Services
The .NET Compact Framework
k 3.5 does not ship with support for the WCF Service Model, which
would support hosting and calling services without all the plumbing code for sending and receiving
messages. But with the proper helper classes, calling WebMethods on ASP.NET Web services, WCF
W
services, and other WSDL-compliant
compliant services using Compact WCF can be just as easy as calling a
method.
The .NET Compact Framework 3.5 PowerToys ship with a tool, NetCFSvcUtil.exe, that generates
these service proxy classes for you. Since NetCFSvcUtil.exe
NetCFSvcUtil.exe does not ship with Visual Studio 2008,
you need to download the Power Toys for .NET Compact Framework 3.5.
Because the .NET Compact Framework 3.5 ships with a subset of the bindings that you'll find with
WCF on the desktop, a service must expose an endpoint
endpoint that uses bindings supported by the .NET
Compact Framework. You can also write your own bindings using Compact WCF, but that is beyond
the scope of this article.
Now let's construct a .NET Compact Framework-compatible
Framework compatible WCF service on the desktop and write
wri
an application that calls into that service using a proxy class generated by NetCFSvcUtil.exe. For
the service application, create a new WCF Service Web site in Visual Studio 2008, verifying that
.NET Framework 3.5 is selected in the upper-right-hand
upper
corner
rner of the New Web Site dialog. For
brevity's sake, go ahead and accept the WCF service exactly as the Visual Studio 2008 template
gives it to you. That gives you automatically created GetData and GetDataUsingDataContract
methods.
Since the .NET Compact Framework
ramework 3.5 does not support wsHttpBinding, you need to either
change the default endpoint Visual Studio created to basicHttpBinding or add a new endpoint of
that type. Since WCF makes it so easy to expose multiple endpoints, and since wsHttpBinding adds
security for those apps that will support it, let's leave it there and add a new endpoint that uses
basicHttpBinding.
Open your WCF service's web.config file. Find the <endpoint> tags and add a new one with an
address of basic and with the basicHttppBinding
basicHttppBindin binding:
<!-- Service Endpoints -->
<endpoint address="" binding="wsHttpBinding" contract="IService"/>
<endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange"/>
<endpoint address="basic" binding="basicHttpBinding" contract="IService"/>
contract="IServic
Check your service by right-clicking
clicking your Web project's Service.svc project item in Solution
Explorer and clicking View in Browser.
Datenaustausch / Kommunikation
Projekt
Mobile DMS-Datenerfassung
Datenerfassung
Autor
Datum
Version
Dokument
Philipp Buser
10.09.2009
1.0
Projektdokumentation
Seite
61(141)
Note that with BasicHttpBinding comes a few limitations on what you can do with your service. For
instance, duplex service
vice contracts, transactions, and callbacks are not supported. If you try to use
a BasicHttpBinding endpoint to expose a service that uses any of these features (or a few others),
you will get a runtime error from WCF.
One additional limitation remains in your service beyond just using BasicHttpBinding: custom
headers are not supported by NetCFSvcUtil.exe. If your service requires custom headers to be
included in your messages, you will need to either modify the code emitted by the tool or write
your own proxy
oxy class to add support for these custom headers.
Now add a.NET Compact Framework application to your solution. Create a new project using the
Smart Device Project template and name it NetCFClient. Add the Compact WCF assemblies to your
project references:: System.ServiceModel.dll and System.Runtime.Serialization.dll. Next, add a
single button onto your Form1.cs design surface and set its caption to "Call Service". Double-click
Double
it
to create an event handler. Now you just need a proxy class to invoke the service.
service.
Creating a Proxy Class
Run the NetCFSvcUtil.exe tool against the service to generate the proxy class to include in the
device project. You'll want the source files generated to go into the device application's source
directory, so run the tool from there. The tool itself (once installed) should be found in
%PROGRAMFILES%\Microsoft
Microsoft .NET\SDK\CompactFramework\v3.5\bin,
.NET
bin, although if you're running
on a 64-bit
bit machine, check the Program Files (x86) directory.
C:\demos\MsdnCFServiceSample\NetCFClient>"
NetCFClient>"\Program Files (x86)\Microsoft
Microsoft .NET\SDK\CompactFrame
.NET
work\v3.5\bin\NetCFSvcUtil.exe"
NetCFSvcUtil.exe"
http://localhost:53222/Service/Service.svc?wsdl
Microsoft (R) .NET Compact Framework Service Model Metadata Tool
[Microsoft (R) Windows (R) Communication Foundation, Version 3.5.0.0]
3
Copyright (c) Microsoft Corporation. All rights reserved.
Attempting to download metadata from 'http://localhost:53222/Service/Service.svc?wsdl' using W
S-Metadata Exchange or DISCO.
Generating files...
C:\demos\MsdnCFServiceSample\NetCFClient
NetCFClient\Service.cs
C:\demos\MsdnCFServiceSample\NetCFClient
NetCFClient\CFClientBase.cs
C:\demos\MsdnCFServiceSample\NetCFClient>
NetCFClient>
To run the tool, you only need to pass in the URL to the service metadata (the service must be
running). You can add /language:vb if you want the tool
tool to emit the proxy class for a Visual Basic®
project. Note that the URL you pass to the tool on the command line will be the URL that the device
uses to contact your service, so http://localhost may work to generate your proxy, but your device
app will try
ry to talk to itself rather than contact your desktop PC.
Also note that this tool did not generate an output.config file the way the desktop svcutil.exe tool
would. The .NET Compact Framework 3.5 does not support configuring WCF through configuration
files,
s, so all the endpoint information for a service needs to be in code. The ASP.NET development
server will not respond to device requests unless the device or emulator is cradled. What I have
done here is use localhost to generate the proxy, then modify the generated Service.cs file by
finding the EndpointAddress field defined in the ServiceClient class and changing the URL to use my
hostname (the service address) rather than localhost. The code should look something like this:
public static System.ServiceModel.EndpointAddress
odel.EndpointAddress EndpointAddress =
new System.ServiceModel.EndpointAddress(
"http://mycomputername:53222/Service/Service.svc/basic");
Also, notice the /basic suffix to the URL. This is how the client indicates to the service which of the
three offered
ered endpoints it wants to use. When you have the generated proxy class source files,
simply add them to your device project in Visual Studio.
Datenaustausch / Kommunikation
Projekt
Mobile DMS-Datenerfassung
Datenerfassung
Autor
Datum
Version
Dokument
Philipp Buser
10.09.2009
1.0
Projektdokumentation
Seite
62(141)
Using the WCF Service
Earlier you created an event handler for the single Call Service button. Let's implement that now.
The code should look just like calling a WCF service from a WCF desktop application:
void callServiceButton_Click(object sender, EventArgs e) {
ServiceClient client = new ServiceClient();
MessageBox.Show(client.GetData(5));
}
Deploy and
d run your device app. Click the Call Service button. After a moment you should see a
message box pop up with "You entered: 5".
If you get an error that your host could not be reached, try cradling your device. If your device is
an emulator, you can cradle
e the emulator via the Device Emulator Manager in Visual Studio.
The proxy class generated by the tool translates method calls into WCF messages and sends them
using the .NET Compact Framework messaging layer. Response messages are then deserialized
and passed
ssed back to your app via the method's return value.
The code generated by the NetCFSvcUtil tool will run equally well under the full version of WCF, in
which case the proxy classes derive from a WCF class called ClientBase<T>. Since the .NET
Compact Framework
ework 3.5 does not ship with ClientBase<T>, the NetCFSvcUtil tool emits code for a
CFClientBase<T> that must be included with your application. Although this class performs a
similar function to the ClientBase<T> class found in WCF on the desktop, it is not
no exactly the same
and may change in future versions.
5.7 Synchronization Services (für Geräte)
Synchronization Services for ADO.NET 1.0 wurde ursprünglich mit Microsoft Visual Studio 2008
veröffentlicht. Diese Version von Sync Services ermöglicht eine Synchronisierung
Synchronisierung zwischen einer
Serverdatenbank und einer SQL Server Compact 3.5 SP1-Datenbank
SP1 Datenbank auf dem Desktop. Sync Services
for ADO.NET ermöglicht jetzt neu auch die Synchronisierung zwischen einer Serverdatenbank und
einer SQL Server Compact 3.5 SP1-Datenbank
SP1
auf einem Gerät.
Das Konfigurieren einer Synchronisierung für ein Gerät ähnelt der Konfiguration einer n-Ebenenn
Synchronisierung für die Desktopsynchronisierung. Die Architektur wird in der folgenden Abbildung
dargestellt.
Abbildung 11:: Architektur der Synchronization Services
Datenaustausch / Kommunikation
Projekt
Mobile DMS-Datenerfassung
Datenerfassung
Autor
Datum
Version
Dokument
Philipp Buser
10.09.2009
1.0
Projektdokumentation
Seite
63(141)
Bei einer n-Ebenen-Synchronisierung
Synchronisierung für Geräte werden Synchronisierungskomponenten
folgendermassen verwendet:
•
•
•
Der Serversynchronisierungsanbieter befindet sich auf dem Server oder einer anderen
Ebene. Der Anbieter ist in Microsoft.Synchronization.Data.Server.dll enthalten. Es ist die in
SQL Server Compact 3.5 SP1 oder Visual Studio 2008 (ursprüngliche Version oder SP1)
enthaltene DLL-Datei
Datei zu verwenden.
Der Clientsynchronisierungsanbieter und der Synchronisierungs-Agent
Synch
Agent befinden sich beide
auf dem Gerät. Der Agent ist in Microsoft.Synchronization.Data.dll und der Anbieter in
Microsoft.Synchronization.Data.SqlServerCe.dll enthalten. Es sind die Geräteversionen der
DLL-Dateien
Dateien zu verwenden.
Die Kommunikation
tion zwischen dem Serversynchronisierungsanbieter und dem
Synchronisierungs-Agent
Agent erfolgt durch das ServerSyncProviderProxy-Objekt
Objekt und einen Dienst.
Sync Services gibt nicht vor, welcher Art der zu verwendende Dienst sein muss.
Anwendungen verwenden jedoch normalerweise einen Webdienst oder einen WCF-Dienst.
WCF
Für die Änderungsnachverfolgung
gung gibt es die zwei Varianten „benutzerdefinierte
Änderungsnachverfolgung“
gsnachverfolgung“ und SQLSQL Änderungsnachverfolgung.
Benutzerdefinierte Änderungsnachverfolgung
Im diesem Modus wird die Änderungsnachverfolgung mithilfe eines Satzes von Spalten und Triggern
durchgeführt, die den Basistabellen hinzugefügt werden, sowie zusätzlicher
zusätzlicher Tabellen zum
Nachverfolgen von Löschvorgängen. Diese Art der Nachverfolgung eignet sich für alle Datenbanken,
abgesehen von SQL Server 2008--Datenbanken.
Datenbanken. Es bestehen jedoch die folgenden Nachteile:
•
•
•
•
In der Serverdatenbank sind Schemaänderungen erforderlich.
erforderlich. Dies kann sich auf andere
Anwendungen auswirken oder ist unter Umständen nicht möglich.
Für jede an einer Zeile vorgenommene Änderung werden Trigger ausgelöst. Dadurch wird die
Leistung beeinträchtigt.
Die Logik für die Verwaltung der richtigen Zeilenversionen und Löschungen kann komplex
sein.
Wenn in der Serverdatenbank lang ausgeführte Transaktionen vorliegen, werden
Datenänderungen bei der Synchronisierung möglicherweise ausgelassen, sofern die
Transaktionen nicht ordnungsgemäss behandelt werden.
werden. Dadurch werden die Daten
inkonsistent.
SQL-Änderungsnachverfolgung
Die SQL Server-Änderungsnachverfolgung
Änderungsnachverfolgung behebt diese Probleme und bietet eine einfache
Möglichkeit, Änderungen nachzuverfolgen. Wenn die Änderungsnachverfolgung für eine Tabelle
aktiviert
ert ist, verwaltet das SQL Server Database Engine-Datenbankmodul
Engine Datenbankmodul Informationen über die
Änderungen, die an den Tabellen vorgenommen werden. Anwendungen können die Funktionen für
die Änderungsnachverfolgung dann verwenden, um zu ermitteln, welche Zeilen geändert
geä
wurden,
und Informationen über die Änderungen abzurufen.
Der Modus SQL-Änderungsnachverfolgung
Änderungsnachverfolgung funktioniert nur mit SQL-Server
SQL Server 2008. Die Hauptvorteile
der SQL Server-Änderungsnachverfolgung
Änderungsnachverfolgung sind die folgenden:
Datenaustausch / Kommunikation
Projekt
Mobile DMS-Datenerfassung
Datenerfassung
Autor
Datum
Version
Dokument
Philipp Buser
10.09.2009
1.0
Projektdokumentation
•
•
•
•
•
Seite
64(141)
Für Offlinesynchronisierungsszenarien,
Offlinesynchronisierungsszenarien, in denen Sync Services verwendet wird, müssen keine
Trigger, Timestampspalten, andere zusätzliche Spalten oder zusätzliche Tabellen erstellt
werden.
Änderungen werden zum Zeitpunkt des Commits nachverfolgt und nicht beim Auftreten von
DML-Vorgängen.
tionen geben inkrementelle Änderungen an Tabellen und Versionsinformationen zurück.
Funktionen
Diese Funktionen stellen zuverlässige und einfach zu verwendende Ergebnisse bereit, selbst
dann, wenn überlappende und nicht durch Commit bestätigte Transaktionen vorhanden sind.
Die Leistungseinbussen sind minimal.
Änderungsnachverfolgungsdaten können automatisch bereinigt werden.
Wichtig: Synchronization Services und andere Synchronisierungstechnologien können nicht für die
gleiche Tabelle in der Clientdatenbank verwendet
verwende werden.
5.7.1 Gelegentlich verbundene Anwendungen (Geräte)
Eine gelegentlich verbundene Anwendung verwendet Daten einer Remotedatenbank, wenn sie
Zugriff auf diese Datenbank hat. Andernfalls werden die in einem lokalen Cache gespeicherten Daten
verwendet. Wenn eine Verbindung verfügbar ist, synchronisieren gelegentlich verbundene
Anwendungen die im lokalen Cache gespeicherten Daten mit den Daten in der Remotedatenbank.
Daher können Benutzer von gelegentlich verbundenen Anwendungen für intelligente Geräte ihre
Anwendung
nwendung weiter verwenden, auch wenn keine Netzwerkverbindung verfügbar ist.
Da mobile Geräte sich häufig aus dem Netzwerkbereich bewegen, bieten gelegentlich verbundene
Anwendungen einen wichtigen Vorteil.
Anwendungen, die bereits das ADO.NET-Programmiermodell
ADO.NET
modell verwenden, können geändert werden,
sodass sie gelegentlich verbundene intelligente Geräte unterstützen. Mithilfe der in Visual Studio
2008 Service Pack 1 enthaltenen Tools kann das Synchronization Services-Framework
Services Framework genutzt
werden. Nach den Änderungen
en können Aussendienstmitarbeiter entweder über DataSet-Objekte
oder System.Data.SqlServerCe.SqlCeResultSet-Objekte
System.Data.SqlServerCe.SqlCeResultSet Objekte lokal mit dem mobilen Gerät auf Produkte und
Auftragsdaten zugreifen.
ugreifen. Die Anwendung synchronisiert die lokale SQL Server Compact-Datenbank
Compact
mit der Remotedatenbank, sobald eine Netzwerkverbindung verfügbar ist.
Um eine Anwendung für gelegentlich verbundene intelligente Geräte zu erstellen, verwendet man
den gleichen Synchronisierungs-Designer
Designer wie für die Entwicklung synchronisierter
Desktopanwendungen.
Entwickeln für Intelligente Geräte anstelle des Desktops
Beim Entwickeln gelegentlich verbundener Anwendungen für intelligente Geräte gelten die
folgenden Einschränkungen.
•
•
•
Microsoft Synchronization Services für ADO.NET (Geräte) Version 1.0 unterstützt Geräte, auf
denen Windows CE 5.0, Windows Mobile 5.0 und Windows Mobile 6 ausgeführt werden.
Geräte mit Windows Mobile 2003, Windows CE 4.2 und älteren Betriebssystem werden nicht
unterstützt.
Microsoft Synchronization Services für ADO.NET v1 SP1 (Geräte) muss manuell
heruntergeladen und installiert werden. Im Gegensatz zur Desktopversion von Microsoft
Synchronization
ronization Services für ADO.NET wird die Geräteversion nicht mit Visual Studio 2008
oder SQL Server Compact 3.5 installiert.
Visual Studio 2008 Service Pack 1 muss installiert sein.
Datenaustausch / Kommunikation
Projekt
Mobile DMS-Datenerfassung
Datenerfassung
Autor
Datum
Version
Dokument
Philipp Buser
10.09.2009
1.0
Projektdokumentation
•
•
•
•
Seite
65(141)
Synchronization Services für ADO.NET (Geräte) Version 1.0 funktioniert mit
mi
Geräteanwendungen, die für .NET Compact Framework Version 2.0 oder höher geeignet
sind. Systemeigene Anwendungen werden nicht unterstützt.
Synchronization Services für ADO.NET (Geräte) unterstützt keine 2-Ebenen
2 Ebenen-Synchronisierung.
Deshalb können Geräteanwendungen,
Geräteanwendungen, die Synchronization Services verwenden, nicht direkt
mit einer Remotedatenbank synchronisiert werden. Das Gerät muss stattdessen eine nn
schichtige Architektur verwenden und über einen WCF- oder Webdienst synchronisiert
werden.
In Projekten für intelligente
telligente Geräte kann der Synchronisierungs-Designer
Synchronisierungs Designer nicht im Assistenten
zum Konfigurieren von Datenquellen gestartet werden.
Wenn man eine synchronisierungsfähige Geräteanwendung über die Visual Studio IDE
bereitstellt, werden CAB-Dateien
CAB
von Synchronization
ation Services automatisch auf dem
Zielgerät oder Emulator bereitgestellt und installiert. CAB-Dateien
CAB Dateien von Synchronization
Services müssen nicht manuell auf dem Gerät installiert werden.
Erstellen eines WCF-Diensts
Im Unterschied zu Desktopanwendungen kann
kan der lokale SQL Server Compact-Datenbankcache
Datenbankcache bei
Projekten für intelligente Geräte nicht direkt mit der SQL Server-Remotedatenbank
Server Remotedatenbank synchronisiert
werden. Es muss eine WCF-Dienstbibliothek
Dienstbibliothek erstellt werden, die als mittlere Ebene zwischen den
beiden Datenbanken
anken dient. Die Geräteanwendung verwendet vom WCF-Dienst
WCF Dienst verfügbar gemachte
Dienste für die Synchronisierung.
Hinzufügen eines Cache für lokale Datenbanken
Im Unterschied zu Desktopanwendungen ist die Vorlage „Cache für lokale Datenbanken“ im
Dialogfeld „Neues Element hinzufügen“ bei einem Projekt für intelligente Geräte nicht verfügbar.
Stattdessen muss dem WCF-Projekt
Projekt der mittleren Ebene oder dem Webdienstprojekt ein „Cache für
lokale Datenbanken“ hinzugefügt werden.
Nach der Konfiguration der Synchronisierung
Synchronisierung werden dem Clientprojekt die folgenden Elemente
hinzugefügt (am Beispiel der Northwind-Datenbank):
Northwind
Element
Northwind.sdf
NorthwindCache.Client.sync
NorthwindCache.Client.Designer.cs (oder .vb)
NorthwindDataSet.xsd
References\Microsoft.Synchronization.Data
Microsoft.Synchronization.Data
References\Microsoft.Synchronization.Data.SqlServerCe
Microsoft.Synchronization.Data.SqlServerCe
Beschreibung
Eine lokale Datenbankdatei, die von SQL Server
zwischengespeicherte Daten enthält.
Eine XML-Datei,
Datei, die Informationen zur
Synchronisierungskonfiguration enthält. Ein
Doppelklick auf diese Datei, öffnet das Dialogfeld
„Datensynchronisierung konfigurieren“.
Eine Codedatei, die Definitionen
Definitione für
Clientsynchronisierungsanbieter und den
Synchronisierungs-Agenten
Agenten enthält. Enthält auch
Synchronisierungstabellen für die lokale
Datenbank.
Das vom Assistenten zum Konfigurieren von
Datenquellen generierte typisierte Dataset.
Dieses
ieses Dataset enthält eine Customers-Tabelle,
Customers
die mit in der lokalen Datenbank gespeicherten
Daten gefüllt wird.
Erforderliche Verweise auf Microsoft
Synchronization
onization Services für ADO.NET.
Tabelle 13: Dem Clientprojekt hinzugefügte Elemente nach der Synchronisierungskonfiguration
Datenaustausch / Kommunikation
Projekt
Mobile DMS-Datenerfassung
Datenerfassung
Autor
Datum
Version
Dokument
Philipp Buser
10.09.2009
1.0
Projektdokumentation
Seite
66(141)
Dem Serverprojekt werden die folgenden Elemente hinzugefügt:
Element
NorthwindCache.sync
NorthwindCache.Designer.cs (oder .vb)
NorthwindCache.SyncContract.cs (oder .vb)
SQLScripts-Ordner
SQLUndoScripts-Ordner
References\Microsoft.Synchronization.Data
Microsoft.Synchronization.Data
References\Microsoft.Synchronization.Data.Ser
Microsoft.Synchronization.Data.Server
Beschreibung
Eine XML-Datei,
Datei, die Informationen zur
Synchronisierungskonfiguration enthält. Ein
Doppelklick auf diese Datei, öffnet das Dialogfeld
„Datensynchronisierung
Datensynchronisierung konfigurieren“.
konfigurieren“
Enthält Definitionen für den Synchronisierungsanbieter
Synchronisi
des Servers und den Synchronisierungsadapter für die
Serverdatenbank.
Eine Codedatei, die die WCF-Vertragsdefinition
Vertragsdefinition und
deren Implementierung enthält.
Ein Ordner mit Skripts. Mit den Skripts in diesem
Ordner werden Datenbankänderungen auf dem Server
nachverfolgt. Einige der Skripts in diesem Ordner
erstellen die Nachverfolgungsspalten und die Tabelle
gelöschter Elemente. Andere Skripts in diesem Ordner
erstellen Trigger, die Änderungen
n auf dem Server
nachverfolgen.
Mit den Skripts in diesem Ordner werden die
Nachverfolgungsspalten, die Elementtabelle und die
Trigger gelöscht, die zum Nachverfolgen von und
Reagieren auf Änderungen auf dem Server verwendet
werden. Diese Skripts können verwendet werden, um
vom Dialogfeld „Datensynchronisierung
Datensynchronisierung konfigurieren“
an der Datenbank vorgenommene Änderungen
rückgängig zu machen.
Erforderliche Verweise auf Microsoft Synchronization
Services für ADO.NET.
Tabelle 14:: Dem Serverprojekt hinzugefügte Elemente nach der Synchronisierungskonfiguration
Hinweis: Die SQL-Skripts
Skripts werden nur erstellt, wenn Änderungen
Änderungen auf dem Server erforderlich sind.
Wenn der Server bereits über eine Tabelle gelöschter Elemente und Nachverfolgungsspalten verfügt,
werden keine Skripts erstellt.
Die folgende Tabelle enthält eine Liste der erforderlichen Elemente der Remotedatenbank
Remotedatenba sowie
Erklärungen zu den einzelnen Elementen:
Ergänzungen für jede synchronisierte
Tabelle der Remotedatenbank
Spalte LastEditDate
Spalte CreationDate
Erklärung
Diese Spalte muss in jeder Tabelle, die synchronisiert wird, einen
DateTime- oder TimeStamp-Wert
Wert enthalten. Sie
S wird mit der Spalte
LastEditDate auf dem Client verglichen, um Datensätze zu
ermitteln, die seit dem letzten Synchronisierungsaufruf auf dem
Server geändert wurden.
Diese Spalte muss in jeder Tabelle, die synchronisiert wird, einen
DateTime- oder TimeStamp-Wert
Wert enthalten. Sie wird mit der Spalte
CreationDate auf dem Client verglichen, um Datensätze zu
ermitteln, die seit dem letzten Synchronisierungsaufruf auf dem
Server hinzugefügt wurden.
Datenaustausch / Kommunikation
Projekt
Mobile DMS-Datenerfassung
Datenerfassung
Autor
Datum
Version
Dokument
Philipp Buser
10.09.2009
1.0
Projektdokumentation
Ergänzungen für jede synchronisierte
Tabelle der Remotedatenbank
Tabelle gelöschter Elemente
(Tabellenname_Deleted)
DeletionTrigger
(Tabellenname_DeletionTrigger)
InsertTrigger
(Tabellenname_InsertTrigger)
UpdateTrigger
(Tabellenname_UpdateTrigger)
Seite
67(141)
Erklärung
Elemente werden in diese Tabelle verschoben, wenn sie aus der
Tabelle auf dem Datenbankserver gelöscht werden. Dies geschieht,
um seit dem letzten Synchronisierungsaufruf vom Server gelöschte
Datensätze zu ermitteln. Jede Tabelle, die synchronisiert
synchronisie wird,
benötigt eine Tabelle gelöschter Elemente, um aus der
Remotetabelle gelöschte Datensätze zu verfolgen.
Dieser Trigger wird immer dann ausgeführt, wenn ein Datensatz
aus der Serverdatenbanktabelle gelöscht
öscht wird. Gelöschte
Datensätze werden in die Tabelle gelöschter Elemente verschoben.
Sie werden deshalb in die Tabelle gelöschter Elemente verschoben,
da Datensätze in der Clientdatenbank, die nicht in der
Serverdatenbank enthalten sind, sonst als neue Datensätze
D
behandelt und wieder auf dem Server hinzugefügt würden. Die
Synchronisierungsdienste stellen anhand der Tabelle gelöschter
Elemente fest, dass ein Datensatz aus der Clientdatenbank gelöscht
werden muss und nicht wieder der Serverdatenbank hinzugefügt
hinzuge
werden soll.
Dieser Trigger füllt die Spalte CreationDate mit dem aktuellen
Datum und der aktuellen Uhrzeit auf, wenn neue Datensätze
hinzugefügt werden.
Dieser Trigger
igger füllt die Spalte LastEditDate mit dem aktuellen
Datum und der aktuellen Uhrzeit auf, wenn vorhandene
Datensätze geändert werden.
Tabelle 15:: Erforderlichen Elemente in der Remotedatenbank von Sync Services
Starten des Synchronisierungsprozesses
ronisierungsprozesses in einer Anwendung
Nach der Angabe der erforderlichen Informationen im Dialogfeld „Datensynchronisierung
Datensynchronisierung
konfigurieren“ muss der Anwendung Code zum Starten der Synchronisierung
Synchronisierung hinzugefügt werden.
// Call SyncAgent.Synchronize() to initiate
i
the synchronization process.
// Synchronization only updates the local database, not your project's data source.
LocalDataCacheSyncAgent
SyncAgent syncAgent = new LocalDataCacheSyncAgent();
Microsoft.Synchronization.Data.SyncStatistics syncStats;
syncStats
syncStats =syncAgent.Synchronize();
syncAgent.Synchronize();
// Add code to refill your application's data source
// with the updated data from the local database.
Quellcode 8:: Synchronization Services Synchronize
5.8 Vergleich der Technologien
5.8.1 Applikationslogik
Mit Direct Access liegt die ganze Logik in der Clientanwendung. Dies ist beim RemoteRemote
Datenbankzugriff ebenfalls der Fall, denn es steuert nicht der Server sondern der Client, welche
Daten vom Server übertragen werden, beispielsweise die Datendefinition (einschliesslich
(einsch
Zeilenfilterung) und die Schemadefinition (einschliesslich Spaltenfilterung).
Eine Mergereplikation hingegen wird vorbereitet, indem eine Publikation auf dem Server erstellt
wird. Die Daten und das Schema, die auf den Abonnenten repliziert werden
werden sollen, werden auf dem
Server bei Erstellung der Publikation angegeben. Das Schema wird bei erstmaliger Erstellung des
Abonnements automatisch auf dem Client definiert. Durch die Publikation werden die Tabellen
(Artikel) definiert, die auf den Abonnenten zu replizieren sind, einschliesslich der Zeilenfilterung
Datenaustausch / Kommunikation
Projekt
Mobile DMS-Datenerfassung
Datenerfassung
Autor
Datum
Version
Dokument
Philipp Buser
10.09.2009
1.0
Projektdokumentation
Seite
68(141)
(Beschränkung des Datenflusses mittels einer WHERE-Klausel)
WHERE Klausel) und der Spaltenfilterung
(Beschränkung der Spalten in einer zu replizierenden Tabelle). Eine Publikation kann eine oder
mehrere Tabellen enthalten.
nthalten. Die gesamte Publikationsdefinition, einschliesslich der Daten und des
Schemas der replizierten Tabellen, wird in der SQL Server Compact-Datenbank
Compact Datenbank nach einer
Synchronisierungsmethode erstellt.
Im Gegensatz zur Replikation, bei der mehrere Tabellen in einer einzelnen Synchronisierung
enthalten sein können, wird beim Remote-Datenzugriff
Remote Datenzugriff nur jeweils eine Tabelle pro RDA-PullRDA
Vorgang übertragen.
Die Verwendung von Webservices impliziert, dass nebst der Clientanwendung, welche die
Webservices aufruft, auch die Serverkomponente (der Webservice) programmiert werden muss. Die
Applikationslogik ist demnach zweigeteilt. Wie beim Direct Access muss die komplette
Applikationslogik vom Entwickler geschrieben werden. ASP.NET Webservices und WCF-Services
WCF
unterscheiden
eiden sich bezüglich Applikationslogik nicht wesentlich, ausser dass mit einem WCF-Dienst
WCF
keine direkter Austausch von DataSets zwischen Service und .NET Compact Framework-Anwendung
Framework
möglich ist (da sowohl der System.ComponentModel-Namespace
System.ComponentModel
als auch der System.ServiceModel
stem.ServiceModelNamespace im .NET Compact Framework nur reduziert vorhanden sind).
Bei den Synchronization Services (zumindest in der Architektur, die für mobile Geräte verwendet
werden kann) ist die Applikationslogik ebenfalls verteilt auf den Client und einen Dienst. Die
Synchronization Services-API
API bietet zwar viele Klassen, die für die Synchronisierung verwendet
werden können, deren Anwendung und Zusammenspiel ist jedoch aus meiner Sicht nicht gerade
trivial, zumal es bei der Version für Geräte noch verschiedene Einschränkungen gibt.
5.8.2 Performance-Messungen
Messungen und -Vergleich
Die Performance-Messungen
Messungen habe ich mit einer kleinen Tabelle mit 5 Spalten und 10000 Datensätzen
durchgeführt. Mit den verschiedenen Technologien werden nebst der Initialverbindung jeweils
je
1,
100, 1000 oder 10000 Datensätze geladen, repliziert oder synchronisiert. Danach werden jeweils 1,
100 oder 1000 Datensätze aktualisiert, indem das Datumsfeld mit der aktuellen Zeit und Datum
versehen wird, und es wieder mit der Remotedatenbank abgeglichen.
abgeglichen. Für jede einzelne Operationen
wird die benötigte Zeit gemessen und protokolliert. Jede Messung wird sowohl über eine ActiveSyncActiveSync
Verbindung (Gerät ist via USB-Kabel
Kabel mit dem PC verbunden) wie auch über eine WLAN-Verbindung
WLAN
10 mal durchgeführt. Die errechneten Durchschnittswerte sind in der untenstehenden Tabelle
ersichtlich. Allerdings lassen sich die Messungen aufgrund der grossen Unterschiede der
verschiedenen Technologien nicht immer direkt miteinander vergleichen, wie aus den folgenden
Erklärungen klar werden sollte.
Bei Direct Access wird das Laden der Datensätze mit einem SQL-Statement
SQL Statement in der Form von SELECT
TOP 1000 FROM performancetest durchgeführt. Beim Aktualisieren hingegen wird für jeden
Datensatz ein separates SQL-Statement
Statement verwendet (z.B.
(z UPDATE performancetest SET
ChangeDate = '20.07.2009
20.07.2009' WHERE RecordID = 1)) und hintereinander ausgeführt,
was natürlich in der praktischen Anwendung erheblich optimiert werden könnte.
Beim Remotedatenzugriff wird die Pull-Methode mit dem gleichen Statement
ent wie bei Direct Access
aufgerufen (z.B. SELECT TOP 100 FROM performancetest).. Dann werden die Datensätze
in der SQL Server Compact-Datenbank
Datenbank aktualisiert und mit der Push-Methode
Methode auf die
Remotedatenbank synchronisiert. Die Zeit wird lediglich für die Ausführung
Ausführung der Push-Methode
Push
gemessen und nicht fürs lokale Aktualisieren mittels SqlCeConnection.
Datenaustausch / Kommunikation
Projekt
Mobile DMS-Datenerfassung
Datenerfassung
Autor
Datum
Version
Dokument
Philipp Buser
10.09.2009
1.0
Projektdokumentation
Seite
69(141)
Für die Messungen mit der Mergereplikation habe ich jeweils in der Veröffentlichung den Filter
angepasst, so dass nur die ersten 1, 100, 1000 oder alle Datensätze
Datensätze repliziert werden. Die Datenbank
auf dem Client wird dabei vorher gelöscht, damit wieder alle Datensätze übertragen werden. Die
lokale Aktualisierung, die wiederum nicht Teil der Messung ist, geschieht identisch zu RDA mit
anschliessendem Aufruf der Replicate
plicate-Methode.
Performance-Messungen
Messungen für Daten, die auf dem Server geändert haben, habe ich nicht durchgeführt.
Einzelne Stichproben haben aber gezeigt, dass sie etwa im gleichen Rahmen wie die Replikation der
clientseitigen Aktualisierungen liegen.
Den beiden Webservices (ASP.NET Webservice und WCF-Service)
WCF Service) wird die Anzahl der gewünschten
Datensätze (1, 100, 1000, 10000) einer Webmethode als Parameter übergebenen. Der Webservice
liefert dann die Datensätze als serialisierte Objekte zurück.
Für die Aktualisierung
lisierung werden die geänderten Objekte ebenfalls einer Webmethode als Parameter
übergeben.
Beim WCF-Service
Service kommt beim Laden von 1000 Datensätzen die Meldung „Das maximale
Nachrichtengrössenkontingent für eingehende Nachrichten (65536) wurde überschritten“.
überschritte Dies kann
durch Erhöhung der MaxReceivedMessageSize-Eigenschaft
MaxReceivedMessageSize
auf dem HttpTransportBindingElement
behoben werden. Bei 10000 Datensätzen kommt dann jedoch eine weitere Fehlermeldung („Von
(„
der
Übertragungsverbindung können keine Daten gelesen werden.“),
werden , für welche ich keine Lösung
gefunden habe, deshalb fehlen die Werte für diese Testreihe.
Bei den Synchronization Services muss die Datenbank mit 1, 100, 1000 oder 10000 Datensätzen
gefüllt werden, um mit der Synchronize-Methode
Synchronize
einerseits das Herunterladen
den und anderseits, nach
lokaler Aktualisierung der Daten, das Abgleichen der Daten zu messen. Die Datenbank auf dem Client
muss dabei (wie bei der Merge-Replication)
Replication) vor dem Herunterladen gelöscht werden.
Aus mir unerklärlichen Gründen war es nicht möglich
möglich mehr als 80 aktualisierte Datensätze zu
synchronisieren, da eine TargetInvocationException erfolgt. Deshalb fehlen die Werte für die
Messungen um 1000 Datensätze zu aktualisieren. Der Wert in der Spalte „100 Datensätze
aktualisieren“ ist eigentlich der Wert
Wert für 80 Datensätze, damit man ihn wenigstens ungefähr mit den
anderen Technologien vergleichen kann.
Tabelle 16:: Durchschnittswerte der Performance-Messungen
Performance
Datenaustausch / Kommunikation
Projekt
Mobile DMS-Datenerfassung
Datenerfassung
Autor
Datum
Version
Dokument
Philipp Buser
10.09.2009
1.0
Projektdokumentation
Seite
70(141)
Abbildung 12: Erstmalige Verbindungszeiten
zeiten der verschiedenen Technologien
Abbildung 13:: Aktualisierungszeiten (in ms) für 1 und 100 Datensätze
Einigermassen erstaunlich finde ich, dass die neuste Technologie „Synchronization
Synchronization Services“
Services die
schlechtesten Performance-Werte
Werte aufweist.
Datenaustausch / Kommunikation
Projekt
Seite
Mobile DMS-Datenerfassung
Datenerfassung
Autor
Datum
Version
Dokument
Philipp Buser
10.09.2009
1.0
Projektdokumentation
71(141)
5.8.3 Vergleichs- und Entscheidungstabellen
Anhand der folgenden Tabelle kann man bestimmen, welche Technologie für die aufgeführten
Schlüsselfeatures geeignet ist.
Schlüsselfeature
RDA
MergeReplikation
Sync
Services
Synchronisieren anhand
nd von Diensten
nein
nein
ja
Unterstützung für heterogene Datenbanken
nein
nein
ja
Nachverfolgung inkrementeller Änderungen
nein1
ja
ja
Konflikterkennung und -auflösung
auflösung
nein
ja2
ja
Problemloses Erstellen von Datenansichten auf Client
nein
nein
ja
Automatisches
matisches Initialisieren von Schema und Daten
ja
ja
ja
Unterstützung für grosse
e Datasets
ja
ja
ja
Automatische Weitergabe von Schemaänderungen
nein
ja
nein
Automatisches Neupartitionieren von Daten
nein
ja
nein
Verwendung auf Geräten
ja
ja
ja
Tabelle 17:: Entscheidungstabelle für RDA, Merge-Replication
Merge
und Sync Services
1
RDA unterstützt zwar inkrementelle Hochladevorgänge, aber Downloads werden immer als
Snapshotsynchronisierung ausgeführt, die alle Daten auf dem Client aktualisiert.
aktual
2
Mergereplikation bietet eine integrierte Konfliktauflösung, wohingegen Sync Services ein Framework zum
Erstellen eines Konfliktauflösungsschemas bereitstellt.
Hier ist eine weitere Entscheidungstabelle, diesmal mit den 3 Methoden RDA, Mergereplikation
Mergerepli
und
Webservices (WS):
CRITERIA
Connectivity - Firewall Friendly
Connectivity - WWAN/Dialup
Connectivity - WLAN
Conflict Resolution
Code to Implement
Setup/Deployment Effort
On-Going Administration
Enterprise Management
Large Data Volumes
Server DBMS Independence
Auto SQL CE DBMS Creation
Ability to Secure Data Sync
Overall Complexity
BEST CHOICE
WS
RDA
RDA
Merge
RDA
RDA
RDA
Merge
Merge/RDA
WS
Merge
Merge
RDA
VIABLE
RDA/Merge
WS
WS/Merge
WS
Merge
WS
WS
WS
RDA/WS
WS
Tabelle 18:: Entscheidungstabelle für RDA, Merge Replication und Webservices
Datenaustausch / Kommunikation
CHALLENGING
Merge
RDA
WS
Merge
Merge
RDA
WS
Merge
Projekt
Mobile DMS-Datenerfassung
Datenerfassung
Autor
Datum
Version
Dokument
Philipp Buser
10.09.2009
1.0
Projektdokumentation
Seite
72(141)
Es ist offensichtlich, dass die aufgeführten Entscheidungstabellen weder vollständig (es werden
jeweils nur 3 Technologien
logien berücksichtigt) noch aktuell (Sync Services fehlt vollständig) sind. Anstatt
diese Tabellen mit den fehlenden Technologien zu ergänzen, habe ich eine neue und etwas
ausführliche Tabelle(Bewertungsmatrix) erstellt.
5.8.4 Bewertungsmatrix
In der Bewertungsmatrix
atrix habe ich die 6 untersuchten Technologien Direct Access, Remote Data
Access, Merge-Replication,
Replication, ASP.NET Webservices,
Webservi
WCF-Services und Synchronization
ation Services in
verschiedenen Kriterien gegeneinander mit Punkten bewertet.
Kriterien
Für die Bewertung habe ich die folgenden 16 Kriterien festgelegt:
Kategorie
Kriterium
Hardware
Software
Kosten /
Aufwand
Programmierung
Installation /
Konfiguration
Administration /
Wartung
Performance
Technik
Komplexität /
Applikationslogik
Konflikterkennung / auflösung
Verbindung
Firewall Friendly
Offline-Verwendung
Verwendung
Grosse Datenmengen
Sicherheit
Aktualität
Zukunftssicherheit
Trend
Weiterentwicklung /
Ausbaufähigkeit
Beschreibung
Wie hoch sind die Anforderungen an die Hardware (Server, Firewall)
und wieviel Ressourcen werden benötigt?
Welche Voraussetzungen müssen auf der Softwareseite gegeben sein?
Wird z.B. ein SQL Server benötigt (und welche Version?) oder genügt
SQL Express?
Wie gross ist der Programmieraufwand? Wie viel Entwicklungszeit wird
benötigt, um eine Replikationsstrategie umzusetzen?
Wie hoch ist der (einmalige) Aufwand für die Installation und
Konfiguration einer Lösung, die mit der betrachteten Technologie
realisiert ist?
Wie hoch ist der Aufwand für die laufenden Arbeiten (Server(Se
/DBAdministration, etc.)?
Wie gut schneidet die betrachtete Technologie in den durchgeführten
Performance-Tests ab?
Wie komplex ist es, mit der gewählten Technologie eine Lösung
umzusetzen?
Bietet die Technologie Konflikterkennung und -auflösung an oder muss
dies (falls benötigt) selbst programmiert werden?
Funktioniert die Technologie auch bei schlechter/langsamer
Verbindung (z.B. GSM) oder nur mit WLAN und gutem Empfang?
Werden spezielle Firewallregeln benötigt?
Ist Offline-Funktionalität
Funktionalität bei der Technologie inklusive oder muss diese
separat programmiert werden?
Wie geeignet ist eine Technologie
hnologie für grosse Datenmengen?
Was bietet die Technologie bezüglich Authentifizierung, Autorisierung
und Verschlüsselung, etc.?
Ist die Technologie aktuell oder schon etwas veraltet?
Wie stehen die Chancen,
ancen, dass die Technologie auch in Zukunft noch
verwendet und unterstützt wird?
Wie einfach ist es, eine Lösung zu erweitern? Ist die Technologie
flexibel einsetzbar?
Tabelle 19: Kriterien der
er Bewertungsmatrix
Datenaustausch / Kommunikation
Projekt
Mobile DMS-Datenerfassung
Datenerfassung
Autor
Datum
Version
Dokument
Philipp Buser
10.09.2009
1.0
Projektdokumentation
Seite
73(141)
Gewichtung
Die Gewichtung der Kriterien erfolgt anhand des Durchschnitts aus meinen Gewichtungen (PBU) und
denjenigen des Auftraggebers (RDE). Die Gewichtungen wurden unabhängig erstellt. Ich habe meine
Gewichtungen nachträglich noch mit einer Priorisierungsmatrix, die mir Herr Wenger zur Verfügung
gestellt hat, überprüft. Im Grossen und Ganzen stimmte es überein und ich habe die Gewichtung
deshalb wie ursprünglich festgelegt belassen.
Bewertung
Jede Technologie habe ich in allen Kriterien
Krit
mit Punkten von 1 bis 6 bewertet. Es ist relativ schwer für
die Kriterien einen konkreten Massstab festzulegen. Dort wo es mir nicht gelang, habe ich
stattdessen einfach jede Technologie mit allen anderen Technologien verglichen und die Punkte auf
diese Weise verteilt.
Je besser eine Technologie bei einem Kriterium abschneidet desto höher die Punktezahl. Wie aus der
Abbildung ersichtlich ist, schneidet die Merge-Replication
Merge Replication am besten und Remote Data Access
aufgrund der veralteten Technologie am schlechtesten ab.
Tabelle 20: Bewertungsmatrix
Die Begründungen zu den einzelnen Bewertungen können aus der Tabelle auf den nächsten beiden
Seiten entnommen werden.
Datenaustausch / Kommunikation
Projekt
Seite
Mobile DMS-Datenerfassung
Datenerfassung
Autor
Datum
Version
Dokument
Philipp Buser
10.09.2009
1.0
Projektdokumentation
74(141)
Tabelle 21:
Begründungen der
Bewertungen (1/2)
Datenaustausch / Kommunikation
Projekt
Seite
Mobile DMS-Datenerfassung
Datenerfassung
Autor
Datum
Version
Dokument
Philipp Buser
10.09.2009
1.0
Projektdokumentation
75(141)
Tabelle 22:
Begründungen der
Bewertungen (2/2)
Datenaustausch / Kommunikation
Projekt
Mobile DMS-Datenerfassung
Datenerfassung
Autor
Datum
Version
Dokument
Philipp Buser
10.09.2009
1.0
Projektdokumentation
Seite
76(141)
5.8.5 Zusammenfassung
Jede Konnektivitätsdatenlösung bietet verschiedene
vers
Vor- und Nachteile. Für die Entscheidung,
welche der Replikationsstrategie zum Einsatz kommen soll, spielen verschiedene Faktoren eine Rolle.
Die Verwendung hängt vom Zweck, der Funktion, dem Umfang und den Anforderungen der
Anwendung für intelligente
ente Geräte ab. Der tägliche Gebrauch (also welche Daten sollen
synchronisiert werden) stellt die Ausgangslage dar. Hier gibt es grob zwei Szenarien:
1. Jeder Benutzer, der synchronisieren möchte, verwendet im Prinzip sein eigenes Datenset, auf
welche die anderen
nderen Benutzer keinen Zugriff haben müssen und demnach auch nicht mit
diesen synchronisiert werden müssen.
2. Die Benutzer benötigen Zugriff auf die gleichen Daten, mit denen auch andere Benutzer
arbeiten. Änderungen an den Daten müssen deshalb auch zu den anderen
anderen Benutzern
weitergeleitet werden, damit diese nicht mit alten Datenbeständen arbeiten.
Direct Access
Direct Access, der direkte Zugriff auf die Serverdatenbank, stellt die einfachste und eine „straight
forward“ Methode dar, sofern das mobile Gerät direkt
direkt mit dem LAN verbunden ist, zum Beispiel
durch WiFi oder über eine ActiveSync-Verbindung
ActiveSync Verbindung zu einem PC. Sie kann jedoch nicht übers Internet
verwendet werden, was im Vergleich zu den übrigen Lösungen ein gewichtiger Nachteil ist.
Remote Data Access
Der Remotedatenzugriff ist sowohl für Kommunikationslösungen übers Internet wie auch für die
drahtlose Kommunikation geeignet. Jedoch ist der
d Prozess, in welchem RDA die Daten zurück in die
zentrale Datenbank synchronisiert,
synchronisiert relativ simpel und nicht geeignet für komplexe Datenstrukturen
Datenstruktur
oder Mehrbenutzer-Applikationen,
Applikationen, in welchen viele Benutzer versuchen
versuchen die gleichen Daten zu
ändern. Dafür erfordert RDA praktisch keine Konfiguration auf dem Server und das Schema der
Serverdatenbank bleibt unberührt.
Clients müssen
üssen über die auf dem Gerät ausgeführte Anwendung einzeln für RDA konfiguriert werden.
Deshalb eignet sich diese Konnektivitätslösung am besten für Anwendungen, die nicht allzu viele
Clients bedienen, oder wenn nicht viel Clientcode für die Verwaltung der verbundenen Daten in der
Anwendung benötigt wird.
RDA bietet keine Unterstützung für Konfliktlöser zur Verarbeitung von Zeilen, die aufgrund von
Fehlern auf dem Server nicht übernommen werden. Das Konfliktmanagement gestaltet sich relativ
schwierig. Fehler können zwar in einer Fehlertabelle in der SQL Server Compact 3.5-Datenbank
3.5
auf
dem Gerät protokolliert werden, zur Behandlung der Fehler muss die
die Anwendung auf dem Gerät
aber separaten Code enthalten. Zudem erkennt RDA auch Standardkonflikte nicht, wie z.B. wenn
Daten von verschiedenen Benutzern geändert werden. Im Konfliktfall wird einfach die letzte
Aktualisierung übernommen. Deshalb sollte RDA nur in einer vollständig partitionierten Anwendung
verwendet werden, in der Daten nicht von verschiedenen Benutzern
Benutzern aktualisiert werden,
werden also im
ersten der beiden oben beschriebenen Szenarien.
RDA ist somit nur dann von Vorteil, wenn nicht die gesamte Funktionalität der SQL Server Compact
3.5-Mergereplikation,
Mergereplikation, zu der auch die Konfliktlösung gehört, benötigt wird.
wird
Microsoft weist allerdings darauf hin, dass aufgrund von Entwurfseinschränkungen der
Remotedatenzugriff in einer Folgeversion entfernt werden wird. Wenn man beabsichtigt, RDA in
einer neuen Anwendung zu verwenden, sollte man stattdessen den Einsatz einer anderen Methode
in Betracht ziehen.
Datenaustausch / Kommunikation
Projekt
Mobile DMS-Datenerfassung
Datenerfassung
Autor
Datum
Version
Dokument
Philipp Buser
10.09.2009
1.0
Projektdokumentation
Seite
77(141)
Merge Replication
Die Mergereplikation setzt ein höheres Mass
Ma an Konfiguration und Verwaltung auf dem Server
voraus
aus als der Remotedatenzugriff,
Remotedatenzugriff, eignet sich jedoch optimal für Anwendungen, die mit zahlreichen
Geräten kommunizieren.
munizieren. Die Mergereplikation verfügt zudem über integrierte und
benutzerdefinierte Funktionen zur Konfliktlösung, ermöglicht die gleichzeitige Replikation von Daten
aus mehreren Tabellen, unterstützt die Verwendung von Überwachungsprogrammen
Überwachungsprogrammen mithilfe von
v
SQL Server und bietet moderne Optionen
Option der Datenreplikation, wie z.B.
B. Artikeltypen und Filter, zur
Leistungssteigerung, abhängig von den Datenanforderungen und der
der Identitätsbereichverwaltung
Der Preis dafür ist eine gewisse Serverinvasivität,
Serverinvas
d.h. die Mergereplikation verändert die
Konfiguration der Datenbank, insbesondere werden Änderungen am Schema der veröffentlichten
Tabellen vorgenommen.
In einigen Fällen hat man möglicherweise nicht die nötigen Berechtigungen, um das Schema auf dem
Back-End-System
em zu ändern. In einem solchen Fall bietet wie erwähnt RDA eine potenzielle
Konnektivitäts-Option,
Option, um Datenänderungen zwischen SQL Server und SQL Server Compact zu
übertragen. Wenn allerdings trotzdem die robuste Funktionalität der Replikation benötigt wird,
wir das
Back-End-Datenbankschema
Datenbankschema jedoch nicht geändert werden kann, besteht eine weitere mögliche
Option darin, einen Computer mit SQL Server auf mittlerer Ebene als Replikationsserver einzusetzen
und die Daten dann mit einer anderen, nicht invasiven Technologie,
Technologie, z.B. Data Transformation
Services (DTS) oder Webdiensten, auf das Back-End-System
Back
zu übertragen.
Sowohl bei RDA als auch bei der Mergereplikation wird die Datensynchronisierung über einen
Webserver durchgeführt, wobei die Datenänderungen unter Verwendung
Verwendung von HTTP oder HTTPS
gesendet werden. Die Datensynchronisierung über einen Webserver ist sehr flexibel, denn sie kann
zu jeder Zeit, zu der das Gerät eine Verbindung zum Internet herstellen kann, ob durch eine
Schnellverbindung wie WiFi oder eine langsamere
langsamere Mobilverbindung, durchgeführt werden.
Webservices
Webservices bieten selbstverständlich auch die geraden erwähnten Vorteile der Verwendung von
HTTP oder HTTPS. Bei Webservices hat man als Entwickler zudem die volle Kontrolle, welche Daten
wie ausgetauscht
etauscht werden. Sie sind nicht an eine bestimmte Datenbank (Oracle, DB2, MSSQL, etc.)
gebunden und damit sehr flexibel einsetzbar. Remote Data Access und Merge Replication hingegen
sind Lösungen, die speziell für Microsoft SQL Server zum Einsatz kommen. Der
Der Preis für diese
Unabhängigkeit ist jedoch, dass man einen grossen Teil der Entwicklung selbst machen muss.
Denn obwohl Webservices eine flexible Lösung bieten, die von vielen Anwendungen und mit Servern
von verschiedenen Herstellern verwendet werden kann,
kann, fehlt eine nicht unwesentliche Sache: Sie
bieten nicht sehr viel, was Ausfallsicherheit oder eingebaute Wiederholungsmechanismen anbelangt.
Für Anwendungen, die nicht ständig über eine zuverlässige Breitband-Internetverbindung
Breitband Internetverbindung verfügen,
sondern nur ab und
nd zu mit einem oder verschiedenen Netzwerken (USB-Kabel,
(USB Kabel, WiFi, GSM, etc.)
verbunden sind, muss viel Zeit und Anstrengung dazu aufgewendet werden, um zu berücksichtigen,
was passiert, wenn bei einem Webservice-Aufruf
Webservice Aufruf kein Netzwerk verfügbar ist oder das Netzwerk
Ne
mitten in einem Webservice-Aufruf
Aufruf ausfällt.
Synchronization Services
Synchronization Services bietet die Flexibilität eines Programmiermodells (wie bei Offline-Datasets)
Offline
gepaart mit einer breiten Palette an Synchronisierungsfeatures (wie bei der Mergereplikation).
Mergereplikation). Die
Funktionalität von Synchronization Services ist RDA überlegen.
Sync Services gibt nicht vor, welcher Art der zu verwendende Dienst sein muss. Anwendungen
verwenden jedoch normalerweise einen Webdienst oder einen WCF (Windows Communication
Communicat
Foundation)-Dienst.
Datenaustausch / Kommunikation
Projekt
Seite
Mobile DMS-Datenerfassung
Datenerfassung
Autor
Datum
Version
Dokument
Philipp Buser
10.09.2009
1.0
Projektdokumentation
78(141)
5.8.6 Fazit
Das Fazit kann aus einem allgemeinen und einem projektbezogenen Blickwinkel gezogen werden.
Allgemeines Fazit
Obwohl die Mergereplikation ursprünglich für den DBA und zum Synchronisieren von SQL ServerServer
Datenbanken konzipiert wurde, stellt sie wichtige Funktionen bereit und lässt sich mithilfe von
Assistenten, gespeicherten Prozeduren und einer eigenen API konfigurieren und verwenden. Die
Mergereplikation bietet eigentlich alles, was man braucht.
Synchronization Services ist fürr Entwickler gedacht und ermöglicht das Erstellen von Datensichten
auf dem Client, die auf einer Serverdatenbank oder einer anderen Datenquelle basieren.
Synchronization Services unterstützen heterogene Datenbanken und die Synchronisierung über
Dienste, z.B.
B. WCF. Wenn eine Anwendung die Synchronisierung mit Nicht-SQL
Nicht SQL Server-Datenbanken
Server
vorsieht oder modular strukturiert sein muss, damit die Synchronisierung über verschiedene
Transporte oder Dienste erfolgen kann, ist die Verwendung der Synchronization Services
Servi
nützlich.
Webservices, insbesondere die moderneren WCF-Services,
WCF Services, sind ebenfalls eine valable Alternative für
die gerade erwähnten Anforderungen. Die Offline-Verwendung
Offline Verwendung der Daten ist jedoch nicht Bestandteil
der Webservices und muss zusätzlich entwickelt
entwickel werden.
Letztendlich müssen die Anforderungen einer Anwendung genau eingeschätzt werden und man muss
bestimmen, welches die geeignete Technologie ist. In einigen Fällen kann es auch sinnvoll sein, die
Features von verschiedenen Technologien miteinander zu
zu verbinden und in einer Lösung
zusammenzufassen.
Projektbezogenes Fazit
Sowohl anhand des Resultats aus der Bewertungsmatrix, wie auch vom Gefühl her, was die aktuellen
(und auch zukünftigen) Anforderungen an den Prototyp betrifft, wäre die Mergereplikation
Merger
die
bevorzugte Methode. Allerdings verhindert die Muss-Anforderung,
Muss Anforderung, dass die Lösung auch mit SQL
Express funktionieren muss (da sonst rund 50% unseres Kundenstamms von der Lösung
ausgeschlossen wären bzw. mit Mehrkosten für eine kostenpflichtige SQL-Server
SQL rver Version
konfrontiert werden müssten),, diese Variante. Ebenso wird bevorzugt, wenn die KSR-Datenbank
möglichst nicht verändert wird.
Anforderung an die Technologie
Muss auch mit verschiedenen Datenbanken (MySQL, Oracle, etc.) funktionieren
Muss mit SQLExpress funktionieren
Muss auch über öffentliche Netze (Internet), nicht nur im LAN funktionieren
Darf die KSR-Datenbank
Datenbank (Tabellen, Konfiguration, etc.) nicht verändern
Darf keine Änderungen an bestehender Infrastruktur (Server, Firewall,
Firewall, etc.) zur Folge haben
Darf keine Änderungen an bestehenden Software-Produkten
Software
zur Folge haben
Muss ohne grösseren Konfigurationsaufwand funktionieren
Muss Konfliktlösung bieten
Muss Offline-Modus anbieten
Muss gute Zukunftssicherheit
erheit aufweisen
Ja
Nein
Tabelle 23: Muss-Anforderungen
Zwischen den Synchronization Services und den WCF-Services
WCF
ices ist dann der Entscheid aus folgenden
Hauptgründen zugunsten der WCF-Services
WCF
ausgefallen. Einerseits bieten die WCF-Services
WCF
bei
zukünftigen
gen Anforderungen eine höhere
höh
Flexibilität.. Zudem handelt es sich um eine sehr aktuelle
Technologie, die voll im Zentrum der Microsoftstrategie steht. Andererseits
Andere seits machen die
Synchronization Services einen eher komplexen und undurchsichtigen
undurchsichti
Eindruck und schneiden bei
den Performance-Messungen
Messungen deutlich schlechter ab.
Datenaustausch / Kommunikation
Projekt
Seite
Mobile DMS-Datenerfassung
Datenerfassung
Autor
Datum
Version
Dokument
Philipp Buser
10.09.2009
1.0
Projektdokumentation
79(141)
Teil 2 – Prototyp
6 Anwendungsfälle
In diesem Kapitel werden die im Pflichtenheft definierten Use Cases und die funktionalen und nichtfunktionalen Anforderungen an den Prototyp beschrieben und wo nötig mit einem
Aktivitätsdiagramm verfeinert. Die folgende Tabelle zeigt, welche Use Cases realisiert und welche
nicht realisiert werden konnten.
ID
Priorität 1
UC001
UC002
Aufgabenliste abrufen
Aufgabendetails
endetails abrufen
UC003
UC004
UC005
UC006
UC007
UC008
Aufgabe als erledigt zurückmelden
Termininformationen abrufen
Fahrzeuginformationen abrufen
Auftrag abschliessen
Kundeninformationen abrufen
Kunde kontaktieren
RQ001
Filtern der Aufgaben
RQ002
RQ003
RQ004
Aktualisieren der Aufgaben
Automatische Aktualisierung der Aufgaben
Mehrere Aufgaben auf einmal erledigen
RQ005
RQ006
RQ007
Eingaben überprüfen
Anpassung an Bildschirmauflösung
Wechsel zwischen Hoch-- und Querformat
RQ008
RQ009
RQ010
RQ011
Touchscreen-Bedienung
Bedienung per Spracheingabe
Sprache
Sicherheit
Priorität 2
Priorität 3
Tabelle 24:: Übersicht der Use Cases und Anforderungen
Akteure
Für den Prototyp gibt es nur einen Akteur. Es ist dies der Mitarbeiter (Monteur oder Verkäufer),
welcher im Garagen- oder Carrosseriebetrieb mit dem mobilen Gerät seine erledigten Arbeiten
zurückmeldet. Ein zweiter Akteur, welcher zuvor die Arbeiten im (bestehenden) System
Syste erfasst und
plant, ist für die folgenden Use Cases nicht relevant.
Übersicht
Die drei Haupt-Use
Use Cases sind „Aufgabe erledigen“, „Auftrag bearbeiten“ und „Kunde kontaktieren“.
Sie werden in den folgenden Unterkapiteln in weitere Use Cases unterteilt und dort beschrieben.
Anwendungsfälle
Projekt
Mobile DMS-Datenerfassung
Datenerfassung
Autor
Datum
Version
Dokument
Philipp Buser
10.09.2009
1.0
Projektdokumentation
Abbildung 14: Die 3 Haupt-Use Cases
6.1 Aufgabe erledigen
Der Use Case „Aufgabe erledigen“ kann in 3 feinere Use Cases unterteilt werden.
Abbildung 15:: Use Case Aufgabe erledigen
Anwendungsfälle
Seite
80(141)
Projekt
Mobile DMS-Datenerfassung
Datenerfassung
Autor
Datum
Version
Dokument
Philipp Buser
10.09.2009
1.0
Projektdokumentation
ID
Use Case
Beschreibung
Auslöser
Vorbedingungen
Ergebnis
Ablauf
Ausnahmen
UC001
Aufgabenliste abrufen
Der Benutzer
utzer kann sich die Aufgaben zu einem Auftrag anzeigen lassen
Der Benutzer klickt auf die Schaltfläche „Aufgaben“
• Ein Auftrag ist geladen
Die Aufgabenliste zum Auftrag wird angezeigt
1. Der Benutzer klickt auf die Schaltfläche „Aufgaben“
• Es sind keine Aufgaben vorhanden
Eine Meldung anstelle der Aufgabenliste wird angezeigt
• Filtern der Aufgaben (RQ001)
• Aktualisieren der Aufgaben (RQ002)
• Anpassung an Bildschirmauflösung (RQ006)
• Wechsel zwischen Hoch- und Querformat (RQ007)
• Touchscreen-Bedienung (RQ008)
• Bedienung per Spracheingabe (RQ009)
Erweiterungen
Seite
81(141)
ID
Use Case
Beschreibung
Auslöser
Vorbedingungen
Ergebnis
Ablauf
Ausnahmen
Erweiterungen
UC002
Aufgabendetails abrufen
Der Benutzer kann sich Details zu einer Aufgabe anzeigen lassen
Der Benutzer klickt auf eine Aufgabe
• Die Aufgabenliste wird angezeigt (UC001)
Detailinformationen zur Aufgabe werden angezeigt
1. Der Benutzer klickt auf eine Aufgabe
--• Anpassung an Bildschirmauflösung (RQ006)
• Wechsel zwischen Hoch- und Querformat (RQ007)
• Touchscreen-Bedienung (RQ008)
ID
Use Case
Beschreibung
Auslöser
Vorbedingungen
UC003
Aufgabe als erledigt zurückmelden
Der Benutzer kann eine Aufgabe als erledigt zurückmelden
Der Benutzer klickt auf die Schaltfläche „Übermitteln“
• Die Aufgabenliste (UC001)) oder die Detailinformationen zu einer Aufgabe
(UC002) werden angezeigt
Die markierte Aufgabe wird auf dem Server als erledigt gekennzeichnet und
verschwindet aus der Liste der offenen Aufgaben
1. Der Benutzer markiert eine Aufgabe als erledigt, indem er
a. in der Aufgabenliste die bei einer Aufgabe stehende Checkbox
aktiviert oder
b. in den Detailinformationen einer Aufgabe auf die Schaltfläche
„Erledigen“ klickt (Priorität 2)
2. Der Benutzer klickt auf die Schaltfläche „Übermitteln“
• Keine Aufgabe als erledigt markiert
Es passiert nichts
• Eine als erledigt markierte Aufgabe wurde inzwischen bereits von einem
anderen Benutzer erledigt
Die Aufgabe wird ganz normal als erledigt übermittelt
• Automatische Aktualisierung der Aufgaben (RQ003)
• Mehrere Aufgaben aufs Mal erledigen (RQ004)
• Touchscreen-Bedienung (RQ008)
Ergebnis
Ablauf
Ausnahmen
Erweiterungen
Anwendungsfälle
Projekt
Seite
Mobile DMS-Datenerfassung
Datenerfassung
Autor
Datum
Version
Dokument
Philipp Buser
10.09.2009
1.0
Projektdokumentation
act Aufgabe erledigen
[Keine Aufgaben vorhanden]
Hinw eismeldung anzeigen
[Aufgaben vorhanden]
Aufgabenliste anzeigen
Aufgabe ausw ählen
[Abschliessen]
[Details...]
Aufgabendetails anzeigen
[Abschliessen]
Aufgabe abschliessen
Aufgabenliste aktualisieren
Abbildung 16:: Aktivitätsdiagramm zum Use Case Aufgabe erledigen
Anwendungsfälle
[Abbrechen]
82(141)
Projekt
Mobile DMS-Datenerfassung
Datenerfassung
Autor
Datum
Version
Dokument
Philipp Buser
10.09.2009
1.0
Projektdokumentation
Seite
83(141)
6.2 Auftrag bearbeiten
Der Use Case „Auftrag bearbeiten“
bearbeiten kann ebenfalls in 3 Use Cases unterteilt werden.
Abbildung 17: Use Case Auftrag bearbeiten
ID
Use Case
Beschreibung
Auslöser
Vorbedingungen
Ergebnis
Ablauf
Ausnahmen
Erweiterungen
UC004
Termininformationen abrufen
Der Benutzer kann sich die Termininformation zum Auftrag anzeigen
anzeigen lassen
Der Benutzer klickt auf die Schaltfläche „Termine“
• Ein Auftrag ist geladen
Die Termininformationen zum Auftrag werden angezeigt
1. Der Benutzer klickt auf die Schaltfläche „Termine“
--• Anpassung an Bildschirmauflösung (RQ006)
• Wechsel zwischen Hoch- und Querformat (RQ007)
• Touchscreen-Bedienung (RQ008)
• Bedienung per Spracheingabe (RQ009)
ID
Use Case
Beschreibung
Auslöser
Vorbedingungen
Ergebnis
Ablauf
Ausnahmen
Erweiterungen
UC005
Fahrzeuginformationen abrufen
Der Benutzer kann sich die Fahrzeuginformationen zum Auftrag anzeigen lassen
Der Benutzer klickt auf die Schaltfläche „Fahrzeug“
• Ein Auftrag ist geladen
Die Fahrzeuginformationen zum Auftrag werden angezeigt
1. Der Benutzer klickt auf die Schaltfläche „Fahrzeug“
--• Anpassung an Bildschirmauflösung (RQ006)
• Wechsel zwischen Hoch- und Querformat (RQ007)
• Touchscreen-Bedienung (RQ008)
• Bedienung per Spracheingabe (RQ009)
Anwendungsfälle
Projekt
Mobile DMS-Datenerfassung
Datenerfassung
Autor
Datum
Version
Dokument
Philipp Buser
10.09.2009
1.0
Projektdokumentation
ID
Use Case
Beschreibung
Auslöser
Vorbedingungen
UC006
Auftrag abschliessen
Der Benutzer kann einen Auftrag abschliessen
Der Benutzer klickt auf die Schaltfläche „Auftrag abschliessen“
• Alle Aufgaben des Auftrags sind bereits als erledigt zurückgemeldet
worden
Der Auftrag ist abgeschlossen
1. Der Benutzer klickt auf die Schaltfläche „Auftrag abschliessen“
--• Touchscreen-Bedienung (RQ008)
• Bedienung per Spracheingabe (RQ009)
Ergebnis
Ablauf
Ausnahmen
Erweiterungen
Seite
84(141)
Abweichung: Die Vorbedingung ist nicht nötig. Wird ein Auftrag abgeschlossen werden automatisch
auto
alle Aufgaben als erledigt zurückgemeldet.
6.3 Kunde kontaktieren
Der Use Case „Kunde kontaktieren“ kann in 2 Use Cases unterteilt werden.
Abbildung 18:: Use Case Kunde kontaktieren
ID
Use Case
Beschreibung
Auslöser
Vorbedingungen
Ergebnis
Ablauf
Ausnahmen
Erweiterungen
UC007
Kundeninformationen abrufen
a
Der Benutzer kann sich die Kundeninformationen zum Auftrag anzeigen lassen
Der Benutzer klickt auf die Schaltfläche „Kunde“
• Ein Auftrag ist geladen
Die Kundeninformationen zum Auftrag werden angezeigt
angezeig
1. Der Benutzer klickt auf die Schaltfläche „Kunde“
--• Anpassung an Bildschirmauflösung (RQ006)
• Wechsel zwischen Hoch- und Querformat (RQ007)
• Touchscreen-Bedienung (RQ008)
• Bedienung per Spracheingabe (RQ009)
Anwendungsfälle
Projekt
Mobile DMS-Datenerfassung
Datenerfassung
Seite
85(141)
Autor
Datum
Version
Dokument
Philipp Buser
10.09.2009
1.0
Projektdokumentation
ID
Use Case
Beschreibung
UC008
Kunde kontaktieren
Der Benutzer kann aus den Kundeninformationen heraus den Kunden anrufen,
eine SMS oder eine Email schreiben
Der Benutzer klickt auf die entsprechende Schaltfläche
• Die Kundeninformationen werden
den angezeigt (UC007)
(UC007
Eine Telefonverbindung zum Kunden wird hergestellt oder der SMSSMS oder
Emailversand an den Kunden wird vorbereitet
1. Der Benutzer klickt auf die entsprechende Schaltfläche
2. Die gewählte Funktion wird ausgeführt:
a. Bei Anruf:
f: Die Telefonverbindung wird direkt hergestellt
b. Bei SMS: Eine SMS wird erstellt und zur weiteren Bearbeitung
angezeigt
c. Bei Email: Eine Email wird erstellt und zur weiteren Bearbeitung
angezeigt
• Ungültige Telefonnummer / Emailadresse
wird nicht geprüft
• Touchscreen-Bedienung (RQ008)
• Bedienung per Spracheingabe (RQ009)
Auslöser
Vorbedingungen
Ergebnis
Ablauf
Ausnahmen
Erweiterungen
7 Funktionale Anforderungen
ID
Anforderung
Beschreibung
Verwendet von
Use Cases
ID
Anforderung
Beschreibung
Verwendet von
Use Cases
ID
Anforderung
Beschreibung
Verwendet von
Use Cases
ID
Anforderung
Beschreibung
Verwendet von
Use Cases
RQ001
Filtern der Aufgaben
Das System soll dem Benutzer die Möglichkeit bieten, über einen Filter die
offenen, die bereits erledigten oder alle Aufgaben zu einem Auftrag abzurufen.
• Aufgabenliste abrufen (UC001)
RQ002
Aktualisieren der Aufgaben
Das System soll dem Benutzer die Möglichkeit bieten, die Aufgabenliste
Aufgabe
auf
Knopfdruck zu aktualisieren.
• Aufgabenliste abrufen (UC001)
RQ003
Automatische Aktualisierung der Aufgabenliste
Nachdem der Benutzer erledigte Aufgaben zurückgemeldet hat, soll das System
die Aufgabenliste
Aufgab
automatisch aktualisieren.
• Aufgabe als erledigt zurückmelden (UC003)
RQ004
Mehrere Aufgaben auf einmal erledigen
Das System soll dem Benutzer die Möglichkeit bieten, mehrere Aufgaben
Aufga
auf
einmal als erledigt zurückzumelden.
zurück
• Aufgabe als erledigt zurückmelden (UC003)
Funktionale Anforderungen
Projekt
Mobile DMS-Datenerfassung
Datenerfassung
Autor
Datum
Version
Dokument
Philipp Buser
10.09.2009
1.0
Projektdokumentation
Seite
86(141)
8 Nicht funktionale Anforderungen
ID
Anforderung
Beschreibung
RQ005
Eingaben überprüfen
Das System muss die vom Benutzer eingegebenen Daten auf ihre Gültigkeit
überprüfen und den Benutzer im Fehlerfall benachrichtigen.
ID
Anforderung
Beschreibung
RQ006
Anpassung an Bildschirmauflösung
Die zurzeit auf dem Markt erhältlichen mobilen Geräte unterscheiden sich zum Teil
stark bei der Bildschirmauflösung,
Bildschirm
DPI-Zahl
Zahl und der Ausrichtung. Das System soll
die
ie Auflösung eines Geräts erkennen und die Darstellung dementsprechend
anpassen.
ID
Anforderung
Beschreibung
RQ007
Wechsel zwischen HochHoch und Querformat
Einige Geräte unterstützen die dynamische Änderung der Bildschirmausrichtung.
Das System soll wenn möglich auch diesem Feature Rechnung tragen.
ID
Anforderung
Beschreibung
RQ008
Touchscreen
Touchscreen-Bedienung
Das System soll möglichst vollständig mit dem Finger über die Touchoberfläche des
mobilen Geräts
Ger bedient werden können.
ID
Anforderung
Beschreibung
RQ009
Bedienung per Spracheingabe
Das System soll dem Benutzer die Möglichkeit bieten, einzelne Aktionen per
Sprachein
Spracheingabe
auszulösen.
ID
Anforderung
Beschreibung
RQ010
Sprache
Die Bedienerführung
Bedienerführung der Anwendung ist in Deutsch. Es müssen keine anderen
Sprachen unterstützt werden.
ID
Anforderung
Beschreibung
RQ011
Sicherheit
Die übermittelten Daten sind nicht sensitiv.
sensitiv Deshalb sind im Moment keine
Vorkehrungen für Verschlüsselung, Authentifizierung oder Ähnlichem vorgesehen.
Abweichung: Das System soll nur von registrierten Geräten verwendet werden können.
Nicht funktionale Anforderungen
Projekt
Seite
87(141)
Mobile DMS-Datenerfassung
Datenerfassung
Autor
Datum
Version
Dokument
Philipp Buser
10.09.2009
1.0
Projektdokumentation
9 Benutzeroberfläche
oberfläche
Obwohl das bevorzugte Zielgerät eine Auflösung von 480 x 800 Pixel aufweist, wurden die
Benutzeroberflächen für eine Auflösung
uflösung von 240 x 320
0 Pixel konzipiert, damit die Anwendung auch
auf anderen Geräten, welche diese Mindestanforderung erfüllen,
erfüllen, anständig bedient werden kann.
Die Bedienung ist grundsätzlich über den Touchscreen mit dem Finger möglich. Bei einigen kleineren
kleine
Elementen (z.B. den Checkboxen) ist vor allem mit grösseren Händen etwas Fingerspitzengefühl
notwendig, es gibt jedoch oftmals eine alternative Bedienungsmöglichkeit über ein Kontextmenü,
welches mit den Fingern problemlos ausgewählt werden kann.
Entwurf
custom Primary Forms
Start
Auftrag
1
2
4
Verkauf Porsche Cayenne
Bezeichnung: Waschen Reinigen
Filter:
Offene Aufgaben
Dauer:
3
5
Details
Projekt:
6
1 Felgen montie.. 0.8 h
Startdatum: 29.04.08 Beginn: 14:30
2 Waschen Reini.. 1 h
Enddatum: 29.04.08 Ende:
8
9
0
<
CLR
15:30
3 Fotos machen 0.3 h
«navigate»
7
1.0 h
«navigate»
Zusatzangaben:
600 evtl. auch Motor waschen
Auftrag abgeschlossen
Jobs
Kunde
Fahrzeug
Termin
«navigate»
«navigate»
«navigate»
Kunde
Anrede:
Name/Firma:
Vorname:
Strasse:
PLZ und Ort:
Firma
GCS GmbH
Mühlemattstrasse 24a
4104 Oberwil
Fahrzeug
Termin
Kennzeichen: BL 123456
Anlieferung: 29.04.08
13:00
Bezeichnung: PORSCHE/Cayenne
Turbo
Abholung:
18:00
Fgst-Nr:
WP0ZZZ7PZ4LA80188
EZ:
LZ:
Km Stand:
Letzer Kd.:
HU:
AU:
01.07.03
Telefon (P):
Ersatzwagen benötigt
0617269735
SMS
Mobiltelefon: 0763788037
SMS
Telefon (G):
Telefax:
0617269736
[email protected]
Email:
Website:
02.05.08
74061
16.08.08
01.07.08
01.07.07
www.gcsgmbh.ch
Geb.-Datum:
Jobs
Kunde
Fahrzeug
Termin
Jobs
Kunde
Fahrzeug
Termin
Abbildung 19: Entwurf der Benutzeroberfläche (Primary Forms)
Benutzeroberfläche
Jobs
Kunde
Fahrzeug
Termin
Projekt
Seite
Mobile DMS-Datenerfassung
Datenerfassung
Autor
Datum
Version
Dokument
Philipp Buser
10.09.2009
1.0
Projektdokumentation
88(141)
custom Administrativ e Forms
Verbindung
Webservice:
Datenbank
http://192.168.179.10
Div erses
Standard verwenden
Timeout:
15
Nachrichtengrösse:
1048576
Kennwort:
Passwort:
******
******
Querformat:
90 °
...
Debugmodus aktivieren
Standard wiederherstellen
Test
Erstellen
Füllen
Regelmässig aktualisieren
Nur mit WiFi-Verbindung
Intervall:
120
Verbindung Datenbank
Diverses
Verbindung Datenbank Diverses
Verbindung Datenbank
Diverses
Abbildung 20: Entwurf der Benutzeroberfläche (Administrative Forms)
9.1 Startfenster
Abbildung 21:: Screenshot des Startfensters
Beschreibung
Das Startfenster dient zur Eingabe der Auftragsnummer über das Tastenfeld.
Ta
Bedienelemente
Die Nummerntasten schreiben die entsprechende Ziffer ins Eingabefeld. Tippfehler können mit der
Backspace-Taste (<--) korrigiert
rigiert werden, die CLR-Taste
CLR
löscht das Eingabefeld. Mit der Ok-Taste
Ok
wird
die Eingabe bestätigt und der Wechsel zum Auftragsfenster vorgenommen.
Menü
Synchronisieren
Offline arbeiten
Querformat
Funktion
Startet die Synchronisierung. Dieser Menüpunkt kann nur im Online Modus
ausgewählt
ewählt werden.
Wechselt vom OfflineOffline in den Online-Modus
Modus und umgekehrt. Beim Wechsel in den
Online-Modus
Modus wird überprüft, ob eine Verbindung zum Server besteht. Falls die
Verbindung nicht aufgebaut werden kann,
kann wird wieder in den Offline-Modus
Offline
gewechselt.
Wechselt die Anzeige vom HochHoch ins Querformat und umgekehrt.
Benutzeroberfläche
Projekt
Mobile DMS-Datenerfassung
Datenerfassung
Autor
Datum
Version
Dokument
Philipp Buser
10.09.2009
1.0
Projektdokumentation
Optionen…
Beenden
Info
Seite
89(141)
Ruft den Dialog mit den Einstellungen auf (siehe 9.3).
Beendet die Anwendung (im Gegensatz zu einem Klick
K
auf am rechten oberen
Rand, welches die Anwendung lediglich minimiert. Dies ist das Standardverhalten bei
mobilen Anwendungen.)
Zeigt das Infofenster an (siehe 9.4).
Tabelle 25:: Menüelemente im Startfenster
Status- und Fehlermeldungen
Ungültige Auftragsnummern und Aufträge, die nicht vorhanden sind, führen zu Fehlermeldungen:
Fehler bei der Anmeldung am Webservice oder bei der Verbindung zum Server führen ebenfalls
ebenfal zu
entsprechenden Fehler- oder Warnmeldungen:
Eine manuell gestartete Synchronisierung zeigt eine Meldung an, sobald die Synchronisierung
abgeschlossen ist:
Benutzeroberfläche
Projekt
Mobile DMS-Datenerfassung
Datenerfassung
Autor
Datum
Version
Dokument
Philipp Buser
10.09.2009
1.0
Projektdokumentation
Seite
90(141)
9.2 Auftragsfenster
Abbildung 22: Screenshot des Auftragsfensters
Beschreibung
Das Auftragsfenster ist das Hauptfenster der Anwendung. Nach der Eingabe der Auftragsnummer im
Startfenster wird das Projekt geladen und die dazugehörigen Daten in den verschiedenen Registern
(Jobs, Kunde, Fahrzeug, Termin) des
de Auftragsfensters angezeigt.
Bedienelemente
Mit Klick auf eines der vier Register können die entsprechenden Informationen angezeigt werden.
Menü
Auftrag wechseln
Aktualisieren
Synchronisieren
Offline arbeiten
Querformat
Optionen…
Beenden
Info
Funktion
Wechselt zum Startfenster.
Aktualisiert die Auftragsdaten, indem sie neu vom Server geladen werden. Dieser
Menüpunkt kann nur im Online-Modus
Online
ausgewählt werden.
Startet die Synchronisierung. Dieser Menüpunkt kann nur im Online Modus
ausgewählt werden.
Wechselt vom OfflineOffline in den Online-Modus
Modus und umgekehrt. Beim Wechsel in den
Online-Modus
Modus wird überprüft, ob eine Verbindung zum Server besteht. Falls die
Verbindung nicht aufgebaut werden kann,
kann wird wieder in den Offline-Modus
Offline
gewechselt.
Wechselt die Anzeige vom HochHoch ins Querformat
erformat und umgekehrt.
Ruft den Dialog mit den Einstellungen auf (siehe 9.3).
Beendet die Anwendung (im Gegensatz zu einem Klick auf am rechten oberen
Rand, welcher das Auftragsfenster minimiert.
minimiert. Danach ist wieder das Startfenster
ersichtlich. Dies entspricht also dem Menüpunkt „Auftrag wechseln“.)
Zeigt das Infofenster an (siehe 9.4).
Tabelle 26: Menüelemente im Auftragsfenster
Statusmeldungen und Fehlermeldungen
Die Meldungen bezüglich Anmeldung, Verbindung und Synchronisierung sind dieselben wie beim
Startfenster.
Benutzeroberfläche
Projekt
Mobile DMS-Datenerfassung
Datenerfassung
Autor
Datum
Version
Dokument
Philipp Buser
10.09.2009
1.0
Projektdokumentation
Seite
91(141)
9.2.1 Aufgabenliste
Abbildung 23:: Screenshot der Aufgabenliste
Beschreibung
Die Aufgabenliste zeigt nebst Auftragsnummer, Projektbeschreibung und Verantwortlicher die
einzelnen Aufgaben mit ID, Bezeichnung und eingeplanter Arbeitsdauer an. Aufgaben können
abgeschlossen werden.
Bedienelemente
Über das Dropdown-Menü
Menü kann die
die Ansicht der Aufgaben gefiltert werden. Es stehen „Offene
Aufgaben“, „Abgeschlossene Aufgaben“ und „Alle Aufgaben“ zur Auswahl.
In der Liste mit den Aufgaben können über die Checkboxen eine oder mehrere Aufgaben als
abgeschlossen markiert
iert werden. Ein Klick
Kli auf die Abschliessen-Taste
Taste führt die Aktion definitiv aus.
Einmal erledigte Aufgaben können nicht wieder zu offenen Aufgaben geändert werden.
Ein zweimaliger Klick auf eine Aufgabe zeigt die Aufgabendetails an.
Mit der Checkbox „Auftrag abgeschlossen“ werden
w
automatisch die Checkboxen aller Aufgaben des
Projekts markiert. Ein Klick auf die Abschliessen-Taste
Abschliessen
schliesst
st dann alle Aufgaben definitiv ab. Ist ein
Projekt einmal abgeschlossen, können die Aufgaben nicht mehr zu offenen Aufgaben geändert
werden.
Kontextmenü
Abschliessen
Details…
Funktion
Schliesst die ausgewählte Aufgabe ab. Im Unterschied zur Checkbox wird die Aufgabe
sofort definitiv abgeschlossen, ohne dass die Abschliessen-Taste
Abschliessen Taste unten links betätigt
werden muss.
Zeigt die Details zur ausgewählten
ausg
Aufgabe an (siehe 9.2.2).
Tabelle 27: Kontextmenü-Elemente
Elemente der Aufgabenliste
Statusmeldungen und Fehlermeldungen
Wird versucht eine Aufgabe abzuschliessen, die bereits erledigt
erledigt ist, dann erscheint eine
Fehlermeldung:
Benutzeroberfläche
Projekt
Mobile DMS-Datenerfassung
Datenerfassung
Autor
Datum
Version
Dokument
Philipp Buser
10.09.2009
1.0
Projektdokumentation
Seite
92(141)
9.2.2 Aufgabendetails
Abbildung 24:: Screenshot der Aufgabendetails
Beschreibung
In den Aufgabendetails werden nebst ID, Aufgabenbezeichnung und eingeplanter Dauer auch die
geplanten Beginn- und Endzeiten, sowie allfällige Zusatzangaben dargestellt. Die Aufgabe kann
abgeschlossen werden.
Bedienelemente
Falls in der Liste mit den Zusatzeinträgen eine Bezeichnung nicht vollständig dargestellt werden kann,
kann diese mit einem Klick in einem separaten Fenster angezeigt werden.
Mit der Abschliessen-Taste
Taste wird die Aufgabe (definitiv) abgeschlossen und das Fenster wird
geschlossen. Die Abbrechen-Taste
Taste sowie die ok-Schaltfläche
ok Schaltfläche oben rechts schliessen das Fenster.
Statusmeldungen und Fehlermeldungen
eldungen
Keine
9.2.3 Kontaktinformationen
Abbildung 25:: Screenshot der Kontaktinformationen
Benutzeroberfläche
Projekt
Mobile DMS-Datenerfassung
Datenerfassung
Autor
Datum
Version
Dokument
Philipp Buser
10.09.2009
1.0
Projektdokumentation
Seite
93(141)
Beschreibung
Es werden die Kontaktinformationen zum Auftrag angezeigt. Der Kunde kann über die
Telefonnummer-, SMS- oder Email-Taste
Email
kontaktiert werden.
Bedienelemente
Beim Betätigen einer Telefonnummern-Taste
Telefonnummern
wird die Nummer direkt gewählt.
Die SMS-Taste
Taste öffnet den Standarddialog zum Versenden einer SMS-Nachricht
SMS Nachricht und füllt beim „An:“Feld die Nummer ein.
Die Email-Taste öffnet den Standarddialog
tandarddialog zum Versenden einer Emailnachricht und füllt beim „An:“„An:“
Feld die Emailadresse ein. Zuvor kommt die Auswahl, über welches Emailkonto die Nachricht
verschickt werden soll.
Statusmeldungen und Fehlermeldungen
Keine
9.2.4 Fahrzeuginformationen
Abbildung 26:: Screenshot der Fahrzeuginformationen
Beschreibung
Es werden Informationen zum Fahrzeug angezeigt. (EZ = Erstzulassung, LZ = Letzte Zulassung, Kd. =
Kundendienst, HU = Hauptuntersuchung, AU = Abgasuntersuchung).
Bedienelemente
Keine
Statusmeldungen und Fehlermeldungen
Keine
Benutzeroberfläche
Projekt
Mobile DMS-Datenerfassung
Datenerfassung
Autor
Datum
Version
Dokument
Philipp Buser
10.09.2009
1.0
Projektdokumentation
Seite
94(141)
9.2.5 Termininformationen
Abbildung 27:: Screenshot der Termininformationen
Beschreibung
Es werden die Termininformationen (Anlieferung und Abholung) zum Auftrag angezeigt. Zudem
erscheint ein Hinweis, falls der Kunde wartet und falls ein Ersatzwagen benötigt wird.
Bedienelemente
Keine
Statusmeldungen und Fehlermeldungen
Keine
9.3 Optionen
Abbildung 28: Screenshot der Optionen
n
Benutzeroberfläche
Projekt
Seite
Mobile DMS-Datenerfassung
Datenerfassung
Autor
Datum
Version
Dokument
Philipp Buser
10.09.2009
1.0
Projektdokumentation
95(141)
Beschreibung
In den Optionen werden die Einstellungen zum Webservice, zum Aktualisierungsmodus und zur
Datenbank vorgenommen.
Bedienelemente
Taste wird versucht anhand der konfigurierten Einstellungen die Verbindung und die
Mit der Test-Taste
Anmeldung zum Webservice herzustellen.
Die „Neu erstellen“-Taste
Taste löscht die bestehende Datenbank und erstellt sie neu.
Die „Neu befüllen“-Taste
Taste holt sich alle Projekte vom Webservice und fügt sie in die Datenbank ein.
Diese Funktion kann nur im Online-Modus
Online
verwendet werden
rden und kann je nach Anzahl der zu
übertragenden Projekte eine Weile dauern.
Mit der „Standard wiederherstellen“-Taste
wiederherstellen“ Taste werden alle Einstellungen auf die Standardwerte
zurückgesetzt.
Mit Klick auf ein Register kann zwischen den verschiedenen Einstellungen gewechselt werden.
Die ok-Schaltfläche
Schaltfläche in der rechten oberen Ecke speichert alle Einstellungen und schliesst das Fenster.
Einstellung
URL
Beschreibung
Definiert
efiniert die Adresse des Webservices.
Standardwert
Timeout
Definiert die Zeit,
Zei wie lange auf eine Antwort vom
Webservice gewartet werden soll.
Definierte die maximale Nachrichtengrösse. Da mit der
„Neu befüllen“-Taste
befüllen“
alle Projekte auf einmal übermittelt
werden, muss dieser
die Wert bei vielen Projekten evtl. nach
oben korrigiert werden.
Definiert das Passwort für die Anmeldung am Webservice.
Gibt an, ob die Synchronisation im Online-Modus
Online
im
Hintergrund automatisch durchgeführt
du
werden soll.
15
Gibt an, ob für den Online-Modus
Online
eine WiFi-Verbindung
erforderlich ist. Damit wird der Datenaustausch über
GPRS/UMTS/EDGE
GPRS/UMTS/EDGE-Verbindungen
unterbunden.
Definiertt das Intervall, in welchem die Synchronisation im
Hintergrund ausgeführt wird.
True
Gibt an, ob für die Datenbank der Standardpfad
(=Anwendungsverzeichnis)
Anwendungsverzeichnis) verwendet werden soll.
Definiert das Kennwort der Datenbank, falls
fa die Daten
verschlüsselt gespeichert werden sollen.
True
Definiert, ob beim Wechsel ins Querformat die Anzeige
um 90° oder um 270° gedreht werden soll.
Gibt an, ob der Debugmodus aktiviert werden soll. Im
Debugmodus werden
w
im Fehlerfall ausführlichere
Fehlermeldungen ausgegeben.
90
Maximale
Nachrichtengrösse
Passwort
Regelmässig
aktualisieren wenn
online
Aktualisieren nur mit
WiFi-Verbindung
Aktualisierungsintervall
Standard verwenden
Kennwort
Querformat
Debugmodus
aktivieren
http://192.168.79.105/
JPSService/JPSService.svc/
ba
basic
1048576
True
120
False
Tabelle 28:: Beschreibung und Standardwerte der Einstellungen
Statusmeldungen und Fehlermeldungen
Beim Testen des Webservices erscheinen je nachdem ob der Webservice
Webservice verfügbar ist und
u ob die
Anmeldung erfolgreich ist,, die entsprechenden Meldungen:
Benutzeroberfläche
Projekt
Mobile DMS-Datenerfassung
Datenerfassung
Autor
Datum
Version
Dokument
Philipp Buser
10.09.2009
1.0
Projektdokumentation
Seite
96(141)
Beim Erstellen der Datenbank, beim Befüllen der Datenbank und beim Wiederherstellen der
Standwerte erscheint jeweils eine Sicherheitsabfrage:
9.4 Info
Tabelle 29:: Screenshot des Infofensters
Beschreibung
Dieser Dialog zeigt die Copyright-Informationen
Copyright Informationen und einige Informationen zum Gerät an.
Die Geräte-ID
ID wird benötigt, um ein Gerät
Gerät am Webservice authentifizieren zu können.
Bedienelemente
Mit Klick auf ein Register werden entweder die CopyrightCopyright oder die Geräteinformationen angezeigt.
Die ok-Schaltfläche
Schaltfläche in der rechten oberen Ecke schliesst das Fenster.
Statusmeldungen und Fehlermeldungen
rmeldungen
Keine
Benutzeroberfläche
Projekt
Seite
Mobile DMS-Datenerfassung
Datenerfassung
Autor
Datum
Version
Dokument
Philipp Buser
10.09.2009
1.0
Projektdokumentation
97(141)
10 Datenbank
10.1 Server
Aus den weit über 200 Tabellen der GCS-Applikationen sind für die Implementierung des Prototyps
nur 9 Tabellen relevant. In den einzelnen Tabellen wiederum werden nur die rot hinterlegten Felder
in irgendeiner Form vom Prototyp
ototyp verwendet. Bei den im Diagramm dargestellten Primärschlüsseln
handelt es sich um die logischen Primärschlüssel. In Wirklichkeit besitzt jede Tabelle eine RecordIDRecordID
Spalte, welche als Primärschlüssel fungiert, aber nicht in jedem Fall als solchen konfiguriert
konf
ist.
dm Mobile JPS (Serv er)
Ansprechpartner
«column»
*PK AnspContactID: int
*pfK AnspAddrId: int
...
Adress
1..*
1
«column»
1 *PK AdreAddrId: int
...
0..*
WPTProj ect
«column»
*PK WPrjProjectID: int
*pfK WPrjCompanyID: int
FK WPrjDContactID: int
FK WPrjDAdressID: int
WPrjDVehicleID: int
WPrjExternalRef: int
FK WPrjRespRessource: int
...
WPTRessAndJobs
«column»
*pfK WRaJJobID: int
*pfK WRaJProjectID: int
*pfK WRaJCompanyID: int
*pfK WRaJRessourceID: int
*PK WRaJStart: datetime
*PK WRaJEnd: datetime
...
1
1 «column»
*PK WResRessourceID: int
*PK WResCompanyID: int
...
0..*
1
0..*
0..*
WPTJobs
1..*
WPTAddToJob
«column»
*pfK WAtJAddRecID: int
*pfK WAtJJobID: int
*pfK WAtJProjectID: int
*pfK WAtJCompanyID: int
WPTRessources
0..*
«column»
1 *PK WJobJobID: int
*pfK WJobProjectID: int
*pfK WJobCompanyID: int
FK WJobGroup: int
...
1
WPTJobGroup
0..*
WPTJobAdditionals
1..*
1 «column»
*PK RecordID: int
WJAdCompanyID: int
...
Abbildung 29:: Serverseitiges Datenbankmodell des Prototyps
Datenbank
«column»
1 *PK WJGrGroupID: int
*PK WJGrCompanyID: int
...
Projekt
Seite
Mobile DMS-Datenerfassung
Datenerfassung
Autor
Datum
Version
Dokument
Philipp Buser
10.09.2009
1.0
Projektdokumentation
10.1.1 Tabellenübersicht
Tabelle
WPTProject
WPTJobs
WPTJobAdditionals
WPTAddToJob
WPTRessources
WPTRessAndJobs
WPTJobGroups
Beschreibung
Arbeitsplaner-Projekte
Arbeitsplaner-Aufgaben
Zusatzeinträge zu einem Job
Zuordnungstabelle zwischen Jobs und JobAdditionals
Arbeitszeitenplaner-Ressourcen
Arbeitszeitenplaner-Ressourcen und Aufgaben
Aufgabengruppen
Adress
Ansprechpartner
Adressinfos (Ort, Strasse..)
Adressinfos (Name, Tel-Nr…)
10.1.2 Tabelle WPTProject (Arbeitsplaner-Projekte)
Feld
RecordID_WPTProject
WPrjClosed
WPrjCompanyID
WPrjCritical
WPrjCriticalHistory
WPrjDAdressID
WPrjDCarReserve
WPrjDContactID
WPrjDCurrMileage
WPrjDCustName
WPrjDCustomerWaiting
WPrjDDeliveryPlace
WPrjDDeliveryService
WPrjDelivered
WPrjDeliveryCompare
WPrjDeliveryDate
WPrjDeliveryTime
WPrjDescription
WPrjDescriptionLong
WPrjDFirstReg
WPrjDLink2Adv
WPrjDLink2Adv2
WPrjDLink2Car
WPrjDNeedsAdv
WPrjDNeedsAdv2
WPrjDNeedsCar
WPrjDPickup
WPrjDPickupPlace
WPrjDPickupService
WPrjDVehAU
WPrjDVehDesc
WPrjDVehHU
WPrjDVehicleID
WPrjDVehIdentNr
WPrjDVehKDLast
WPrjDVehLic
WPrjDVehLZ
WPrjEnd
WPrjExternalRef
WPrjExternalRefType
WPrjImportID
WPrjInternal
Beschreibung
Markiert Projekt als abgeschlossen
APL-Projekt Mandanten ID
Befindet sich das Projekt in einem kritischen Zustand?
Wer hat wann welchen Zustand gesetzt
Verweis auf AdressID
Reservezeit für Ersatzwagenplanung
Verweis auf KontaktID
Km-Stand aktuell
Kunde
Kennzeichen für 'Kunde wartet'
Abholort
Abholservice
Geliefert Kennzeichen
Vergleichswert für die Abholungszeit
APL-Projekt Liefertermin
die gewünschte Abholungszeit
APL-Projekt Bezeichnung
Erstzulassung
Verweis auf Annehmerjob
Verweis auf Abholungsjob
Verweis auf Ersatzwagen
Braucht Annehmer
Braucht Annehmer für Abholung
Braucht Ersatzfahrzeug
Abholung
Auslieferungsort
Auslieferungs-Service
Fzg Abgasuntersuchung
Fahrzeugbezeichnung
Fzg Hauptuntersuchung
Fahrzeug ID
Fahrgestell-Nr
Fzg Letzter Kundendienst
Kennzeichen
Fzg Letzte Zulassung
APL-Projekt Ende
Referenz auf externe ProjektID
Typ der externen Referenz
PlugIn ID des Imports
Internes Feld
Datenbank
Datentyp
int
datetime
int
datetime
text
int
int
int
int
varchar(250)
bit
varchar(250)
bit
bit
int
datetime
datetime
varchar(50)
text
datetime
int
int
int
bit
bit
bit
datetime
varchar(250)
bit
datetime
varchar(100)
datetime
int
varchar(25)
datetime
varchar(25)
datetime
datetime
int
int
int
text
98(141)
Projekt
Seite
Mobile DMS-Datenerfassung
Datenerfassung
Autor
Datum
Version
Dokument
Philipp Buser
10.09.2009
1.0
Projektdokumentation
WPrjNotOnWelcome
WPrjPicked
WPrjPickupCompare
WPrjPickupTime
WPrjProjectID
WPrjRespRessource
WPrjRespRessource2
WPrjStart
WPrjState
WPrjStatus
WPrjType
Kennzeichen 'Nicht im Empfangsdialog darstellen'
Abgeholt Kennzeichen
Vergleichswert für die Anlieferungszeit
die gewünschte Anlieferungszeit
APL-Projekt ID
APL-Projekt zuständiger Mitarbeiter
APL-Projekt zuständiger Mitarbeiter 2
APL-Projekt Start
aktueller Projektstatus
Statusinformationen zum Projekt
Projekttyp
bit
bit
int
datetime
int
int
int
datetime
int
int
int
10.1.3 Tabelle WPTJobs (Arbeitsplaner-Aufgaben)
(Arbeitsplaner
Feld
RecordID_WPTJobs
WJobAsked
WJobCompanyID
WJobConfirmed
WJobDescription
WJobGroup
WJobImportID
WJobInternal
WJobJobID
WJobOrder
WJobProjectID
WJobRefProject
WJobSplitted
WJobStatus
WJobVolume
WJobVolume2
WJobVolumeAW
Beschreibung
Bei externen Jobs - Firma kontaktiert
APL-Job Mandanten ID
Bei externen Jobs - Firma hat bestätigt
APL-Job Bezeichnung
APL-Job Gruppe
PlugIn ID des Imports
Interne Angaben
APL-Job ID
APL - Reihenfolge der Jobs
APL-Job Projekt ID
Verweis auf ein anderes Projekt (ProjectID)
APL-Job aufgeteilt in n-Jobs
aktueller Status des Jobs
APL-Job Dauer
APL-Job Arbeit
APL- Job Dauer in AW
Datentyp
int
datetime
int
datetime
varchar(50)
int
int
text
int
int
int
int
int
int
float(28)
float(28)
float(28)
10.1.4 Tabelle WPTJobAdditionals (Zusatzeinträge zu einem Job)
Feld
RecordID_WPTJobAdditionals
WJAdCompanyID
WJAdDescription
WJAdDescriptionLong
WJAdImportID
WJAdVolume
Beschreibung
MandantID
Beschreibung
Beschreibung lang
PlugIn ID des Imports
Job Dauer
Datentyp
int
int
varchar(50)
text
int
float(28)
10.1.5 Tabelle WPTAddToJob (Zuordnungstabelle zwischen Jobs und JobAdditionals)
Feld
RecordID_WPTAddToJob
WAtJAddRecID
WAtJCompanyID
WAtJJobID
WAtJProjectID
Beschreibung
Datentyp
int
int
int
int
int
Datenbank
99(141)
Projekt
Seite
Mobile DMS-Datenerfassung
Datenerfassung
Autor
Datum
Version
Dokument
Philipp Buser
10.09.2009
1.0
Projektdokumentation
10.1.6 Tabelle WPTRessources (Arbeitszeitenplaner-Ressourcen)
Feld
RecordID_WPTRessources
WResAvailFrom
WResAvailTo
WResBufferAfter
WResBufferBefore
WResCompanyID
WResDescription
WResDisabled
WResEfficiency
WResExternReff
WResImportID
WResInternal
WResIsExtern
WResLink2AdressID
WResLink2Car
WResLink2ContactID
WResLink2Staff
WResRessorceGroup
WResRessourceID
WResWorkingTimeModell
Beschreibung
Verfügbar von
Verfügbar bis
Pufferzeit nach einem Job in Minuten
Pufferzeit vor einem Job in Minuten
Mandanten ID
Bezeichnung
Deaktiviert-Kennzeichen
Leistungsindex in %
Externe Refferenz für auto Abgleiche
PlugIn ID des Imports
Internes Feld
Flag, ob es sich um eine externe Ressource handelt
Verknüpfung auf Adresse
Verknüpfung auf Fahrzeug (ID)
Verknüpfung auf Adresse
Verknüpfung zu Mitarbeiter
Ressourcegruppen ID
Ressourcen ID
Arbeitszeitenmodell ID
Datentyp
int
datetime
datetime
int
int
int
varchar(50)
bit
float(28)
int
int
text
bit
int
int
int
int
int
int
int
10.1.7 Tabelle WPTRessAndJobs (Arbeitszeitenplaner-Ressourcen
Ressourcen und Aufgaben)
Feld
RecordID_WPTRessAndJobs
WRaJCompanyID
WRaJDone
WRaJEnd
WRaJJobID
WRaJProjectID
WRaJRessourceID
WRaJStart
WRaJTime
WRaJTime2
WRaJType
Beschreibung
Jobzuteilung Mandanten ID
Auftrag erledigt in Prozent
Jobzuteilung Ende
Jobzuteilung Job ID
Jobzuteilung Projekt ID
Jobzuteilung Ressourcen ID
Jobzuteilung Beginn
Jobzuteilung Zeit verplant
Jobzuteilung Zeit verplant (Arbeit)
Internes Feld
Datentyp
int
int
int
datetime
int
int
int
datetime
float(28)
float(28)
int
10.1.8 Tabelle WPTJobGroups (Aufgabengruppen)
Feld
RecordID_WPTJobGroups
WJGrCompanyID
WJGrDescription
WJGrGroupID
WJGrSplitActive
WJGrSplitGreaterThen
WJGrSplitIndividual
WJGrSplitMax
WJGrSplitMin
Beschreibung
Arbeitsgr Mandanten ID
Arbeitsgr Bezeichnung
Arbeitsgr ID
Autosplitting
Joblänge ab dem ein Splitting erzwungen wird
Individuelles Splitverhalten für Jobgruppe
Autosplitting Max Wert
Autosplitting Min Wert
Datenbank
Datentyp
int
int
varchar(50)
int
bit
int
bit
int
int
100(141)
Projekt
Seite
Mobile DMS-Datenerfassung
Datenerfassung
Autor
Datum
Version
Dokument
Philipp Buser
10.09.2009
1.0
Projektdokumentation
10.1.9 Tabelle Adress (Adressinfos (Ort, Strasse,
Strasse ...))
Feld
AdreAccountCre
AdreAccountDe
AdreAddrId
AdreDebitorennr
AdreDefPaymentCondition
AdreEgustIdNr
AdreFahrzeuglisten
AdreGeodBreiteD
AdreGeodKey
AdreGeodLaengeD
AdreGeodUTMHoch
AdreGeodUTMRechts
AdreKontenklassenID
AdreKreditorennr
AdreLand
AdreLanguageCode
AdreLanguageCodeID
AdreNotiz
AdreOrt
AdrePaym2Discard
AdrePaymentDays1
AdrePaymentDays2
AdrePfPlz
AdrePlz
AdrePostfach
AdreRegion
AdreSearchField
AdreStrasse
AdreTaxID
AdreTown
AdreWarnstufe
AdreWebside
RecordID_Adress
10.1.10
Beschreibung
Kreditorenkonto alphanummerisch
Debitorenkonto alphanummerisch
Adressen ID
Debitorennummer
Nicht mehr benutzt
EG Ust-Id-Nr
Nicht benutzt
Kontenklassen ID
Kreditorennummer
Land
Sprachcode
Notizfeld
Ort
Nicht mehr benutzt
Nicht mehr benutzt
Nicht mehr benutzt
Plz für Postfachadresse
Postleitzahl
Postfach
Region
Suchfeld
Strasse
Steuernummer
Gebiets/Stadtangab nur in UK
Warnstufen ID
Internetseite
Datentyp
varchar(10)
varchar(10)
int
int
bit
varchar(50)
bit
varchar(50)
varchar(50)
varchar(50)
varchar(50)
varchar(50)
int
int
varchar(5)
varchar(5)
int
varchar(2000)
varchar(50)
float(28)
int
int
varchar(10)
varchar(10)
varchar(50)
varchar(50)
varchar(50)
varchar(250)
varchar(25)
varchar(50)
int
varchar(50)
int
Tabelle Ansprechpartner (Adressinfos (Name, Tel-Nr., …))
Feld
AnspAddeMail
AnspAddrId
AnspAdressInfo
AnspAnrede
AnspBriefanrede
AnspContactID
AnspCykle
AnspDied
AnspeMail
AnspFax
AnspFaxClean
AnspGeburtsdatum
AnspGruppenInfo
AnspLineOfBusiness
AnspManPostGen
AnspMobil
AnspMobilClean
AnspName
AnspNotice
Beschreibung
Zusätzliche Email Adressen
Adress ID
Postanschrift kpl.
Anrede
Briefanrede
Ansprechpartner ID
Zyklus
Deaktivierte Adresse
e-mail Adresse
Tel-Fax
Geburtsdatum
Info über zugeordnete Gruppen
Branche
Manuelle Postanschrift
Tel-Mobil
Name
Notizfeld zu Ansprechpartner
Datenbank
Datentyp
varchar(250)
int
varchar(250)
varchar(50)
varchar(250)
int
int
bit
varchar(50)
varchar(50)
varchar(50)
datetime
varchar(100)
int
bit
varchar(50)
varchar(50)
varchar(50)
varchar(2000)
101(141)
Projekt
Seite
Mobile DMS-Datenerfassung
Datenerfassung
Autor
Datum
Version
Dokument
Philipp Buser
10.09.2009
1.0
Projektdokumentation
AnspPlaceOfBirth
AnspProfession
AnspQuality
AnspSocialGroup
AnspTelAltClean
AnspTelAlternativ
AnspTelGesch
AnspTelGeschClean
AnspTelPrivat
AnspTelPrivatClean
AnspTitel
AnspVIP
AnspVorname
AnspZusatztext
RecordID_Ansprechpartner
10.1.11
Beruf
Qualität
Sozialgruppe
Tel-Alternativ
Tel-Geschäftlich
Tel-Privat
Titel
Zuordnung zu Vip-Klasse
Vorname
Zusatztext
102(141)
varchar(50)
int
varchar(50)
int
varchar(50)
varchar(50)
varchar(50)
varchar(50)
varchar(50)
varchar(50)
varchar(50)
int
varchar(50)
varchar(50)
int
Relationen
Parent Tabelle
WPTProject
WPTProject
Parent
rent Feld
WPrjCompanyID
WPrjProjectID
>
>
Child Tabelle
WPTJobs
WPTJobs
Child Feld
WJobCompanyID
WJobProjectID
Parent Tabelle
WPTJobs
WPTJobs
WPTJobs
Parent Feld
WJobCompanyID
WJobJobID
obID
WJobProjectID
>
>
>
Child Tabelle
WPTAddToJob
WPTAddToJob
WPTAddToJob
Child Feld
WAtJCompanyID
WAtJJobID
WAtJProjectID
Parent Tabelle
WPTJobs
WPTJobs
WPTJobs
Parent Feld
WJobCompanyID
WJobJobID
WJobProjectI
WJobProjectID
>
>
>
Child Tabelle
WPTRessAndJobs
WPTRessAndJobs
WPTRessAndJobs
Child Feld
WRaJCompanyID
WRaJJobID
WRaJProjectID
Parent Tabelle
WPTJobAdditionals
Child Tabelle
WPTAddToJob
Child Feld
WAtJAddRecID
WPTJobAdditionals
Parent Feld
RecordID_WPTJobAdditiona >
ls
WJAdCompanyID
>
WPTAddToJob
WAtJCompanyID
Parent Tabelle
WPTRessources
WPTRessources
Parent Feld
WResCompanyID
WResRessourceID
=
=
Child Tabelle
WPTProject
WPTProject
Child Feld
WPrjCompanyID
WPrjRespRessource
Parent Tabelle
WPTRessources
WPTRessources
Parent Feld
WResCompanyID
WResRessourceID
>
>
Child Tabelle
WPTRessAndJobs
WPTRessAndJobs
Child Feld
WRaJCompanyID
WRaJRessourceID
Parent Tabelle
WPTJobGroups
WPTJobGroups
Parent Feld
WJGrCompanyID
WJGrGroupID
=
=
Child Tabelle
WPTJobs
WPTJobs
Child Feld
WJobCompanyID
WJobGroup
Parent Tabelle
Adress
Parent Feld
AdreAddrId
>
Child Tabelle
Ansprechpartner
Child Feld
AnspAddrId
Parent Tabelle
Ansprechpartner
Ansprechpartner
Parent Feld
AnspAddrId
AnspContactID
=
=
Child Tabelle
WPTProject
WPTProject
Child Feld
WPrjDAdressID
WPrjDContactID
Datenbank
Projekt
Seite
Mobile DMS-Datenerfassung
Datenerfassung
Autor
Datum
Version
Dokument
Philipp Buser
10.09.2009
1.0
Projektdokumentation
103(141)
10.2 Mobile-Client
dm Mobile JPS (Client)
Vehicle
Jobs
Proj ect
«column»
*PK JobID: int
*pfK ProjectID: int
*pfK CompanyID: int
Description: nvarchar(50)
Group: nvarchar(50)
Order: int
Volume: float
Start: datetime
End: datetime
Time: float
Done: int
SyncFlag: bit
0..*
«column»
*PK ProjectID: int
*PK CompanyID: int
FK AddressID: int
1 FK ContactID: int
FK VehicleID: int
Description: nvarchar(50)
Responsible: nvarchar(50)
CustomerWaitung: bit
NeedsCar: bit
DeliveryDate: datetime
PickupDate: datetime
SyncFlag: bit
1
0..*
JobAdditionals
«column»
*PK JobAdditionalID: int
*pfK JobID: int
*pfK ProjectID: int
*pfK CompanyID: int
Description: nvarchar(50)
Volume: float
0..*
«column»
*PK VehicleID: int
Description: nvarchar(100)
ChassisNumber: nvarchar(25)
LicenseNumber: nvarchar(25)
CurrentMileage: int
Registration: datetime
EmissionInspection: datetime
GeneralInspection: datetime
1
LastService: datetime
LastApproval: datetime
Contact
0..*
«column»
1 *PK AddressID: int
*PK ContactID: int
Salutation: nvarchar(50)
Lastname: nvarchar(50)
Firstname: nvarchar(50)
Street: nvarchar(50)
Zip: nvarchar(10)
City: nvarchar(50)
PhonePrivate: nvarchar(50)
PhoneBusiness: nvarchar(50)
PhoneMobile: nvarchar(50)
Fax: nvarchar(50)
Email: nvarchar(50)
Website: nvarchar(50)
Birthday: datetime
CustName: nvarchar(250)
Abbildung 30:: Clientseitiges Datenbankmodell des Prototyps
Der WCF-Service
Service (JPSService) setzt Abfragen auf die Server-Datenbank
S
Datenbank ab und baut eine
Objektstruktur auf, die dem Client-Datenmodell
Client
entspricht, welches im Vergleich einfacher
aufgebaut ist. Die Tabellen Project und Jobs sind wie beim Servermodell die Tabellen WPTProject und
WPTJobs die zentralen Tabellen. Die Tabelle Contact enthält zusammengefasst die Informationen aus
Ansprechpartner und Adress.. Serverseitig stehen ProjektProjekt und Fahrzeuginformationen in der Tabelle
WPTProject,, auf dem Client habe ich die Fahrzeugdaten in eine separate Vehicle--Tabelle aufgetrennt.
Serverseitig besteht eine Aufgabe (WPTJobs)
(
aus mehreren Teilaufgaben (WPTRessAndJobs
WPTRessAndJobs), wenn
diese über einen Arbeitstag
itstag hinausgeht. Dies wird im Prototyp nicht benötigt, und die Teilaufgaben
werden zu einer einzigen Aufgabe zusammengefasst.
zusammengefasst. Das Startdatum wird dabei aus der ersten, das
Enddatum aus der letzten Teilaufgabe ermittelt.
Das Done-Feld
Feld enthält einen Prozent-Wert.
Proze
Der Wert von 100 bedeutet, die Aufgabe ist erledigt. Das
ganze Projekt ist abgeschlossen, wenn alle zugehörigen Aufgaben erledigt sind.
JobAdditionals enthält die Zusatzeinträge zu einer Aufgabe; die Zuordnungstabelle WPTAddToJob
wurde aufgelöst. Das Feld Responsible in der Tabelle Project und das Feld Group in der Tabelle Jobs
werden aus den Tabellen WPTRessources und WPTJobGroup ermittelt.
Die beiden Tabellen Project und Jobs weisen ein zusätzliches Feld SyncFlag auf. Es dient zum
Markieren von Datensätzen, die im Offline-Modus
Offline Modus geändert worden sind, damit sie später
synchronisiert werden können.
Datenbank
Projekt
Mobile DMS-Datenerfassung
Datenerfassung
Autor
Datum
Version
Dokument
Philipp Buser
10.09.2009
1.0
Projektdokumentation
Seite
104(141)
11 Architektur
Abbildung 31: Systemarchitektur
Auf der Serverseite besteht die Infrastruktur aus einem Applikationsserver für
für VIS, VCS und JPS, dem
Datenbankserver und einem Webserver mit IIS, welcher den WCF-Service
WCF Service hostet. In der Praxis wird
es wohl so sein, dass 2 oder auch alle 3 Server auf einer Maschine zusammengefasst werden.
Auf den mobilen Clientgeräten wird die Anwendung
Anwe
Mobile JPS installiert. Dieser kommuniziert im
Normalfall über eine Wireless-LAN
LAN Verbindung, bei Bedarf auch über eine Internetverbindung
Internetverbind
via
GPRS/UMTS oder Ähnlichen, mit dem Webservice.
Sicherheit
Ein korrekt eingerichtetes WLAN vorausgesetzt, findet
det die Datenübertragung im WLAN verschlüsselt
statt. Die Übertragung übers Internet muss mit einer SSL-Verschlüsselung
SSL Verschlüsselung (HTTPS) abgesichert
werden.
Die Authentifizierung erfolgt über die Geräte-ID
Geräte ID und über ein Passwort. Diese werden in der
Konfigurationsdatei des WCF-Services
Services eingetragen. Somit können nur registrierte Geräte auf den
WCF-Service zugreifen.
<appSettings>
<add key="0050BF3F517301083539
0050BF3F517301083539-690237754620" value="password1"/>
<add key="50006F0063006B0065007400500043000000
50006F0063006B0065007400500043000000-444556494345454D00" value="password2"/>
value
</appSettings>
Abbildung 32: Authentifizierung über Device-ID
Device und Passwort
Architektur
Projekt
Seite
Mobile DMS-Datenerfassung
Datenerfassung
Autor
Datum
Version
Dokument
Philipp Buser
10.09.2009
1.0
Projektdokumentation
105(141)
11.1 WCF-Service
Service (JPS Service)
class JPSServ ice
_addressID: int
_birthday: DateTime
_city: string
_contactID: int
_custName: string
_email: string
_fax: string
_firstname: string
_lastname: string
_phoneBusiness: string
_phoneMobile: string
_phonePrivate: string
_salutation: string
_street: string
_website: string
_zip: string
+
Contact()
Vehicle
-
_chassisNumber: string
_currentMileage: int
1
_description: string
_emissionInspection: DateTime
_generalInspection: DateTime
_lastApproval: DateTime
_lastService: DateTime
_licenseNumber: string
_registration: DateTime
_vehicleID: int
+
Vehicle()
JobAdditional
JobAdditional()
«property»
+ Description() : string
+ JobAdditionalID() : int
+ JobID() : int
+ Volume() : double
+
+
Credentials()
Credentials(string, string)
+
+
+
+
+
+
+
+
CompleteJob(int, int, int, Credentials) : bool
CompleteJobs(List<Job>, Credentials) : bool
CompleteProject(Project, Credentials) : bool
GetAllProjects(Credentials) : List<Project>
GetChangedProjects(DateTime, Credentials) : List<Project>
GetProject(int, Credentials) : Project
IsAvailable() : bool
Login(Credentials) : Credentials
-
_addressID: int
_companyID: int
_contact: Contact
_contactID: int
_customerWaiting: bool
_deliveryDate: DateTime
_description: string
_externalRef: int
_jobs: List<Job>
_needsCar: bool
_pickupDate: DateTime
_projectID: int
_responsible: string
_vehicle: Vehicle
_vehicleID: int
+
+
+
+
+
+
+
+
CompleteJob(int, int, int, Credentials) : bool
CompleteJobs(List<Job>, Credentials) : bool
CompleteProject(Project, Credentials) : bool
GetAllProjects(Credentials) : List<Project>
GetChangedProjects(DateTime, Credentials) : List<Project>
GetProject(int, Credentials) : Project
IsAvailable() : bool
Login(Credentials) : Credentials
+
Project()
JPSServ ice
«property»
+ AddressID() : int
+ CompanyID() : int
+ Contact() : Contact
+ ContactID() : int
+ CustomerWaiting() : bool
+ DeliveryDate() : DateTime
+ Description() : string
+ ExternalRef() : int
+ Jobs() : List<Job>
+ NeedsCar() : bool
+ PickupDate() : DateTime
+ ProjectID() : int
+ Responsible() : string
+ Vehicle() : Vehicle
+ VehicleID() : int
DataSetAccess
+
+
+
+
+
+
+
+
-
CompleteJob(int, int, int) : bool
CompleteJobs(List<Job>) : bool
CompleteProject(Project) : bool
GetAllProjects() : List<Project>
GetChangedProjects(DateTime) : List<Project>
GetContact(int, int) : Contact
GetJobAdditionals(int, int, int) : List<JobAdditional>
GetJobs(int, int) : List<Job>
GetProject(int) : Project
GetProject(DataSetWPTProject.WPTProjectRow) : Project
DataSetWPTProj ect
DataSetWPTJob
0..*
Job
«property»
+ ChassisNumber() : string
+ CurrentMileage() : int
+ Description() : string
+ EmissionInspection() : DateTime
+ GeneralInspection() : DateTime
+ LastApproval() : DateTime
+ LastService() : DateTime
+ LicenseNumber() : string
+ Registration() : DateTime
+ VehicleID() : int
+
_deviceID: string = ""
_password: string = ""
Proj ect
1
_description: string
_jobAdditionalID: int
_jobID: int
_volume: double
-
«property»
+ DeviceID() : string
+ Password() : string
«property»
+ AddressID() : int
+ Birthday() : DateTime
+ City() : string
+ ContactID() : int
+ CustName() : string
+ Email() : string
+ Fax() : string
+ Firstname() : string
+ Lastname() : string
+ PhoneBusiness() : string
+ PhoneMobile() : string
+ PhonePrivate() : string
+ Salutation() : string
+ Street() : string
+ Website() : string
+ Zip() : string
-
«interface»
IJPSServ ice
Credentials
Contact
-
0..*
-
_companyID: int
_description: string
_done: int
_end: DateTime
_group: string
_jobAdditionals: List<JobAdditional>
_jobID: int
_order: int
_projectID: int
_start: DateTime
_time: double
_volume: double
+
Job()
DataSetWPTJobAdditionals
DataSetAdress
«property»
+ CompanyID() : int
+ Description() : string
+ Done() : int
+ End() : DateTime
+ Group() : string
+ JobAdditionals() : List<JobAdditional>
+ JobID() : int
+ Order() : int
+ ProjectID() : int
+ Start() : DateTime
+ Time() : double
+ Volume() : double
Abbildung 33:: Klassendiagramm JPSService
Der Zugriff auf die Datenbank erfolgt
erfolgt über DataSets. In ihnen sind alle benötigten SQL-Abfragen
SQL
definiert. Die Klasse JPSService implementiert die Methoden des Webservices und verwendet die
DataSetAccess-Klasse,
Klasse, welche den Zugriff auf die DataSets kapselt.
Architektur
Projekt
Mobile DMS-Datenerfassung
Datenerfassung
Autor
Datum
Version
Dokument
Philipp Buser
10.09.2009
1.0
Projektdokumentation
Seite
106(141)
Die links abgebildeten Datenbehälter-Klassen
Datenbehäl
entsprechen (mit Ausnahme der Credentials-Klasse)
Credentials
den Tabellen der Client- Datenbank. Sie werden in DataSetAccess abgefüllt und dann vom
Webservice als serialisierte Objekte dem Client übermittelt.
11.2 Mobile Anwendung (Mobile JPS)
Die Anwendung fürs
rs mobile Gerät besteht von der Logik her aus den hier abgebildeten Bereichen
und Ebenen.
Abbildung 34: Schichtenarchitektur derr mobilen Anwendung
Der gestrichelt eingezeichnete Application Layer ist nicht ein vollwertiger Business
siness-Layer. Er besteht
lediglich aus den Business Entities, welches gleichzeitig die Proxy-Objekte
Proxy Objekte des Webservices sind und
einer Hilfsklasse Global, welche unter anderem für den Datenbankzugriff, für den Webservice und für
die Synchronisation je ein Singleton
gleton-Objekt zur Verfügung stellt.
Die einzelnen Klassen der verschiedenen Schichten sind in den 3 folgenden Klassendiagrammen
abgebildet.
Architektur
Projekt
Seite
Mobile DMS-Datenerfassung
Datenerfassung
Autor
Datum
Version
Dokument
Philipp Buser
10.09.2009
1.0
Projektdokumentation
107(141)
11.2.1 Forms und Controls
class Forms und Controls
Form
UserControl
StartForm
+
-
JobsControl
_connectionsCount: SystemState
_timer: Timer
buttonBackspace_Click(object, EventArgs) : void
buttonClear_Click(object, EventArgs) : void
buttonNumber_Click(object, EventArgs) : void
ConnectionsCount_Changed(object, ChangeEventArgs) : void
menuItemExit_Click(object, EventArgs) : void
menuItemInfo_Click(object, EventArgs) : void
menuItemOffline_Click(object, EventArgs) : void
menuItemOk_Click(object, EventArgs) : void
menuItemOptions_Click(object, EventArgs) : void
menuItemOrientation_Click(object, EventArgs) : void
menuItemSync_Click(object, EventArgs) : void
StartForm()
StartForm_Acti vated(object, EventArgs) : void
StartForm_Load(object, EventArgs) : void
T imer_T ick(object, EventArgs) : void
-
_currentProject: Project
+
+
-
CheckAll() : void
checkBoxCompleteProject_CheckStateChanged(object, EventArgs) : void
comboBoxFilter_SelectedIndexChanged(object, EventArgs) : void
JobsControl()
JobsControl_Paint(object, PaintEventArgs) : void
listViewJobs_ItemActivate(object, EventArgs) : void
listViewJobs_ItemCheck(object, ItemCheckEventArgs) : void
menuItemComplete_Click(object, EventArgs) : void
menuItemDetails_Click(object, EventArgs) : void
Populate(Project) : void
PopulateListView(Global.FILTER) : void
ShowJobDetailForm() : void
UncheckAll() : void
«property»
+ ClosedJobs() : List<Job>
1 + CurrentProject() : Project
+ ProjectClosed() : bool
Form
UserControl
MainForm
CustomerControl
-
_externalRef: int
+
+
-
MainForm()
MainForm_Activated(object, EventArgs) : void
MainForm_Load(object, EventArgs) : void
menuItemAction_Click(object, EventArgs) : void
menuItemChangeProject_Cli ck(object, EventArgs) : void
menuItemExit_Click(object, EventArgs) : void
menuItemInfo_Click(object, EventArgs) : void
menuItemOffline_Click(object, EventArgs) : void
menuItemOptions_Click(object, EventArgs) : void
menuItemOrientation_Click(object, EventArgs) : void
menuItemRefresh_Click(object, EventArgs) : void
menuItemSync_Click(object, EventArgs) : void
OnHibernate(object, EventArgs) : void
Populate() : void
tabControlMain_SelectedIndexChanged(object, EventArgs) : void
1 +
+
_phoneHandler: IPhoneHandler = null
buttonEmail _Click(object, EventArgs) : void
buttonPhone_Click(object, EventArgs) : void
buttonSMS_Click(object, EventArgs) : voi d
CustomerControl()
Populate(Contact) : void
UserControl
VehicleControl
1
+
+
Populate(Vehicle) : void
VehicleControl()
«property»
+ ExternalRef() : int
UserControl
DateControl
1
+
+
Form
DateControl()
Populate(Project) : void
JobDetailForm
-
_currentJob: Job
+
+
JobDetailForm()
JobDetailForm_Paint(object, PaintEventArgs) : voi d
li stViewAdditionals_ItemActivate(obj ect, EventArgs) : void
menuItemClose_Click(object, EventArgs) : void
menuItemComplete_Click(object, EventArgs) : void
Populate(Job) : void
Global
Form
OptionsForm
+
-
buttonBrowseDatabase_Click(object, EventArgs) : void
buttonCreate_Click(object, EventArgs) : void
buttonReFill_Click(object, EventArgs) : void
buttonRestoreDefaults_Click(object, EventArgs) : void
buttonServiceTest_Click(object, EventArgs) : void
checkBoxStandard_CheckStateChanged(object, EventArgs) : void
LoadSettings() : void
OptionsForm()
OptionsForm_Closing(object, Cancel EventArgs) : void
OptionsForm_Load(object, EventArgs) : void
SaveSettings() : void
+
_dataAccess: IDataAccess = null
_mainForm: MainForm
_online: bool = false
_service: Service = new Service()
_settings: Settings = new Settings(Se...
_startForm: StartForm
_sync: Sync = new Sync()
NULLDATE: DateTime = new DateT ime(20... {readOnly}
+
+
+
+
+
CheckIfOnline(bool) : bool
CreateDataObject() : void
Global()
HandleError(object, Exception) : void
HandleError(object, Exception, string) : void
ShowMainForm(int) : MainForm
ShowStartForm() : StartForm
«property»
+ DataAccess() : IDataAccess
+ Online() : bool
+ Service() : Service
+ Settings() : Settings
+ Sync() : Sync
InfoForm
SettingKeys
Form
-
_errorMessage: string = string.Empty
+
-
ErrorForm()
ErrorForm_Load(object, EventArgs) : void
«property»
+ ErrorMessage() : string
-
_display: string
_value: object
+
ComboBoxItem(string, object)
Global::ComboBoxItem
«property»
+ Display() : string
+ Value() : object
OpenJobs
ClosedJobs
AllJobs
InfoForm()
InfoForm_Load(object, EventArgs) : void
ErrorForm
Mai n() : void
«enumeration»
FILTER
Form
+
-
Program
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
DatabaseCreated: string = "DatabaseCreated"
DatabaseLocation: string = "DatabaseLocation"
DatabasePassword: string = "DatabasePassword"
DatabaseUseDefault: stri ng = "DatabaseUseDefault"
Debug: string = "Debug"
LandscapeOrientation: string = "LandscapeOrien...
RefreshInterval: string = "RefreshInterval"
RefreshLastCompl eted: string = "RefreshLastCom...
RefreshWhenOnline: string = "RefreshWhenOnline"
RefreshWiFiRequired: string = "RefreshWiFiReq...
ServiceLocation: string = "ServiceLocation"
ServiceMaxReceivedMessageSize: string = "ServiceMaxRece...
ServicePassword: string = "ServicePassword"
ServiceT imeout: string = "Servi ceT imeout"
WorkOffline: string = "WorkOffline"
+
Values: string ([,]) = {
SettingDefaults
Abbildung 35:: Klassendiagramm Forms und Controls
Architektur
...
Projekt
Seite
Mobile DMS-Datenerfassung
Datenerfassung
Autor
Datum
Version
Dokument
Philipp Buser
10.09.2009
1.0
Projektdokumentation
108(141)
11.2.2 DataAccess und Service
rvice
class DataAccess und Serv ice
Global
«interface»
IDataAccess
+
+
+
+
+
+
+
Close() : void
CompleteJob(int, int, int) : void
CompleteJobs(List<Job>) : void
CompleteProject(Project) : void
ExistsProject(int) : bool
GetProject(int, bool) : Project
GetProjects(bool) : List<Project>
«property»
+ Local() : LocalStorage
DataOffline
_local: LocalStorage = new LocalStorage()
-
_local: LocalStorage = new LocalStorage()
+
+
+
+
+
+
+
+
Close() : void
CompleteJob(int, int, int) : void
CompleteJobs(List<Job>) : void
CompleteProject(Project) : void
DataOffline()
ExistsProject(int) : bool
GetProject(int, bool) : Project
GetProjects(bool) : List<Project>
+
+
+
+
+
+
+
+
Close() : void
CompleteJob(int, int, int) : void
CompleteJobs(List<Job>) : void
CompleteProject(Project) : void
DataOnline()
ExistsProject(int) : bool
GetProject(int, bool) : Project
GetProjects(bool) : List<Project>
«property»
+ Local() : LocalStorage
+
+
+
+
+
CheckIfOnline(bool) : bool
CreateDataObject() : void
Global()
HandleError(object, Exception) : void
HandleError(object, Exception, string) : void
ShowMainForm(int) : MainForm
ShowStartForm() : StartForm
JPS::Credentials
«property»
+ Local() : LocalStorage
1
_dataAccess: IDataAccess = null
_mainForm: MainForm
_online: bool = false
_service: Service = new Service()
_settings: Settings = new Settings(Se...
_startForm: StartForm
_sync: Sync = new Sync()
NULLDATE: DateTime = new DateTime(20... {readOnly}
«property»
+ DataAccess() : IDataAccess
+ Online() : bool
+ Service() : Service
+ Settings() : Settings
+ Sync() : Sync
DataOnline
-
+
JPS::Contact
1
LocalStorage
-
_command: SqlCeCommand
_connection: SqlCeConnection
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
CleanSyncFlags(Project) : void
CleanSyncFlags(List<Project>) : void
CleanSyncFlags(List<Job>) : void
Close() : void
CompleteJob(int, int, int, bool) : void
CompleteJobs(List<Job>, bool) : void
CompleteProject(Project, bool) : void
CreateAllTables() : void
CreateContactTable() : void
CreateDatabase() : void
CreateJobAdditionalsTable() : void
CreateJobsTable() : void
CreateProjectTable() : void
CreateVehicleTable() : void
DeleteDatabase() : void
Execute(string) : SqlCeDataReader
Execute(string, string) : DataSet
ExecuteNonQuery(string) : int
ExecuteScalar(string) : object
ExecuteScalarInt(string) : int
ExecuteScalarString(string) : string
ExistsContact(int, int) : bool
ExistsJob(int, int, int) : bool
ExistsJobAdditional(int, int) : bool
ExistsProject(int) : bool
ExistsVehicle(int) : bool
GetAdapter(string) : SqlCeDataAdapter
GetCommand() : SqlCeCommand
GetContact(int, int) : Contact
GetJobAdditionals(int) : List<JobAdditional>
GetJobs(int, int) : List<Job>
GetProject(int) : Project
GetProject(int, int) : Project
GetUpdatedJobs() : List<Job>
GetUpdatedProjects() : List<Project>
GetVehicle(int) : Vehicle
HandleError(Exception) : void
HasUpdatedJobs(int, int) : bool
IsUpdatedProject(int, int) : bool
LocalStorage()
OpenConnection() : void
ReadJob(SqlCeDataReader) : Job
ReadProject(SqlCeDataReader) : Project
StoreContact(Contact, bool) : void
StoreJob(Job, bool) : void
StoreJobAdditional(JobAdditional, bool) : void
StoreJobAdditionals(List<JobAdditional>, bool) : void
StoreJobs(List<Job>, bool) : void
StoreProject(Project, bool) : void
StoreProjects(List<Project>, bool) : void
StoreVehicle(Vehicle, bool) : void
UpdateContact(Contact) : void
UpdateJob(Job) : void
UpdateJobAdditional(JobAdditional) : void
UpdateProject(Project) : void
UpdateVehicle(Vehicle) : void
JPS::Project
1
JPS::Vehicle
1
0..*
JPS::Job
JPS::JobAdditional
0..*
Serv ice
_credentials: Credentials
_JPSService: JPSServiceClient
-
_isRunning: bool = false
_thread: Thread
+
+
+
+
+
+
+
+
+
+
CompleteJob(int, int, int) : bool
CompleteJobs(List<Job>) : bool
CompleteProject(Project) : bool
CreateServiceObject(bool) : void
GetChangedProjects(DateTime) : List<Project>
GetProject(int) : Project
GetProjects() : List<Project>
HandleError(Exception) : void
InitCredentials() : void
IsAvailable() : bool
Login() : bool
Service()
+
+
+
+
Conflicts(Project, Project) : bool
CopyProject(Project, Project) : Project
Sync()
SyncAll() : void
SyncAllInThread() : void
SyncProject(int) : int
«property»
+ Credentials() : Credentials
+ MaxReceivedMessageSize() : int
+ Timeout() : int
+ Url() : string
«property»
+ ConnectionString() : string
+ Exists() : bool
+ FileName() : string
Sync
-
Abbildung 36:: Klassendiagramm DataAccess und Service
Architektur
«property»
+ LastCompletedSync() : DateTime
+ RefreshInterval() : int
Projekt
Seite
Mobile DMS-Datenerfassung
Datenerfassung
Autor
Datum
Version
Dokument
Philipp Buser
10.09.2009
1.0
Projektdokumentation
109(141)
11.2.3 Library
class Library
«enumeration»
DisplayMode
DisplayInfo
-
designDpiX: float = 96.0F
designDpiY: float = 96.0F
maxSimpleDisplayRatio: float = 1.3F
minSimpleDisplayRatio: float = 0.8F
+
+
GetDisplayMode() : DisplayMode
GetDisplayRatios(Control, float*, float*) : void
-
SPI_GETPLATFORMTYPE: uint = 257
-
SystemParametersInfo(uint, uint, StringBuilder, uint) : void
Portrait
Landscape
Simple
PlatformInfo
Settings
«property»
+ IsAPhone() : bool
+ IsPocketPc() : bool
+ IsSmartPhone() : bool
- SystemTypeString() : string
Dev iceID
-
ERROR_INSUFFICIENT_BUFFER: Int32 = 0x7A
ERROR_NOT_SUPPORTED: Int32 = 0x32
FILE_ANY_ACCESS: Int32 = 0
FILE_DEVICE_HAL: Int32 = 0x00000101
IOCTL_HAL_GET_DEVICEID: Int32 = ((FILE_DEVICE_H...
METHOD_BUFFERED: Int32 = 0
+
-
GetDeviceID() : string
KernelIoControl(Int32, IntPtr, Int32, byte[], Int32, Int32*) : bool
-
_autoWrite: bool = true
_defaultValues: string ([,])
_filePath: string = ""
_list: Hashtable = new Hashtable()
+
+
+
+
+
+
+
+
+
GetBool(string) : bool
GetFilePath() : string
GetInt(string) : int
GetString(string) : string
Read() : void
RestoreDefaults() : void
Settings()
Settings(string[,])
SetValue(string, object) : void
Write() : void
«property»
+ AutoWrite() : bool
+ FilePath() : string
«interface»
IPhoneHandler
+
ManagedPhoneHandler
MakeCall(string) : void
PhoneHandlerFactory
+
GetPhoneHandler() : IPhoneHandler
Nativ ePhoneHandler
-
MakeCall(string) : void
-
MakeCall(string) : void
-
PMCF_DEFAULT: long = 0x00000001
PMCF_PROMPTBEFORECALLING: long = 0x00000002
+
-
MakeCall(string, bool) : void
PhoneMakeCall(PhoneMakeCallInfo*) : IntPtr
NullPhoneHandler
-
MakeCall(string) : void
«struct»
Nativ eFunctionHelper::
PhoneMakeCallInfo
Nativ eFunctionHelper
+
+
+
+
+
+
cbSize: IntPtr
dwFlags: IntPtr
pszAppName: IntPtr
pszCalledParty: IntPtr
pszComment: IntPtr
pszDestAddress: IntPtr
Abbildung 37:: Klassendiagramm Library
Architektur
SimpleEncrypt
+
+
-
Decrypt(string) : string
Encrypt(string) : string
SimpleEncrypt()
+
+
LogErrors(Exception) : void
SQLEncode(string) : string
Tools
Projekt
Seite
Mobile DMS-Datenerfassung
Datenerfassung
Autor
Datum
Version
Dokument
Philipp Buser
10.09.2009
1.0
Projektdokumentation
110(141)
11.3 Sequenzdiagramme
Ein Hinweis vorweg: Der
er Zugriff auf LocalStorage, Sync und Service erfolgt jeweils über ein SingletonSingleton
Objekt der Global-Klasse.. Dies ist in den folgenden Sequenzdiagrammen nicht ersichtlich.
11.3.1 Starten der Applikation
sd Starten der Applikation
:Global
:StartForm
:LocalStorage
:DisplayInfo
:Sync
ShowStartForm()
Show()
StartForm_Load()
Exists()
opt
[Datenbank existiert nicht]
CreateDatabase()
CreateAllTabels()
:SystemState
new()
:Timer
new()
StartForm_Activated()
CheckIfOnline()
GetDisplayMode()
Changed()
loop
ConnectionCount_Changed()
StartForm_Activated()
CheckIfOnline()
GetDisplayMode()
loop
Tick()
Timer_Tick()
SyncAllInThread()
Abbildung 38:: Sequenzdiagramm Starten der Applikation
Architektur
Projekt
Seite
Mobile DMS-Datenerfassung
Datenerfassung
Autor
Datum
Version
Dokument
Philipp Buser
10.09.2009
1.0
Projektdokumentation
111(141)
Beim Starten der Applikation werden folgende Aktionen ausgeführt:
•
•
•
•
•
•
Das Startfenster wird angezeigt.
Es wird überprüft ob die lokale Datenbank existiert und falls nicht, wird sie erstellt.
Der Eventhandler für den Verbindungsstatus wird registriert. Der Eventhandler wird
ausgelöst, sobald
bald sich die Anzahl der Verbindungen ändert.
Der Timer für die Synchronisierung wird initialisiert. Bei jedem Tick-Event
Event wird die
Synchronisierung in einem neuen Thread gestartet.
Es wird überprüft ob sich die Applikation im OnlineOnline oder Offline-Modus
Modus befindet
bef
(siehe
Kapitel 12.4).
Die Displayorientierung (Hoch-/Querformat)
(Hoch
wird ermittelt
11.3.2 Aufrufen eines Projekts
Nach Eingabe der Projektnummer wird überprüft, ob das dazugehörige Projekt existiert. Diese
Überprüfung erfolgt über das Interface IDataAccess,, welches je nach Verbindungsstatus entweder
vom Typ DataOnline oder DataOffline ist und die Anfrage entsprechend an den Webservice oder an
die lokale Datenbank stellt (im Sequenzdiagramm nicht abgebildet, aber ähnlich wie im nächsten
nächs
Kapitel beschrieben).
Ist das Projekt vorhanden, wird es falls nötig und möglich zuerst synchronisiert (für
(für Details siehe
Sequenzdiagramm von Kapitel 0)). Danach wird das Hauptfenster initialisiert, das Projekt geladen
(wiederum über IDataAccess)) und schliesslich dargestellt.
sd Aufrufen eines Proj ekts
:StartForm
«interface»
:Sync
:Global
:MainForm
IDataAccess
menuItemOk_Click()
ExistsProject()
opt
SyncProject()
[Projekt existiert]
ShowMainForm()
GetProject()
Populate()
Show()
Abbildung 39: Sequenzdiagramm Aufrufen eines Projekts
Architektur
Projekt
Seite
Mobile DMS-Datenerfassung
Datenerfassung
Autor
Datum
Version
Dokument
Philipp Buser
10.09.2009
1.0
Projektdokumentation
112(141)
11.3.3 Abschliessen einer Aufgabe
Es gibt mehrere Möglichkeiten,
en, eine Aufgabe abzuschliessen:
1. In der Aufgabenliste können über
über die Checkboxen eine oder mehrere Aufgaben als
abgeschlossen markiert werden. Das Betätigen der Abschliessen-Taste
Taste führt die Aktion dann
definitiv aus.
2. Eine ausgewählte Aufgabe kann übers Kontextmenü abgeschlossen werden.
3. Eine Aufgabe kann in der Aufgaben-Detailansicht
Aufga
mit der Abschliessen-Taste
Taste abgeschlossen
werden.
Im folgenden Sequenzdiagramm ist Variante 2 dargestellt.
sd Abschliessen einer Aufgabe
:JobsControl
:DataOnline
:DataOffline
:LocalStorage
:Service
menuItemComplete_Click()
alt
CompleteJob()
[Online]
CompleteJob()
CompleteJob()
GetProject()
GetProject()
[Offline]
CompleteJob()
CompleteJob()
GetProject()
GetProject()
Populate()
Abbildung 40:: Sequenzdiagramm Abschliessen einer Aufgabe
Der Zugriff auf DataOnline oder DataOffline geschieht eigentlich über das IDataAccess-Interface,
IDataAccess
welches je nach Verbindungsstatus vom entsprechenden Typ ist.
Die CompleteJob-Methode
Methode setzt im Offline-Modus
Offline Modus das SyncFlag, um eine Aufgabe für die spätere
Synchronisierung zu kennzeichnen.
Architektur
Projekt
Mobile DMS-Datenerfassung
Datenerfassung
Autor
Datum
Version
Dokument
Philipp Buser
10.09.2009
1.0
Projektdokumentation
Seite
113(141)
11.3.4 Synchronisierung
Beim Synchronisieren werden folgende Aktionen ausgeführt:
•
•
•
•
Es wird überprüft, ob lokal aktualisierte Aufgaben
Aufgaben und Projekte vorhanden sind. Dazu wird
das SyncFlag abgefragt.
Es wird überprüft, ob ein Konflikt zwischen dem Projekt auf dem Server und dem lokalen
Projekt besteht. In
n Kapitel 12.6 ist beschrieben wie die Konflikterkennung stattfindet.
stattfindet
Die Änderungen werden zum Server übertragen.
Neue oder geänderte Projekte werden vom Server geladen.
tweder ein einzelnes Projekt oder alle Projekte synchronisiert werden.
Je nach Situation können entweder
Bei der automatischen Synchronisierung, welche in einem regelmässigen Intervall ausgeführt wird,
erfolgt die Synchronisierung in einem separaten Thread.
sd Synchronisierung
:Sync
:LocalStorage
:Service
SyncAll()
GetUpdatedProjects()
*SyncProject()
GetProject()
GetProject()
Conflicts()
alt
[Kein Konflikt vorhanden]
CompleteProject()
CleanSyncFlags()
[Konflikt vorhanden]
StoreProject()
CleanSyncFlags()
GetChangedProjects()
StoreProjects()
Abbildung 41:: Sequenzdiagramm Synchronisierung
Analog zum obigen Ablauf werden nicht nur die abgeschlossenen Projekte sondern auch einzelne
abgeschlossene Aufgaben synchronisiert.
Architektur
Projekt
Mobile DMS-Datenerfassung
Datenerfassung
Autor
Datum
Version
Dokument
Philipp Buser
10.09.2009
1.0
Projektdokumentation
Seite
114(141)
12 Implementationsdetails
In diesem Kapitel werden einige ausgewählte Themen aus
aus der Implementation anhand von
Codeausschnitten beschrieben.
12.1 Userinterface
Windows Mobile-Geräte
Geräte gibt es in vielen verschiedenen
Ausführungen, und es kommen kontinuierlich neue auf den
Markt. Um sicherzustellen, dass eine Anwendung einwandfrei auf
allen Windows Mobile-Geräten
Geräten funktioniert, muss die
Benutzeroberfläche einer Anwendung so entworfen werden, dass
sie sich an die unterschiedlichen Grössen, Formen und
Auflösungen der Displays anpasst. Zur Erleichterung dieser
Aufgabe enthält .NET Compact Framework
Framewo mehrere Funktionen,
die die Erstellung anpassungsfähiger Benutzeroberflächen
vereinfachen.
Docking, Anchoring, Scrolling
Besonders hervorzuheben sind in diesem Bereich die Funktionen
Andocken und Verankerung für Steuerelemente. Andocken und
Verankerung ermöglichen die Vorgabe von Standardverhalten bei
der Reaktion einer Anwendung auf Änderungen im
Anzeigebereich.
Das Andocken eines
Steuerelements richtet dieses
am Rand des ihm
Abbildung 42:: Am linken Rand des
übergeordneten
Steuerelements aus. Wird z.B. übergeordneten Steuerelements
angedocktes Steuerelement auf einem
ein Steuerelement am linken
Hochformat- und einem
Rand des übergeordneten
Querformatdisplay
Elements angedockt, so
platziert es sich entlang der linken Kante und füllt dort die ganze
Fläche aus (siehe Abbildung 42).
). Bewirken Unterschiede in der
Geräteausführung eine Änderung der Grösse des übergeordneten
übergeord
Steuerelements, ändert sich die Grösse des angedockten
Steuerelements automatisch, sodass dieses weiterhin am linken
Rand des übergeordneten Steuerelements ausgerichtet bleibt.
Bei der Verankerung eines Steuerelements wird vorgegeben, dass
eine oderr mehrere seiner Kanten in einer festgelegten Entfernung
von der bzw. den entsprechenden Kanten des übergeordneten
Steuerelements verbleiben sollen. Unterschiede in der
Displaygrösse veranlassen das Steuerelement, automatisch seine
Grösse und ggf. seine Position
sition zu ändern, sodass die festgelegte
Abbildung 43: An der linken, rechten
und unteren Kante des übergeordneten Entfernung zwischen der/den verankerten Kante/n von
Steuerelements verankertes
der/denen des übergeordneten Steuerelements beibehalten
beib
Steuerelement auf einem Hochformat-wird.
und einem Querformatdisplay
Implementationsdetails
Projekt
Mobile DMS-Datenerfassung
Datenerfassung
Autor
Datum
Version
Dokument
Philipp Buser
10.09.2009
1.0
Projektdokumentation
Seite
115(141)
In einigen Fällen ist eine Grössenänderung oder eine Verschiebung von Steuerelementen evtl.
unpraktisch.
isch. Dies kommt normalerweise vor, wenn eine Anwendung eine Anzahl Steuerelemente
hat, die bei geänderter Grösse zu klein werden könnten, als dass der Benutzer noch vernünftig damit
interagieren könnte. In diesem Fall ist es besser, dem Benutzer einen Bildlauf
Bildlauf zur Anzeige von
Steuerelementen anzubieten, die ausserhalb des Displays liegen. Dafür sind bei .NET Compact
Framework keine besonderen Arbeiten erforderlich.
erforderl
.NET Compact Framework erkennt automatisch,
ob eines der Steuerelemente aufgrund der Displaygrösse
Displaygrösse nicht angezeigt wird, und fügt dem
Anwendungsformular nach Bedarf Bildlaufleisten hinzu. .NET Compact Framework stellt ausserdem
die gesamte Handhabung der Bildlaufleiste bereit. Daher ist ein Bildlauf möglich, ohne dass eine
besondere Verarbeitung durch die Anwendung erforderlich ist.
Trotz dieser Hilfen von .NET Compact Framework gibt es natürlich Fälle, wo das Layout
programmatisch vorgenommen werden muss, so zum Beispiel beim Anpassen der Spaltenbreiten in
einer ListView,, wenn diese abhängig von der Auflösung unterschiedlich breit sein sollen. Die
Implementierung
ierung erfolgt am besten im Paint-Eventhandler.
Paint
/// <summary>
/// Passt die Breite der Bezeichnung-Spalte
Bezeichnung
in der ListView an
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void JobsControl_Paint(object
JobsControl_Paint(
sender, PaintEventArgs e)
{
//Spaltenbreite abhängig von der Breite der ListView
this.listViewJobs.Columns[2].Width
.listViewJobs.Columns[2].Width = this.listViewJobs.Width this.listViewJobs.Columns[0].Width
.listViewJobs.Columns[0].Width this.listViewJobs.Columns[1].Width
istViewJobs.Columns[1].Width this.listViewJobs.Columns[3].Width
.listViewJobs.Columns[3].Width - 30;
//Header im Querformat ausblenden
if (DisplayInfo.GetDisplayMode()
.GetDisplayMode() == DisplayMode.Landscape)
this.listViewJobs.HeaderStyle
.listViewJobs.HeaderStyle = ColumnHeaderStyle.None;
else
this.listViewJobs.HeaderStyle
.listViewJobs.HeaderStyle = ColumnHeaderStyle.Nonclickable;
}
Quellcode 9:: Programmatische Layoutanpassungen im Paint-Eventhandler
Paint
12.2 Setttings
.NET Compact Framework bietet keine direkte Unterstützung von XML-Konfiguratio
XML Konfigurationsdateien wie
man es vom herkömmlichen .NET Framework kennt. Die Settings-Klasse
Klasse füllt genau diese Lücke aus,
damit die Einstellungen im gewohnten Stil gespeichert und geladen werden können.
<?xml version="1.0" encoding="utf
utf-8" ?>
<configuration>
<appSettings>
<add key="ServiceTimeout" value="15"
value
/>
<add key="ServiceMaxReceivedMessageSize
ServiceMaxReceivedMessageSize" value="1048576" />
<add key="DatabasePassword"
" value="" />
<add key="ServiceLocation" value="http://10.168.100.62/JPSService/JPSService.svc/basic
http://10.168.100.62/JPSService/JPSService.svc/basic" />
<add key="WorkOffline" value="True"
value
/>
<add key="Debug" value="True
True" />
<add key="RefreshWiFiRequired
RefreshWiFiRequired" value="True" />
<add key="RefreshLastCompleted
RefreshLastCompleted" value="03.09.09 16:52:41" />
<add key="LandscapeOrientation
LandscapeOrientation" value="90" />
<add key="DatabaseLocation"
" value="" />
<add key="CompanyID" value=
="1" />
<add key="ServicePassword" value="dGVzdA==" />
<add key="RefreshWhenOnline
RefreshWhenOnline" value="True" />
<add key="DatabaseCreated" value="22.08.09 17:52:48" />
Implementationsdetails
Projekt
Mobile DMS-Datenerfassung
Datenerfassung
Autor
Datum
Version
Dokument
Philipp Buser
10.09.2009
1.0
Projektdokumentation
Seite
116(141)
<add key="DatabaseUseDefault
Default" value="True" />
<add key="RefreshInterval" value="120" />
</appSettings>
</configuration>
Abbildung 44: XML-Konfigurationsdatei
Konfigurationsdatei
//Speichern
Global.Settings.SetValue(SettingKeys
SettingKeys.DatabaseLocation, this.textBoxDatabase.Text);
ase.Text);
//Laden
this.textBoxDatabase.Text = Global.Settings.GetString(SettingKeys.DatabaseLocation);
Global
.DatabaseLocation);
Quellcode 10:: Speichern und Laden von Settings
12.3 Webservice
Wie in Kapitel 5.6.2 beschrieben können
kön
die Proxy-Klassen zum Webservice mit dem Tool
NetCFSvcUtil.exe generiert werden. Dabei werden die beiden Dateien CFClientBase.cs und
JPSService.cs erzeugt. Die von mir erstellte Datei JPSServiceClient.cs erweitert die JPSServiceClientKlasse aus JPSService.cs
vice.cs um eine neue Binding-Methode,
Binding Methode, welche die maximale Nachrichtengrösse
(MaxReceivedMessageSize) mitberücksichtigt.
mitberücksichtigt
/// <summary>
/// Ergänzt JPSService.cs
/// </summary>
public partial class JPSServiceClient :
Microsoft.Tools.ServiceModel.CFClientBas
CFClientBase<IJPSService>, IJPSService
{
/// <summary>
/// JPSServerBinding erstellen
/// </summary>
/// <returns>Binding</returns>
</returns>
public static System.ServiceModel.Channels.Binding
System.ServiceModel.Channels.
CreateJPSServiceBinding()
{
System.ServiceModel.Chan
System.ServiceModel.Channels.CustomBinding
binding =
new System.ServiceModel.Channels.CustomBinding();
System.ServiceModel.Channels.
binding.Elements.Add(
new System.ServiceModel.Channels.TextMessageEncodingBindingElement
System.ServiceModel.Channels.TextMessageEncodingBindingElement(
System.ServiceModel.Channels.
System.ServiceModel.Channels.MessageVersion.Soap11,
System.Text.Encoding
Encoding.UTF8));
System.ServiceModel.Channels.HttpTransportBindingElement transportBinding =
System.ServiceModel.Channels.
new System.ServiceModel.Channels.HttpTransportBindingElement();
System.ServiceModel.Channels.
();
//Maximale Nachrichtengrösse
chtengrösse aus den Einstellungen setzen
transportBinding.MaxReceivedMessageSize = Global.Service.MaxReceivedMessageSize;
ce.MaxReceivedMessageSize;
binding.Elements.Add(transportBinding);
return binding;
}
}
Quellcode 11: Erweiterung
eiterung JPSServiceClient
Implementationsdetails
Projekt
Mobile DMS-Datenerfassung
Datenerfassung
Autor
Datum
Version
Dokument
Philipp Buser
10.09.2009
1.0
Projektdokumentation
Seite
117(141)
Diese Methode wird dann beim Erzeugen des Webservice-Objekts
Webservice
verwendet.
/// <summary>
/// Webservice-Objekt
Objekt erstellen
/// </summary>
/// <param name="forceNew"></param>
private void CreateServiceObject(bool
CreateServiceObject(
forceNew)
{
if (_JPSService == null || forceNew)
{
System.ServiceModel.Channels.
System.ServiceModel.Channels.Binding
binding =
JPSServiceClient.CreateJPSServic
.CreateJPSServiceBinding();
binding.OpenTimeout = TimeSpan.FromSeconds(Global.Service.Timeout);
TimeSpan
Service.Timeout);
_JPSService = new JPSServiceClient
SServiceClient(binding,
new System.ServiceModel.EndpointAddress(Global.Service.Url));
System.ServiceModel.
}
if (_credentials == null)
{
_credentials = new Credentials();
Credentials
}
}
Quellcode 12: Webservice-Objekt
Objekt erzeugen
erzeu
12.4 Online-/Offline-Betrieb
Betrieb
Bei verschiedenen Aktionen wird überprüft, ob sich die Applikation im OnlineOnline oder Offline-Modus
Offline
befindet. Die Applikation ist genau dann online, wenn eine ActiveSync-Verbindung,
ActiveSync Verbindung, eine WiFiWiFi
Verbindung oder eine EDGE-,, UMTS-,
UMTS GPRS-, oder HSDPA-Verbindung
Verbindung besteht und zusätzlich der
Webservice verfügbar sowie die Anmeldung am Webservice erfolgreich ist.
/// <summary>
/// Überprüft anhand von SystemState und der Erreichbarkeit des Webservice
/// ob der Verbindungsstatus online oder offline
o
ist.
/// </summary>
/// <param name="silent">Gibt
Gibt an, dass keine Fehlermeldung angezeigt werden soll,
/// falls die Anmeldung am Webservice fehlschlägt</param>
fehlschlägt
/// <returns>true
true wenn online, falls wenn offline</returns>
offline
static public bool CheckIfOnline(
line(bool silent)
{
Cursor.Current = Cursors.WaitCursor;
.WaitCursor;
bool isOnline = false;
if (SystemState.ConnectionsCount
.ConnectionsCount > 0)
{
//Desktopverbindung (ActiveSync)
if (SystemState.ConnectionsDesktopCount
.ConnectionsDesktopCount > 0)
isOnline = true;
//Netzwerkverbindung (WiFi)
if (SystemState.ConnectionsNetworkCount
.ConnectionsNetworkCount > 0 && SystemState.WiFiStateConnected)
.WiFiStateConnected)
isOnline = true;
if (!Global.Settings.GetBool(
.Settings.GetBool(SettingKeys.RefreshWiFiRequired))
{
//UMTS,
S, HSDPA, GPRS oder EDGE Verbindung
if (SystemState.ConnectionsCellularCount
.ConnectionsCellularCount > 0 &&
(SystemState.CellularSystemConnectedEdge
.CellularSystemConnectedEdge ||
SystemState.CellularSystemConnectedGprs
.CellularSystemConnectedGprs ||
SystemState.CellularSyste
.CellularSystemConnectedHsdpa ||
SystemState.CellularSystemConnectedUmts))
.CellularSystemConnectedUmts))
Implementationsdetails
Projekt
Mobile DMS-Datenerfassung
Datenerfassung
Autor
Datum
Version
Dokument
Philipp Buser
10.09.2009
1.0
Projektdokumentation
Seite
118(141)
isOnline = true;
true
}
//Webservice erreichbar?
if (isOnline)
isOnline = Global.Service.IsAvailable();
.Service.IsAvailable();
if (isOnline)
{
Global.Service.InitCredentials();
.Service.InitCredentials();
//Anmeldung am Webservice
if (!Global.Service.Login())
.Service.Login())
{
isOnline = false;
false
if (!silent)
{
MessageBox.Show(
.Show("Die
"Die Anmeldung am Webservice ist fehlgeschlagen.",
fehlgeschlagen."
"Mobile JPS",
JPS"
MessageBoxButtons
MessageBoxButtons.OK,
MessageBoxIcon
MessageBoxIcon.Hand,
MessageBoxDefaultButton
MessageBoxDefaultButton.Button1);
}
}
}
}
Cursor.Current = Cursors.Default;
.Default;
return isOnline;
}
Quellcode 13:: Verbindungsstatus überprüfen
Über die Informationen, welche das Microsoft.WindowsMobile.Status.SystemState
SystemState-Objekt in
Windows Mobile 6 anbietet, lässt sich eine Applikation entwickeln, die Bescheid weiss über
Netzwerkverfügbarkeit, Batteriestatus, Telefonsignalstärke,
Telefonsignalstärke, ob der Benutzer gerade ein
Telefongespräch führt, etc. und entsprechend
ents
darauf reagieren kann.
In dieser
ieser Applikation wird ein Eventhandler ausgelöst, sobald sich die Anzahl der Verbindungen
ändert. Darin wird dann mit der CheckIfOnline-Methode überprüft, in welchem Zustand sich die
Applikation neu befindet.
SystemState _connectionsCount;
_connectionsCount = new SystemState(SystemProperty.ConnectionsCount);
SystemState
_connectionsCount.Changed += new ChangeEventHandler(ConnectionsCount_Changed);
(ConnectionsCount_Changed);
Quellcode 14:: Verbindungsstatus Eventhandler
12.5 Datenzugriff
Die folgenden Codefragmente aus der
de Global-Klasse
Klasse zeigen den Umgang mit dem Interface
IDataAccess und den realisierenden Klassen DataOnline und DataOffline. Beim ersten Zugriff über die
Property DataAccess wird die Instanz in CreateDataObject() erzeugt,, bei jedem weiteren Zugriff
einfach zurückgegeben.
urückgegeben. Sobald über die Property Online ein neuer Verbindungsstatus gesetzt wird,
wird _dataAccess mit CreateDataObject() neu initialisiert. Damit steht über die Property DataAccess
immer ein dem Verbindungstatus entsprechendes Objekt zur Verfügung.
Implementationsdetails
Projekt
Mobile DMS-Datenerfassung
Datenerfassung
Autor
Datum
Version
Dokument
Philipp Buser
10.09.2009
1.0
Projektdokumentation
Seite
119(141)
static IDataAccess _dataAccess = null;
static private void CreateDataObject()
{
if (_online)
_dataAccess = new DataOnline();
DataOnline
else
_dataAccess = new DataOffline();
DataOffline
}
/// <summary>
/// Datenzugriff. Verwendet Webservice
Webservic falls online,
/// andernfalls nur die lokale SqlCe-Datenbank.
SqlCe
/// </summary>
static public IDataAccess DataAccess
{
get
{
if (_dataAccess == null)
null
CreateDataObject();
return _dataAccess;
}
}
/// <summary>
/// Verbindungsstatus
/// </summary>
static public bool Online
{
get { return _online; }
set
{
if (_online != value)
{
// Datenverbindung schliessen
if (_dataAccess != null)
_dataAccess.Close();
_online = value;
CreateDataObject();
}
}
}
Quellcode 15: DataAccess
12.6 Konflikterkennung
Die Konflikterkennung ist relativ einfach aufgebaut. Ein Konflikt ist vorhanden, wenn für ein Projekt
diee Anzahl Aufgaben auf dem Server unterschiedlich zu den Aufgaben in der lokalen DB ist,
ist die ID‘s
der Aufgaben nicht übereinstimmen oder für eine Aufgabe die angegebene Dauer nicht
übereinstimmt.
Die Konfliktlösung ist dann noch einfacher. Die lokal vorgenommen
vorgen
Änderungen werden
zurückgesetzt,, indem das Projekt mit dem vom Server überschrieben wird. Der Benutzer wird
informiert,, dass er die Aufgaben nochmals abschliessen muss.
Implementationsdetails
Projekt
Mobile DMS-Datenerfassung
Datenerfassung
Autor
Datum
Version
Dokument
Philipp Buser
10.09.2009
1.0
Projektdokumentation
act Konflikterkennung
[Unterschiedliche
Anzahl Aufgaben]
[Gleiche Anzahl
Aufgaben]
[Unterschiedliche
Aufgaben ID's]
[Gleiche
Aufgaben ID's]
[Unterschiedliche
Aufgabendauer]
Konflikt vorhanden
[Gleiche
Aufgabendauer]
Kein Konflikt vorhanden
Abbildung 45:: Aktivitätsdiagramm Konflikterkennung
Der folgende Code zeigt die dazugehörende Funktion.
/// <summary>
/// Konflikterkennung.
/// Überprüft ob die Anzahl Aufgaben sowie deren ID's und Dauer übereinstimmen.
/// </summary>
/// <param name="local">Projekt
Projekt aus der lokalen Datenbank</param>
Datenbank
/// <param name="remote">Projekt
Projekt vom Server</param>
Server
/// <returns>true
true falls ein Konflikt aufgetreten ist, sonst false</returns>
false</returns>
private bool Conflicts(Project local, Project remote)
{
bool conflict = false;
//Anzahl Aufgaben vergleichen
if (local.Jobs.Length
.Jobs.Length == remote.Jobs.Length)
{
//Aufgaben nach ID sortieren
var lquery = from job in local.Jobs orderby job.JobID select job;
var rquery = from job in remote.Jobs orderby job.JobID select job;
List<Job> ljobs = new List<Job>(lquery);
List
List<Job> rjobs = new List
List<Job>(rquery);
for (int i = 0; i < ljobs.Count; i++)
{
//ID und Dauer vergleichen
if (ljobs[i].JobID != rjobs[i].JobID ||
Math.Round(ljobs[i].V
.Round(ljobs[i].Volume, 3) != Math.Round(rjobs[i].Volume,3))
.Round(rjobs[i].Volume,3))
{
conflict = true;
true
break;
}
}
}
else
{
conflict = true;
}
return conflict;
}
Quellcode 16: Konflikterkennung
Implementationsdetails
Seite
120(141)
Projekt
Mobile DMS-Datenerfassung
Datenerfassung
Autor
Datum
Version
Dokument
Philipp Buser
10.09.2009
1.0
Projektdokumentation
Seite
121(141)
12.7 Telefonfunktion
Die Telefonfunktion ist so implementiert, dass sie unabhängig vom Gerätetyp funktioniert. Mithilfe
einer Factory wird der für die Plattform geeignete PhoneHandler erzeugt. Auf einem Gerät ohne
Telefonie-Funktion (also mit Betriebssystem
etriebssystem Windows Mobile 6.0 Classic) wird ein NullPhoneHandler
erzeugt, welcher dann im Hintergrund lediglich eine MessageBox mit der Telefonnummer anzeigt.
/// <summary>
/// Factory-Klasse
Klasse zum Erzeugen eines PhoneHandlers
/// </summary>
public class PhoneHandlerFactory
{
/// <summary>
/// Erzeugt einen aufs Gerät angepassten PhoneHandler
/// </summary>
/// <returns>PhoneHandler</returns>
</returns>
public static IPhoneHandler GetPhoneHandler()
{
IPhoneHandler phoneHandler = null;
if (PlatformInfo.IsAPhone)
.IsAPhone)
{
if (Environment.OSVersion.Version.Major
.OSVersion.Version.Major < 5)
phoneHandler = new NativePhoneHandler();
else
phoneHandler = new ManagedPhoneHandler();
}
else
{
phoneHandler = new NullPhoneHandler();
}
return phoneHandler;
}
}
Quellcode 17: PhoneHandlerFactory
private IPhoneHandler _phoneHandler = null;
/// <summary>
/// Konstruktor
/// </summary>
public CustomerControl()
{
InitializeComponent();
_phoneHandler = PhoneHandlerFactory.GetPhoneHandler();
PhoneHandlerFactory
}
/// <summary>
/// Telefon-Button
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void buttonPhone_Click(
Phone_Click(object sender, EventArgs e)
{
_phoneHandler.MakeCall(((Button
Button)sender).Tag.ToString());
}
Quellcode 18:: Verwendung der PhoneHandlerFactory
Im Fall von einer Betriebssystemversion grösser 5 und damit mit .NET-Unterstützung
stützung steht im
Hintergrund die Microsoft.WindowsMobile.Telephony.Phone-Klasse.
Microsoft.WindowsMobile.Telephony.Phone
Implementationsdetails
Projekt
Mobile DMS-Datenerfassung
Datenerfassung
Autor
Datum
Version
Dokument
Philipp Buser
10.09.2009
1.0
Projektdokumentation
Seite
122(141)
/// <summary>
/// Telefon-Funktion
Funktion für Geräte mit .NET Unterstütung
/// </summary>
public class ManagedPhoneHandler : IPhoneHandler
{
/// <summary>
/// Tätigt einen Anruf.
/// </summary>
/// <param name="phoneNumber">Telefonnummer</param>
name="phoneNumber">
void IPhoneHandler.MakeCall(
.MakeCall(string phoneNumber)
{
Phone p = new Phone();
p.Talk(phoneNumber);
}
}
Quellcode 19: Telefonverbindung
nverbindung aufbauen
12.8 SMS und Email
Unter Verwendung des Microsoft.WindowsMobile.PocketOutlook-Namespaces ist es sehr einfach,
eine SMS- bzw. eine Emailnachricht im entsprechenden Standarddialog zu initialisieren, in welchem
bereits die Zielnummer bzw. die Emailadresse des Kunden ausgefüllt ist.
/// <summary>
/// SMS-Button
/// </summary>
private void buttonSMS_Click(object
object sender, EventArgs e)
{
try
{
SmsMessage sms = new SmsMessage();
SmsMessage
sms.To.Add(new Recipient(((Button)sender).Tag.ToString()));
Recipient
//Display a compose form for the specified SMS message.
MessagingApplication.DisplayComposeForm(sms);
.DisplayComposeForm(sms);
}
catch (Exception ex)
{
Global.HandleError(sender,
.HandleError(sender, ex);
}
}
Quellcode 20: SMS versenden
/// <summary>
/// Email-Button
/// </summary>
private void buttonEmail_Click(object
buttonEmail_Click(
sender, EventArgs e)
{
try
{
EmailMessage email = new EmailMessage();
email.To.Add(new Recipient(((Button)sender).Tag.ToString()));
Recipient
//Displays a compose form for the specified e-mail message, using the default Account.
MessagingApplication.DisplayComposeForm(email);
.DisplayComposeForm(email);
}
catch (Exception ex)
{
Global.HandleError(sender,
.HandleError(sender, ex);
}
}
Quellcode 21: Email versenden
Implementationsdetails
Projekt
Mobile DMS-Datenerfassung
Datenerfassung
Autor
Datum
Version
Dokument
Philipp Buser
10.09.2009
1.0
Projektdokumentation
Seite
123(141)
12.9 LINQ
Leider unterstützt .NET Compact Framework 3.5 kein LINQ-to-SQL, da der System.Linq.ExpressionsSystem.Lin
Namespace sowie das System.Linq.IQueryable-Interface
System.Linq.IQueryable Interface nicht vorhanden ist. LINQ-to-Objects,
LINQ
LINQto-DataSet und LINQ-to-XML
XML hingegen werden unterstützt.
unterstützt LINQ-to-Objects
Objects wurde auch einige Male
verwendet, wie das folgende Beispiel zeigt. Abhängig vom ausgewählten Filter werden die
entsprechenden Aufgaben in die ListView eingefügt.
/// <summary>
/// Füllt die ListView mit den Aufgaben gemäss ausgewähltem Filter
/// </summary>
/// <param name="filter">Filter
Filter</param>
private void PopulateListView(Global
Global.FILTER filter)
{
var query = from job in _currentProject.Jobs
orderby job.Order select job;
switch (filter)
{
//Offene Aufgaben: job.Done < 100
case Global.FILTER.OpenJobs:
.OpenJobs:
query = from job in _currentProject.Jobs where job.Done < 100
orderby job.Order select job;
break;
//Geschlossene Aufgaben: job.Done == 100
case Global.FILTER.ClosedJobs:
.ClosedJobs:
query = from job in _currentProject.Jobs where job.Done == 100
orderby job.Order select job;
break;
//Alle Aufgaben
case Global.FILTER.AllJobs:
.AllJobs:
//default
break;
}
//ListView leeren
this.listViewJobs.Items.Clear();
.listViewJobs.Items.Clear();
//ListView füllen
foreach (Job job in query)
{
ListViewItem li = new ListViewItem(new
ListViewItem
string[]{
"",
, job.JobID.ToString(), job.Description, job.Volume.ToString("F")});
job.Volume.ToString(
//Falls Aufgabe erledigt, die Checkbox aktivieren
li.Checked = (job.Done == 100);
//Job-Objekt
Objekt mitgeben, damit dieses später wieder abgerufen werden kann
li.Tag = job;
this.listViewJobs.Items.Add(li);
.listViewJobs.Items.Add(li);
}
}
Quellcode 22: Verwendung von LINQ-to
to-Object
Implementationsdetails
Projekt
Mobile DMS-Datenerfassung
Datenerfassung
Autor
Datum
Version
Dokument
Philipp Buser
10.09.2009
1.0
Projektdokumentation
12.10
Seite
124(141)
Geräte-Informationen
Informationen
Mit der PlatformInfo-Klasse,
Klasse, welche auf eine native Funktion über P/Invoke zurückgreift,
zurückgreift kann der
Gerätetyp ermittelt werden. Die IsAPhone-Property
Property wird zum Beispiel von der in 12.7 vorgestellten
PhoneHandlerFactory verwendet.
verwendet
/// <summary>
/// Platform-Informationen
/// </summary>
public class PlatformInfo
{
/// <summary>
/// Smartphone Gerät?
/// </summary>
public static bool IsSmartPhone
{
get { return SystemTypeString.IndexOf("SmartPhone")
SystemTypeString.IndexOf(
>= 0; ;}
}
/// <summary>
/// PocketPC Gerät?
/// </summary>
public static bool IsPocketPc
{
get { return SystemTypeString.IndexOf("PocketPC")
SystemTypeString.IndexOf(
>= 0; }
}
/// <summary>
/// Gerät mit Telefonie-Funktion?
Funktion?
/// </summary>
public static bool IsAPhone
{
get { return File.Exists(
.Exists(@"\Windows\Phone.dll"); }
}
// P/Invoke to retrieve string containing the platform type (PocketPC or SmartPhone)
[DllImport("coredll.dll")]
private static extern void SystemParametersInfo(uint whichParam, uint size,
StringBuilder platformType, uint notUsed);
private const uint SPI_GETPLATFORMTYPE = 257;
// Simplified access to the platform type string
private static string SystemTypeString
{
get
{
StringBuilder platformTypeString
tformTypeString = new StringBuilder(255);
SystemParametersInfo(SPI_GETPLATFORMTYPE, (uint)platformTypeString.Capacity,
(
)platformTypeString.Capacity,
platformTypeString, 0);
return platformTypeString.ToString();
}
}
}
Quellcode 23: PlatformInfo (Geräteinformationen)
Implementationsdetails
Projekt
Mobile DMS-Datenerfassung
Datenerfassung
Autor
Datum
Version
Dokument
Philipp Buser
10.09.2009
1.0
Projektdokumentation
12.11
Seite
125(141)
Hoch- / Querformat
Mithilfe der DisplayInfo-Klasse
Klasse lässt sich die aktuelle Displayorientierung abfragen. Der folgende
Code, in welchem über SystemSettings.ScreenOrientation die Displayorientierung
ung programmatisch
gesetzt wird, zeigt eine mögliche Verwendung.
/// <summary>
/// Menu Querformat
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void menuItemOrientation_Click(object
menuItemOrientation_Click(
sender, EventArgs e)
{
//Querformat
if (DisplayInfo.GetDisplayMode()
.GetDisplayMode() == DisplayMode.Landscape)
{
//Orientierung auf Hochformat zurücksetzen
SystemSettings.ScreenOrientation
.ScreenOrientation = ScreenOrientation.Angle0;
this.menuItemOrientation.Checked
.menuItemOrientation.Checked = false;
}
//Hochformat
else if (DisplayInfo.GetDisplayMode()
.GetDisplayMode() == DisplayMode.Portrait)
{
if (Global.Settings.GetInt(
.Settings.GetInt(SettingKeys.LandscapeOrientation)
.LandscapeOrientation) == 270)
{
//Orientierung auf Querformat (270°) wechseln
SystemSettings.ScreenOrientation
.ScreenOrientation = ScreenOrientation.Angle270;
.Angle270;
}
else
{
//Orientierung auf Querformat (90°) wechseln
SystemSettings.ScreenOrientation
.ScreenOrientation = ScreenOrientation.Angle90;
}
this.menuItemOrientation.Checked
ion.Checked = true;
}
}
Quellcode 24: Hoch- / Querformat
Implementationsdetails
Projekt
Mobile DMS-Datenerfassung
Datenerfassung
Autor
Datum
Version
Dokument
Philipp Buser
10.09.2009
1.0
Projektdokumentation
Seite
126(141)
13 Tests
Grundsätzlich war vorgesehen, die Applikation auf und mithilfe von Emulatoren zu entwickeln und
sie dort kontinuierlich zu testen. Es stellte sich jedoch bald einmal heraus, dass das Bereitstellen,
Ausführen und Debuggen der Applikation auf einem physischen Gerät viel schneller als auf dem
Emulator ist. Deshalb kamen die Emulatoren nur noch gelegentlich zum Einsatz und die Entwicklung
und die Tests fanden vorwiegend
gend auf dem physischen Gerät statt. Für diese Master Thesis stand ein
HTC Touch HD und ein Psion Teklogix Ikôn zur Verfügung.
13.1 Unit-Tests
Soweit wie sinnvoll und vom Aufwand vertretbar wurden die Klassen und Funktionen mit Unit-Tests
getestet.
13.2 Tests der Use-Cases
In Funktionstests wurden
rden sämtliche Use-Cases und Anforderungen
rderungen manuell durchgetestet.
durchgetestet
13.2.1 Aufgabe erledigen
Test-ID
Use Case
Testbeschreibung
Erwartetes Resultat
Testresultat
Test-ID
Use Case
Testbeschreibung
Erwartetes Resultat
1.1
UC001 – Aufgabenliste abrufen
• Eingabe einer Projektnummer und betätigen der OK--Taste
• Klick auf das Register „Jobs“
Die Aufgabenliste wird angezeigt.
1.2
UC002 – Aufgabendetails abrufen
• Eingabe einer Projektnummer und betätigen der OK--Taste
• Klick auf das Register „Jobs“
• Auswahl einer Aufgabe und
a. erneutes Klicken auf die Aufgabe
Taste im Kontextmenü
b. betätigen der „Details…“-Taste
Die Details zur Aufgabe wie Bezeichnung, Dauer, Beginn und Ende sowie die
Zusatzangaben werden angezeigt.
Testresultat
Test-ID
Use Case
Testbeschreibung
Erwartetes Resultat
Testresultat
1.3
UC003 – Aufgabe als erledigt zurückmelden
• Eingabe einer Projektnummer und betätigen der OK--Taste
• Klick auf das Register „Jobs“
• Abschliessen einer Aufgabe, indem
a. die Checkbox aktiviert und die Abschliessen-Taste
Abschliessen
betätigt wird
b. die Aufgabee ausgewählt und die Abschliessen-Taste
Abschliessen
im
Kontextmenü betätigt wird
c. in den Aufgabendetails die Abschliessen-Taste
Taste betätigt wird
Die Aufgabe ist abgeschlossen.
Tests
Projekt
Mobile DMS-Datenerfassung
Datenerfassung
Autor
Datum
Version
Dokument
Philipp Buser
10.09.2009
1.0
Projektdokumentation
Seite
127(141)
13.2.2 Auftrag bearbeiten
Test-ID
Use Case
Testbeschreibung
Erwartetes Resultat
1.4
UC004 – Termininformationen abrufen
• Eingabe einer Projektnummer und betätigen der OK--Taste
• Klick auf das Register „Termin“
Die Termininformationen zum Auftrag wie AnlieferungsAnlieferungs und Abholungstermin
sowie ob der Kunde wartet und ob ein Ersatzwagen benötigt wird, werden
angezeigt.
Testresultat
Test-ID
Use Case
Testbeschreibung
Erwartetes Resultat
1.5
UC005 – Fahrzeuginformationen abrufen
• Eingabe einer Projektnummer und betätigen der OK--Taste
• Klick auf das Register „Fahrzeug“
Die Fahrzeuginformationen zum Auftrag wie Kennzeichen, Bezeichnung,
Fahrgestellnummer, Erstzulassung, Letzte Zulassung, Kilometerstand, Letzter
Kundendienst, Hauptuntersuchung und Abgasuntersuchung werden angezeigt.
Testresultat
Test-ID
Use Case
Testbeschreibung
Erwartetes Resultat
1.6
UC006 – Auftrag abschliessen
• Eingabe einer Projektnummer und betätigen der OK--Taste
• Klick auf das Register „Jobs“
• Aktivieren der Checkbox „Auftrag abgeschlossen“
• Betätigen der Abschliessen-Taste
Alle Aufgaben des Auftrags
Auftrags sind abgeschlossen und die Aufgabenliste mit Filter
„Offene Aufgaben“ ist leer bzw. in der Aufgabenliste mit Filter „Alle Aufgaben“
sind alle Checkboxen aktiviert. Die Checkbox „Auftrag abgeschlossen“ ist aktiviert
und kann nicht mehr deaktiviert werden.
Testresultat
13.2.3 Kunde kontaktieren
Test-ID
Use Case
Testbeschreibung
Erwartetes Resultat
1.7
UC007 – Kundeninformationen abrufen
• Eingabe einer Projektnummer und betätigen der OK--Taste
• Klick auf das Register „Kunde“
Die Kundeninformationen zum Auftrag wie Name, Adresse, Telefonnummern,
Emailadresse und Geburtsdatum werden angezeigt.
Testresultat
Tests
Projekt
Mobile DMS-Datenerfassung
Datenerfassung
Seite
128(141)
Autor
Datum
Version
Dokument
Philipp Buser
10.09.2009
1.0
Projektdokumentation
Test-ID
Use Case
Testbeschreibung
1.8
UC008 – Kunde kontaktieren
• Eingabe einer Projektnummer und betätigen der OK--Taste
• Klick auf das Register „Kunde“
a. Klick auf die Taste mit der Telefonnummer
b. Klick auf die SMS-Taste
c. Klick auf die Taste mit der Emailadresse
a. Die Telefonverbindung wird direkt hergestellt
b. Eine SMS wird erstellt und zur weiteren Bearbeitung angezeigt.
angezeigt Die
Zielnummer ist bereits ausgefüllt.
c. Eine Email wird erstellt und zur weiteren Bearbeitung angezeigt.
angezeigt Die
Empfängeradresse ist bereits ausgefüllt.
Erwartetes Resultat
Testresultat
13.3 Tests der funktionalen Anforderungen
Anforderunge
Test-ID
Anforderung
Testbeschreibung
Erwartetes Resultat
Testresultat
2.1
RQ001 - Filtern der Aufgaben
In der Aufgabenliste wird im Dropdown-Menü
Dropdown Menü der gewünschte Filter ausgewählt:
a. Offene Aufgaben
b. Abgeschlossene Aufgaben
c. Alle Aufgaben
Es werden die dem Filter entsprechenden Aufgaben angezeigt.
Test-ID
Anforderung
Testbeschreibung
Erwartetes Resultat
Testresultat
2.2
RQ002 - Aktualisieren der Aufgaben
Im Menü wird die Aktualisieren-Taste
Aktualisieren
betätigt.
Das aktuelle Projekt wird neu vom Server geladen.
Test-ID
Anforderung
Testbeschreibung
2.3
RQ003 - Automatische Aktualisierung der Aufgabenliste
In der Aufgabenliste wird eine Aufgabe abgeschlossen, indem
a. die Checkbox aktiviert und die Abschliessen-Taste
Taste betätigt wird
b. die Aufgabe ausgewählt und die Abschliessen-Taste
Taste im Kontextmenü
betätigt wird
c. in den Aufgabendetails die Abschliessen-Taste
Taste betätigt wird
Die Aufgabenliste stellt den neuen Stand korrekt dar, d.h. im Falle des Filters
„Offene Aufgaben“ verschwindet die Aufgabe aus der Aufgabenliste und im Falle
des Filters „Alle Aufgaben“ erscheint die Aufgabe mit aktivierter Checkbox.
Erwartetes Resultat
Testresultat
Test-ID
Anforderung
Testbeschreibung
Erwartetes Resultat
2.4
RQ004 – Mehrere Aufgaben auf einmal erledigen
In der Aufgabenliste werden mehrere Aufgaben über die Checkbox markiert.
Danach wird die Abschliessen-Taste
Abschliessen
betätigt.
Alle markierten Aufgaben verschwinden aus der Liste mit den offenen Aufgaben
und sind abgeschlossen.
Testresultat
Tests
Projekt
Mobile DMS-Datenerfassung
Datenerfassung
Autor
Datum
Version
Dokument
Philipp Buser
10.09.2009
1.0
Projektdokumentation
Seite
129(141)
13.4 Tests der nicht funktionalen Anforderungen
Test-ID
Anforderung
Testbeschreibung
Erwartetes Resultat
2.5
RQ005 – Eingaben überprüfen
Es werden absichtlich falsche Eingaben gemacht:
a. Es wird keine Projektnummer eingegeben
b. Es wird eine Projektnummer eingegeben, die nicht existiert
c. Es wird Text anstelle von Ziffern eingegeben
Die Applikation muss die vom Benutzer eingegebenen
gebenen Daten auf ihre Gültigkeit
überprüfen und den Benutzer mit einer Fehlermeldung benachrichtigen.
Testresultat
Test-ID
Anforderung
Testbeschreibung
Erwartetes Resultat
2.6
RQ006 – Anpassung an Bildschirmauflösung
Die Applikation wird auf Geräten oder Emulatoren mitt unterschiedlichen
Bildschirmauflösungen, DPI-Zahlen
DPI Zahlen und Ausrichtungen verwendet.
Das System erkennt die Auflösung eines Gerätes und passt die Darstellung
entsprechend an.
Testresultat
Test-ID
Anforderung
Testbeschreibung
Erwartetes Resultat
Testresultat
2.7
RQ007 – Wechsel zwischen Hoch- und Querformat
Im Gerät wird die Orientierung des Displays geändert.
Die Applikation passt sich der neuen Orientierung an und wird korrekt dargestellt.
Test-ID
Anforderung
Testbeschreibung
2.8
RQ008 – Touchscreen-Bedienung
Die Applikation wird nur mit dem Finger über die Touchoberfläche
Touchoberfl
des mobilen
Geräts bedient.
Alle Funktionen können mit dem Finger bedient werden. Es wird – etwas
Fingerspitzengefühl vorausgesetzt – kein Stift benötigt.
Erwartetes Resultat
Testresultat
Test-ID
Anforderung
Testbeschreibung
Erwartetes Resultat
Testresultat
2.9
RQ009 – Bedienung per Spracheingabe
Die Applikation wird über die Stimme bedient und die Aktionen können per
Spracheingabe ausgelöst werden.
Die gewünschte
gewüns
Funktion wird ausgelöst.
Die Sprachsteuerung wurde nicht implementiert.
Test-ID
Anforderung
Testbeschreibung
Erwartetes Resultat
Testresultat
2.10
RQ010 – Sprache
Die Applikation wird verwendet.
Die Bedienerführung der Anwendung ist in Deutsch.
Deutsch
Tests
Projekt
Mobile DMS-Datenerfassung
Datenerfassung
Seite
130(141)
Autor
Datum
Version
Dokument
Philipp Buser
10.09.2009
1.0
Projektdokumentation
Test-ID
Anforderung
Testbeschreibung
2.11
RQ011 – Sicherheit
Die Applikation wird verwendet, ohne dass das Gerät im JPS-Webservice
Webservice registriert
ist.
Die Anmeldung am Webservice schlägt fehl und es können keine Daten
Da
abgerufen
werden.
Erwartetes Resultat
Testresultat
13.5 System-Tests
Für den Systemtest wurden die Use-Cases
Use
in unterschiedlichen
hen Workflows getestet. Diese Tests
verliefen ausnahmslos positiv. Erfolgreich waren auch Versuche mit einer GPRS/UMTS/HSDPAGPRS/UMTS/HSDPA
Verbindung.
Um den Beta-Status der Applikation aufzuheben,, müsste jedoch im Bereich der Systemtests sicher
noch etwas Arbeit geleistet werden, indem zum Beispiel noch vermehrt Test Cases durchgeführt
werden,, welche absichtlich Fehlersituationen erzeugen und Fehlmanipulationen berücksichtigen.
Tests mit Emulatoren
Wie erwähnt wurde der Prototyp während der Entwicklung aus Geschwindigkeitsgründen
Geschwind keitsgründen
hauptsächlich auf dem physischen Gerät getestet. Da die Applikation aber auch auf möglichst vielen
anderen Geräten funktionieren
en und zum Einsatz kommen soll, wurde sie in der abschliessenden
Testphase zusätzlich auch auf den verschiedenen zur Verfügung stehenden Emulatoren geprüft.
Die Tests in Windows Mobile 6 Standard und Windows Mobile 6.1 Standard schlagen fehl, weil keine
System.Windows.Forms.Button-Elemente
Elemente unterstützt werden und die Applikation deshalb nicht
gestartet werden kann. Geräte mit Windows Mobile 6 Standard verfügen über keinen Touchscreen
(da machen Buttons keinen Sinn) und gehören somit nicht zu den definierten Zielgeräten.
Zielge
TestID
Windows
Mobile
Pixel
dpi
Bemerkung
3.1
6 Standard
176 x 220
96
3.2
6 Standard
240 x 320
131
3.3
6 Standard
320 x 240
131
3.4
6 Classic
240 x 320
96
3.5
6 Professional
240 x 320
96
3.6
6 Professional
240 x 240
96
Square
3.7
6 Professional
320 x 320
128
Square QVGA
3.8
6 Professional
480 x 480
192
Square VGA
3.9
6 Professional
480 x 640
192
VGA
Beispiele
Landscape
QVGA
QVGA
Samsung SGH-F480,
F480, 2.8“
HTC Tytn II, 2.8“
LG KS20, 2.8“
Tests
Palm Treo Pro
HTC Touch Diamond, 2.8“
TestResultat
Projekt
Mobile DMS-Datenerfassung
Datenerfassung
Autor
Datum
Version
Dokument
Philipp Buser
10.09.2009
1.0
Projektdokumentation
TestID
Windows
Mobile
Pixel
dpi
Bemerkung
3.10
6.1 Standard
320 x 320
131
Square QVGA
3.11
6.1 Standard
400 x 240
131
3.12
6.1 Standard
440 x 240
131
3.13
6.1 Professional
240 x 400
96
Wide QVGA
3.14
6.1 Professional
480 x 800
192
Wide VGA
Beispiele
Seite
131(141)
TestResultat
Samsung Omnia, 3.2“
LG GM730
HTC Touch HD, 3.8“
Sony Ericsson Xperia X1, 3.0“
Tabelle 30: Emulatoren-Tests
Ganz kurz wurde auch mit einigen Windows Mobile 5.0 Emulatoren wurde getestet. Nach einer
marginalen Anpassung in der Applikation
Ap
(SystemState.WiFiStateConnected und
SystemState.CellularSystemConnectedGprs, SystemState.CellularSystemConnectedUmts
CellularSystemConnectedUmts, etc. werden
nicht unterstützt) war für verschiedene Windows Mobile 5.0 Pocket PC Emulatoren
Emulator das Ergebnis
positiv, nicht jedoch beim
eim Windows Mobile 5.0 Smartphone Emulator,
Emulator, auf welchem wiederum
erwartungsgemäss die System.Windows.Forms.Button-Elemente
System.Windows.Forms.
nicht unterstützt werden.
Tests
Projekt
Mobile DMS-Datenerfassung
Datenerfassung
Autor
Datum
Version
Dokument
Philipp Buser
10.09.2009
1.0
Projektdokumentation
Seite
132(141)
14 Gesammelte Erfahrungen / Reflexion
Vorgeschichte
Begonnen hat die Master Thesis mit der Definition der Aufgabenstellung.
Au
Das ursprüngliche vom
Auftraggeber gestellte Ziel, die komplette Werkstattkarte im Rahmen dieser Master Thesis
T
elektronisch
ronisch und für ein mobiles Gerät
Ger abzubilden,
bzubilden, wurde vor allem vom Entwicklungsleiter der KSR
stark in Frage gestellt bzw. alss unrealistisch eingeschätzt.
e
Dies führte zu einer Neudefinition der
Aufgabenstellung, in welcher der Schwerpunkt weg von der reinen Applikationsentwicklung hin zu
einer Technologie-Studie
Studie verschoben worden. Im Nachhinein betrachtet, war das die richtige und
u
auch eine sehr wichtige Entscheidung, denn auf diese Weise sind wir nun sicher, dass wir die für uns
passende Technologie gewählt und somit eine solide Basis für zukünftige Weiterentwicklungen
haben.
Pflichtenheft
Obwohl ich bereits einige Jahre Berufserfahrung
Berufs
als Software-Entwickler
Entwickler habe, war es für mich das
erste Pflichtenheft, das ich in diesem Umfang erstellt habe,
habe was dann auch ein paar Verwirrungen
und Diskussionen rund um die Use Cases
Case zur Folge hatte. Aber genau solche Auseinandersetzungen
mit einem Thema haben meiner Meinung nach einen grossen Lerneffekt zur Folge.
Technologie-Studie
Die Technologie-Studie verlief grösstenteils problemlos. Einziger Wermutstropfen ist, dass es mir
nicht gelungen ist, das Disconnected Service Agent Pattern der Microsoft
icrosoft Pattern & Practices Group
zum Funktionieren zu bringen.
Etwas zeitaufwendig
ndig gestalteten sich die Performance-Messungen.
Performance Messungen. Auch das Erstellen der
Bewertungsmatrix nahm viel Zeit in Anspruch. Vor allem das Definieren von geeigneten Massstäben
für die Kriterien ist relativ schwer bzw. war mir nicht immer möglich.
möglich Die nachträgliche Definition der
Gewichtung anhand einer Priorisierungsmatrix ergab in etwa dasselbe Resultat wie die ursprüngliche
von mir festgelegte Gewichtung.
Im Grossen und Ganzen war für
ür mich die Technologie-Studie
Technologie Studie der interessanteste und lehrreichste Teil
der Masterarbeit.
Implementation Prototyp
Mit Ausnahme einiger weniger Probleme mit dem Proxy-Objekt
Proxy
des Webservices (welches zuerst
vom Webservice geholt werden muss und nicht einfach instanziiert werden darf, damit es danach
wieder korrekt zum Webservice übermittelt werden kann) und dem Datumsformat (zweistellige
Jahreszahl auf dem mobilen Gerät) verlief
v
die Implementierung des Prototyps dank guter Vorarbeit
sehr zügig und zielgerichtet.
htet. Ich denke, die Applikation ist nahe am Release-Status
Release Status und erfüllt oder
übertrifft die gestellten Anforderungen.
Projektplanung, Aufwand und Kosten
Dadurch bedingt, dass es grösstenteils eine Einzelarbeit war, hielten
lten sich AbstimmungsAbstimmungs und
Koordinationsaufwand
onsaufwand in Grenzen. Ein Projektplan wurde natürlich trotzdem erstellt und er wurde
auch fortlaufend überprüft und wenn nötig angepasst. Die Meetings mit Herr Wenger im Abstand
von ca. 4 Wochen waren jeweils eine Bereicherung und bestätigten mir, dass ich
ich auf dem richtigen
Weg bin.. Die Meilensteine konnten mit einer Ausnahme (Abschluss der Technologie-Studie)
Technologie
eingehalten werden.
Gesammelte Erfahrungen / Reflexion
Projekt
Mobile DMS-Datenerfassung
Datenerfassung
Autor
Datum
Version
Dokument
Philipp Buser
10.09.2009
1.0
Projektdokumentation
Seite
133(141)
Der budgetierte Aufwand für diese Arbeit betrug 360 Stunden. Der tatsächliche Aufwand belief sich
dann auf knapp über 400 Stunden.
en. Wenn man die Reisezeiten für Meetings und Reviews (1x in
Deutschland, 4x in Bern) sowie das Seminar für Präsentationstechnik abzieht, dann stimmt der
Aufwand aber wieder ungefähr mit der Vorgabe von 360 Stunden überein.
Den Zeitaufwand habe ich grundsätzlich
grundsä
nicht unterschätzt, es ist allerdings so, dass die WK-bedingte
WK
Abwesenheit von 3 Wochen und die dadurch bedingte Mehrbelastung im Beruf (jeweils eine Woche
vor und nach dem WK) einen rund 5-wöchigen
5 wöchigen Unterbruch in den Arbeiten der Master Thesis zur
Folge
olge hatte. Dies konnte ich nur kompensieren, indem ich auf eine ursprünglich eingeplante
Sommerferien-Woche
Woche verzichtete.
Keine Probleme gab es bei den Kosten. Diese wurden bei weitem unterschritten, da das 2. Testgerät
(der Psion Teklogix Ikôn) nicht gekauft,
gek
sondern freundlicherweise von der Firma Rodata leihweise
zur Verfügung gestellt wurde.. Ein Mobilfunkabo
Mobilfunkab war ebenfalls nicht notwendig.. Wo nötig wurde mit
einer PrePaid-Karte getestet.
Gesammelte Erfahrungen / Reflexion
Projekt
Mobile DMS-Datenerfassung
Datenerfassung
Autor
Datum
Version
Dokument
Philipp Buser
10.09.2009
1.0
Projektdokumentation
Seite
134(141)
15 Ausblick
Ausbaumöglichkeiten gibt es natürlich viele. Einerseits können noch weitere Informationen, die im
Job Planing System verfügbar sind, in der mobilen Anwendung angezeigt werden, so zum Beispiel bei
den Termininformationen die Angaben zu Abholservice/Abholort und Lieferservice/Lieferort. Die
Unterstützung von mehreren
reren Mandanten könnte ebenfalls ein Thema sein, zumal der Code schon zu
einem grossen Teil dafür vorbereitet ist.
Andererseits gibt es noch einige wenige Schönheitsfehler in der Applikation, die ausgemerzt werden
können. Ich denke hierbei zum Beispiel an die Tatsache, dass die Ländereinstellung auf „Deutsch
(Schweiz)“ gesetzt sein muss,, damit es keine Probleme
Probleme mit dem Datumsformat gibt.
Verbesserungen im Bereich der Benutzerfreundlichkeit wären ein Fortschrittsbalken anstelle des
Standard-Ladesymbols sowiee allenfalls etwas grössere Elemente für eine noch bessere Bedienbarkeit
über den Touchscreen.
Wie bereits erwähnt, müsste im Bereich der Systemtests noch etwas Arbeit geleistet werden, indem
zum Beispiel noch vermehrt Test Cases durchgeführt werden, welche
welche absichtlich Fehlersituationen
erzeugen und Fehlmanipulationen berücksichtigen. Ebenfalls noch
noch nicht getestet wurde die
Applikation mit einer Verbindung über eine SSL-Verschlüsselung
SSL Verschlüsselung (https); dies wäre bei Bedarf noch
nachzuholen.
Der Prototyp wird nun vorerst mal als UmfrageUmfrage und Demonstrationsobjekt dienen und in einem
Pilotprojekt eingesetzt werden, um die Akzeptanz bei den Kunden zu überprüfen und um Feedback
einzuholen. Dazu sollte noch eine Hilfe und eine Bedienungsanleitung erstellt werden.
Danach wird über weiterführende Entwicklungsschritte entschieden. Das Ziel ist es ja,
ja Schritt für
Schritt weitere Teilbereiche der GCS-Software-Suite
GCS
zu implementieren, bis hin zur Abbildung der
kompletten Werkstattkarte auf dem mobilen Gerät.
Gerät Dies beinhaltet diee Zeiterfassung, die Auswahl
und Rückmeldung der verbauten Ersatzteile, verschiedene Checklisten zur Unterstützung, usw.
Ich bin überzeugt,, dass mit dieser Arbeit eine gute Ausgangslage geschaffen wurde, auf welcher die
kommenden Anforderungen erfolgreich umgesetzt werden können.
Ausblick
Projekt
Mobile DMS-Datenerfassung
Datenerfassung
Autor
Datum
Version
Dokument
Philipp Buser
10.09.2009
1.0
Projektdokumentation
Seite
135(141)
Anhang A – Abbildungsverzeichnis
Abbildung 1: Umfeld................................
................................................................................................................................
................................ 9
Abbildung 2: Kontextdiagramm Produkteumfeld ................................................................
................................................. 11
Abbildung 3: Steuerelemente der Ladezustandskoniguration von Device Emulator ........................... 21
Abbildung 4: Cellular Emulator für den Test von TelefonieTelefonie und Kommunikationsverhalten .............. 22
Abbildung 5: Übersicht der Plattformarchitektur von .NET Compact Framework ............................... 24
Abbildung 6: Netzwerktopologie mit einem Server ................................................................
.............................................. 36
Abbildung 7: Netzwerktopologie mit zwei Servern................................................................
............................................... 36
Abbildung 8: Architektur von Remote Data Access ................................................................
.............................................. 43
Abbildung 9: Architektur von Merge
erge Replication................................................................
.................................................. 49
Abbildung 10: Prinzip des Disconnected Service Agents ................................................................
...................................... 59
Abbildung 11: Architektur der Synchronization Services ................................................................
...................................... 62
Abbildung 12: Erstmalige Verbindungszeiten der verschiedenen Technologien..................................
................................ 70
Abbildung 13: Aktualisierungszeiten (in ms) für 1 und
un 100 Datensätze ...............................................
................................
70
Abbildung 14: Die 3 Haupt-Use
Use Cases ................................................................................................
................................... 80
Abbildung 15: Use Case Aufgabe erledigen ................................................................
.......................................................... 80
Abbildung 16: Aktivitätsdiagramm zum Use Case Aufgabe erledigen ..................................................
................................
82
Abbildung 17: Use Case Auftrag
uftrag bearbeiten ................................................................
......................................................... 83
Abbildung 18: Use Case Kunde kontaktieren ................................................................
........................................................ 84
Abbildung 19: Entwurf der Benutzeroberfläche (Primary Forms) ........................................................
................................
87
Abbildung 20: Entwurf der Benutzeroberfläche (Administrative Forms) .............................................
................................
88
Abbildung 21: Screenshot des Startfensters ................................................................
......................................................... 88
Abbildung 22: Screenshot des Auftragsfensters ................................................................
................................................... 90
Abbildung 23: Screenshot der Aufgabenliste ................................................................
........................................................ 91
Abbildung 24: Screenshot der Aufgabendetails ................................................................
.................................................... 92
Abbildung 25: Screenshot der Kontaktinformationen ................................................................
.......................................... 92
Abbildung 26: Screenshott der Fahrzeuginformationen ................................................................
........................................ 93
Abbildung 27: Screenshot der Termininformationen ................................................................
........................................... 94
Abbildung 28: Screenshot der Optionen ...............................................................................................
............................... 94
Abbildung 29: Serverseitiges Datenbankmodell des Prototyps ............................................................
................................
97
Abbildung 30: Clientseitiges Datenbankmodell des Prototyps ...........................................................
................................
103
Abbildung 31: Systemarchitektur ................................................................................................
........................................ 104
Abbildung 32: Authentifizierung über Device-ID
Device und Passwort..........................................................
................................
104
Abbildung 33: Klassendiagramm JPSService ................................................................
....................................................... 105
Abbildung 34: Schichtenarchitektur der mobilen Anwendung ...........................................................
................................
106
Abbildung 35:
5: Klassendiagramm Forms und Controls ................................................................
........................................ 107
Abbildung 36: Klassendiagramm DataAccess und Service ................................................................
.................................. 108
Abbildung 37: Klassendiagramm Library
Lib
.............................................................................................
............................. 109
Abbildung 38: Sequenzdiagramm Starten der Applikation ................................................................
................................. 110
Abbildung 39: Sequenzdiagramm Aufrufen eines Projekts................................................................
Projekts
................................. 111
Abbildung 40: Sequenzdiagramm Abschliessen einer Aufgabe ..........................................................
................................
112
Abbildung 41: Sequenzdiagramm Synchronisierung................................................................
Synchronisierung
........................................... 113
Abbildung 42: Am linken Rand des übergeordneten Steuerelements angedocktes Steuerelement auf
einem Hochformat- und einem Querformatdisplay ................................................................
........................................... 114
Abbildung 43: An der linken, rechten und unteren Kante des übergeordneten Steuerelements
verankertes Steuerelement auf einem HochformatHochfor
und einem Querformatdisplay ........................ 114
Abbildung 44: XML-Konfigurationsdatei
Konfigurationsdatei .............................................................................................
............................. 116
Abbildung 45: Aktivitätsdiagramm Konflikterkennung ................................................................
....................................... 120
Anhang B – Tabellenverzeichnis
Projekt
Mobile DMS-Datenerfassung
Datenerfassung
Autor
Datum
Version
Dokument
Philipp Buser
10.09.2009
1.0
Projektdokumentation
Seite
136(141)
Anhang B – Tabellenverzeichnis
Tabelle 1: Themen der Technologie-Studie
Technologie
................................................................
.......................................................... 18
Tabelle 2: Unterstützte Auflösungen
ösungen von Windows Mobile 6 ..............................................................
.............................. 20
Tabelle 3: Beziehung zwischen den Benennungskonventionen von WM 5.0 und WM 6 ..................... 20
Tabelle 4: Beziehung zwischen Betriebssystemen und SDKs ................................................................
................................ 21
Tabelle 5: Von .NET Compact Framework unterstützte Geräte und Plattformen ................................ 27
Tabelle 6: Im ROM
M installierte Version von .NET Compact Framework für eine Plattform .................. 27
Tabelle 7: Übersicht Datenaustausch-Technologien
Datenaustausch
................................................................
............................................. 41
Tabelle 8: Aktionen des Client Agent von RDA in Reaktion auf Methodenaufrufe .............................. 43
Tabelle 9: Aktionen des Server Agent von RDA in Reaktion auf Methodenaufrufe ............................. 44
Tabelle 10: Erforderlicher Datenbankzugriff für die verschiedenen IISIIS und SQL ServerServer
Authentifizierungsmodi ................................................................................................
................................
......................................................... 44
Tabelle 11: Begriffe der Merge Replikation ................................................................
.......................................................... 49
Tabelle 12: Vergleich von RDA und Merge-Replication
Merge
................................................................
........................................ 58
Tabelle 13: Dem Clientprojekt hinzugefügte Elemente nach der Synchronisierungskonfiguration ..... 65
Tabelle 14: Dem Serverprojekt hinzugefügte Elemente nach der Synchronisierungskonfiguration .... 66
Tabelle 15: Erforderlichen Elemente
Element in der Remotedatenbank von Sync Services .............................. 67
Tabelle 16: Durchschnittswerte der Performance-Messungen
Performance
................................
............................................................
69
Tabelle 17: Entscheidungstabelle
abelle für RDA, Merge-Replication
Merge
und Sync Services ............................... 71
Tabelle 18: Entscheidungstabelle für RDA, Merge Replication und Webservices ................................ 71
Tabelle 19: Kriterien der Bewertungsmatrix ................................................................
......................................................... 72
Tabelle 20: Bewertungsmatrix ................................................................................................
................................
.............................................. 73
Tabelle 21: Begründungen der Bewertungen (1/2) ................................................................
.............................................. 74
Tabelle 22: Begründungen der Bewertungen (2/2) ................................................................
.............................................. 75
Tabelle 23: Muss-Anforderungen
Anforderungen................................................................................................
.......................................... 78
Tabelle 24: Übersicht der Use Cases und Anforderungen ................................................................
.................................... 79
Tabelle 25: Menüelemente im Startfenster ................................................................
.......................................................... 89
Tabelle 26: Menüelemente im Auftragsfenster ................................................................
.................................................... 90
Tabelle 27: Kontextmenü-Elemente
emente der Aufgabenliste ................................................................
........................................ 91
Tabelle 28: Beschreibung und Standardwerte der Einstellungen .........................................................
................................
95
Tabelle 29: Screenshot des Infofensters ...............................................................................................
............................... 96
Tabelle 30: Emulatoren-Tests................................................................................................
................................
.............................................. 131
Anhang B – Tabellenverzeichnis
Projekt
Mobile DMS-Datenerfassung
Datenerfassung
Autor
Datum
Version
Dokument
Philipp Buser
10.09.2009
1.0
Projektdokumentation
Seite
137(141)
Anhang C – Quellcode-Verzeichnis
Quellcode
Quellcode 1: SQL-Anweisung
Anweisung zur Datenbank-Erstellung
Erstellung mit Kennwortschutz und Verschlüsselung .. 35
Quellcode 2: C#-Anweisung
Anweisung zur Datenbank-Erstellung
Datenbank Erstellung mit Kennwortschutz und Verschlüsselung ..... 35
Quellcode 3: Remote Data Access Pull................................................................................................
.................................. 45
Quellcode 4: Remote Data Access Push ................................................................................................
................................ 46
Quellcode 5: Remote Data Access
ccess SubmitSql ................................................................
....................................................... 46
Quellcode 6: Merge Replication AddSubscription ................................................................
................................................ 53
Quellcode 7: Merge Replication Synchronize ................................................................
....................................................... 55
Quellcode 8: Synchronization Services Synchronize ................................................................
............................................. 67
Quellcode 9: Programmatische Layoutanpassungen im Paint-Eventhandler
Paint
................................ 115
.....................................
Quellcode 10: Speichern und Laden von Settings ................................................................
............................................... 116
Quellcode 11: Erweiterung JPSServiceClient................................................................
....................................................... 116
Quellcode 12: Webservice-Objekt
Objekt erzeugen................................................................
....................................................... 117
Quellcode 13: Verbindungsstatus überprüfen ................................................................
.................................................... 118
Quellcode 14: Verbindungsstatus Eventhandler
Eve
................................................................
................................................. 118
Quellcode 15: DataAccess ................................................................................................
................................
................................................... 119
Quellcode 16: Konflikterkennung................................................................................................
........................................ 120
Quellcode 17: PhoneHandlerFactory ................................................................................................
.................................. 121
Quellcode 18: Verwendung der PhoneHandlerFactory ................................................................
...................................... 121
Quellcode 19: Telefonverbindung aufbauen ................................................................
...................................................... 122
Quellcode 20: SMS versenden................................
................................................................................................
............................................. 122
Quellcode 21: Email versenden ................................................................................................
................................
........................................... 122
Quellcode 22: Verwendung von LINQ-to-Object
LINQ
................................................................
................................................ 123
Quellcode 23: PlatformInfo (Geräteinformationen) ................................................................
........................................... 124
Quellcode 24: Hoch- / Querformat ................................................................................................
..................................... 125
Anhang C – Quellcode-Verzeichnis
Projekt
Mobile DMS-Datenerfassung
Datenerfassung
Autor
Datum
Version
Dokument
Philipp Buser
10.09.2009
1.0
Projektdokumentation
Seite
138(141)
Anhang D – Begriffe und Abkürzungen
Begriff
ADO.NET
API
APS
ARM
ASP.NET
Assembly
CAB-Datei
CLR
CLS
COM
COM-Interop
DBA
DLL
DML
DMS
DPI
EKS
FAT
Garbage
Collection
GCS
GPRS
GPS
GSM
Beschreibung
ADO.NET ist ein Teil der von Microsoft entwickelten .NET-Plattform.
Plattform. Es handelt sich um
eine Sammlung von Klassen, die den Zugriff auf relationale Datenbanken gewährleisten.
ADO.NET gilt als Nachfolger der ActiveX Data Objects (ADO).
Application Programming Interface,
I
Programmierschnittstelle
Auto Planing System, ein GCS Software-Produkt
Software
Advanced RISC Machine.
Machine
Die ARM-Architektur
Architektur ist ein Kern-Design
Kern
für eine Familie von 32-Bit-Mikroprozessoren
Mikroprozessoren, die
dem RISC (Reduced Instruction Set Computing)-Konzept
Computing)
folgen.
Active Server Pages .NET
ASP NET ist eine serverseitige Technologie von Microsoft zum Erstellen von
Webanwendungen auf Basis des Microsoft .NET-Frameworks.
Übersetzte Programmklassen werden als ausführbare Programme in Assemblys
zusammengefasst und bereitgestellt.
bereitgestellt
Das CAB-Dateiformat
Dateiformat ist ein Format zur komprimierten Archivierung von Dateien, die
Abkürzung steht für Cabinet.
Common Language
anguage Runtime
CLR ist die Laufzeitumgebung von .NET. Sie stellt somit den Interpreter für den
standardisierten Zwischencode, der Common Intermediate Language (CIL), dar. Die CIL
hiess früher Microsoft Intermediate Language (MSIL), wurde aber im Rahmen der
de
Standardisierung umbenannt.
Common Language Specification
Component Object Model
COM ist eine von Microsoft entwickelte Plattform-Technologie,
ogie, um unter dem
Betriebssystem Windows Interprozesskommunikation und dynamische Objekterzeugung
zu ermöglichen.
Die COM-Interoperabilität
Interoperabilität (COM-Interop)
(
ermöglicht das Verwenden
rwenden vorhandener COMCOM
Objekte in .NET-Anwendungen.
.NET
Datenbankadmi
Datenbankadministrator
Dynamic Link Library
Data Manipulation Language
DML ist
st derjenige Teil einer Datenbanksprache, der verwendet wird, um Daten zu lesen,
zu schreiben, zu ändern und zu löschen.
Dealer Management System
Ein Dealer-Management
Management-System ist ein IT-System, welches Autohäuser bei der
Abwicklung aller anfallenden Geschäftsprozesse unterstützt.
unterstütz
Dots per inch, Punkte pro Zoll, Masseinheit für die Angabe von Auflösungen
Elektronisches Kassensystem, ein GCS-Software-Produkt
GCS
File Allocation Table
Ein von Microsoft entwickeltes Dateisystem.
Automatische Wiederverfügbarmachung
Wiederverfügbarmachung von nicht mehr benötigtem Speicher und
anderen Betriebsmitteln, indem nicht mehr erreichbare Objekte im Speicher automatisch
freigegeben werden.
GCS Garage und Carrosserie System GmbH
General Packet Radio Service
GPRS (deutsch: „Allgemeiner
„All
paketorientierter Funkdienst“) ist ein paketorientierter
Dienst zur Datenübertragung, welcher in GSM Netzen verwendet wird.
Global Positioning System
Global System for Mobile Communications
GSM ist ein Standard für volldigitale Mobilfunknetze,, der hauptsächlich für Telefonie,
aber auch für leitungsvermittelte
leitung
und paketvermittelte Datenübertragung sowie
Kurzmitteilungen genutzt wird.
Anhang D – Begriffe und Abkürzungen
Projekt
Mobile DMS-Datenerfassung
Datenerfassung
Autor
Datum
Version
Dokument
Philipp Buser
10.09.2009
1.0
Projektdokumentation
Begriff
HSDPA
HTTPS
IIS
JIT
JPS
KSR
LINQ
MDE
MSF
MSIL
Namespace
NTFS
OEM
OS
PDA
RAM
RDA
RFID
ROM
SAPI
SDK
Seite
139(141)
Beschreibung
High Speed Downlink Packet Access
HSDPA, auch als 3.5G, 3G+ und UMTS-Broadband
UMTS Broadband vermarktet, ist ein
Übertragungsverfahren des Mobilfunkstandards UMTS.. Das Verfahren ermöglicht DSLähnliche Übertragungsgeschwindigkeiten im Mobilfunknetz (abhängig von der Qualität
der Funkverbindung 3,6 bis 13,98 MBit/s) und macht damit den Download von großen
Datenmengen (etwa Spielen, Filmen, etc.) ohne KabelKabel oder WLAN-Verbindung
Verbindung möglich.
HyperText Transfer Protocol Secure, sicheres Hypertext-Übertragungsprotokoll
Übertragungsprotokoll
HTTPS ist ein Verfahren, um Daten im World Wide Web abhörsicher zu übertragen.
übertr
Internet Information Services
IIS ist eine Diensteplattform der Firma Microsoft für PCs und Server.. Über sie können
Dokumente und Dateien im Netzwerk zugänglich gemacht werden. Als
Kommunikationsprotokolle kommen zum Beispiel HTTP, HTTPS oder FTP zum Einsatz.
Just-in-time
Job Planing System, ein GCS Software-Produkt
Software
KSR EDV-Ingenieurbüro
Ingenieurbüro GmbH
Language INtegrated Query
LINQ ist eine Komponente von Microsoft .NET-Framework
Framework zur Abfrage von Datenquellen
wie Datenbanken oder XML-Dateien.
XML
Mobile Datenerfassung
Microsoft Sync Framework
MSF ist eine umfangreiche
umfangreiche Synchronisierungsplattform, die Zusammenarbeit und
Offlinezugriff für Anwendungen, Dienste und Geräte ermöglicht.
Microsoft Intermediate Language, neu eigentlich CIL (Common Intermediate Language)
CIL ist eine Zwischensprache,
Zwischensprache in die alle Programme der Common Language Infrastructure
übersetzt werden.
werden
Namensraum
New Technology File System
NTFS ist ein Dateisystem von Microsoft. Im Vergleich zu FAT bietet NTFS unter anderem
einen gezielten Zugriffsschutz auf Dateiebene sowie grössere Datensicherheit.
Original Equipment Manufacturer, Originalausrüstungshersteller
Operating System, Betriebssystem
Personal Digital Assistant
Ein PDA ist ein kompakter, tragbarer Computer,, der neben vielen anderen Programmen
hauptsächlich für die persönliche Kalender-,
Kalender Adress- und Aufgabenverwaltung benutzt
wird.
Random Access Memory,
Memory Speicher mit wahlfreiem Zugriff
Remote Database Access
Ein ISO/OSI-Standard
Standard zur Verteilung von Datenbankoperationen in heterogenen verteilten
Systemen.
Radio Frequency Identification
Der englische Begriff „Radio Frequency Identification“ bedeutet
bedeutet im Deutschen
„Identifizierung
Identifizierung mit Hilfe von elektromagnetischen Wellen“. RFID ermöglicht die
automatischen Identifizierung und Lokalisierung von Gegenständen und erleichtert damit
erheblich die Erfassung und
u Speicherung von Daten.
Read-Only
Only Memory, Nur-Lese-Speicher
Nur
Speech Application Programming Interface
SAPI ist eine Schnittstelle zur Anbindung von Bibliotheken zur Sprachsynthese
prachsynthese und
Spracherkennung unter dem Betriebssystem Microsoft Windows.
Software Development Kit
Ein SDK ist eine Sammlung von Programmen und Dokumentationen zu einer bestimmten
Software, die es Softwareentwicklern erleichtern bzw. erst ermöglichen soll, eigene
darauf basierende Anwendungen zu erstellen.
Anhang D – Begriffe und Abkürzungen
Projekt
Mobile DMS-Datenerfassung
Datenerfassung
Autor
Datum
Version
Dokument
Philipp Buser
10.09.2009
1.0
Projektdokumentation
Begriff
SOAP
SQL
SSL
UMTS
Use Case
VCS
VGA
VIS
VTS
WCF
Webservice
WLAN
WSDL
Seite
140(141)
Beschreibung
Ein Netzwerkprotokoll, mit dessen Hilfe Daten zwischen Systemen ausgetauscht und
Remote Procedure Calls durchgeführt
durchgef
werden können.
Structured Query Language
SQL ist eine Datenbanksprache zur Definition, Abfrage und Manipulation von Daten in
relationalen Datenbanken.
Datenbanken
Secure Sockets Layer
SSL ist ein Netzwerkprotokoll zur sicheren Übertragung von Daten.
Daten
Universal Mobile Telecommunications System
UMTS steht für den Mobilfunkstandard der dritten Generation (3G), mit dem deutlich
höhere Datenübertragungsraten (384 kbit/s bis 7,2 Mbit/s) als mit dem
Mobilfunkstandard der zweiten Generation (2G), dem GSM-Standard
Standard (9,6 kbit/s bis 220
kbit/s), möglich sind.
Ein Anwendungsfall,
Anwendungsfall, auch im Deutschen eher unter dem englischen Ausdruck Use Case
bekannt, definiert ein Verhalten zwischen
zwischen Akteuren und dem betrachteten System, die
stattfindet, um ein bestimmtes fachliches Ziel zu erreichen.
Vehicle Calculation System, ein GCS Software-Produkt
Software
Video Graphics Array
VGA bezeichnet einen Computergrafik-Standard,
Standard, der bestimmte Kombinationen von
Bildauflösung und Farbanzahl sowie Wiederholfrequenz definiert.
Vehicle Inhouse System, ein GCS Software-Produkt
Software
Vehicle Trading System, ein GCS Software-Produkt
Softwa
Windows Communication Foundation
WCF ist ein Satz von .NET-Technologien
.NET Technologien zum Erstellen und Ausführen vernetzter Systeme.
Es handelt sich dabei um eine neue Klasse der Kommunikationsinfrastruktur, die für die
Webdienstarchitektur erstellt wurde.
wur
Ein Webservice oder Webdienst ist eine Software-Anwendung,
Anwendung, die mit einem Uniform
Resource Identifier (URI) eindeutig identifizierbar ist und deren Schnittstelle als XMLArtefakt definiert, beschrieben und gefunden
gefunden werden kann. Ein Webservice unterstützt
die direkte Interaktion mit anderen Software-Agenten unter Verwendung
rwendung XML-basierter
XML
Nachrichten durch den Austausch über internetbasierte Protokolle.
Wireless LAN, Wireless Local Area Network
WLAN bezeichnet ein „drahtloses“, lokales Funknetz,, wobei meistens ein Standard der
IEEE-802.11-Familie
Familie gemeint ist.
Web Service Description Language
WSDL ist eine
ine plattform-,
plattform programmiersprachen- und protokollunabhängige
Beschreibungssprache für Webservices zum Austausch von Nachrichten auf Basis von
XML.
Anhang D – Begriffe und Abkürzungen
Projekt
Mobile DMS-Datenerfassung
Datenerfassung
Autor
Datum
Version
Dokument
Philipp Buser
10.09.2009
1.0
Projektdokumentation
Anhang E – Projektplan
Anhang E – Projektplan
Seite
141(141)
Herunterladen