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)