Mobile Computing mit Windows Mobile .NET Compact Framework & Webanwendungen Wie testet man, ob ein Ei schlecht ist? WAS SIE HIER NICHT LERNEN 1 Agenda I Was ist Mobile Computing? I Was ist Mobile Computing? • Mobile Betriebssysteme von Microsoft • Wer kann Mobile Computing? II Grundlagen Mobile Computing • Plattformen, Werkzeuge • Leistungsmerkmale der SDKs, Browser etc. • mobile Anwendungen / Webanwendungen III Fazit • Lohnt sich Mobile Computing? 2 Mobile Computing Mobile Betriebssysteme Mobile Geschäftsprozesse Mobile Geräte Die mobilen Betriebssysteme • Windows Mobile ist ein Markenname von Microsoft 4 Die Basis mobiler Betriebssysteme Torsten Weber | I Was ist Mobile Computing? 5 [1] Windows Mobile 5 / 6 • Partnerinnovationen • graduelle Verbesserungen • 3G/UMTS, WiFi, Voice/Data • neue APIs • „höhere“ Produktivität • Word, Excel, Powerpoint Mobile • Persistent Storage • ActiveSync 4 • „besseres“ Multimedia • WMP 10 Mobile • HDD, USB 2.0 … 6 Wer kann Mobile Computing? • vor einigen Jahren waren mobile Anwendungen schwerer zu entwickeln, das ist heute leichter • die Werkzeuge sind erheblich mächtiger • .NET Compact Framework ist verfügbar • keine tief greifenden Kenntnisse oder spezielle Ausbildung erforderlich • jeder kann prinzipiell sofort damit entwickeln Torsten Weber | I Was ist Mobile Computing? 7 Windows Mobile ist anders • Entwicklung für mobile Geräte nicht vergleichbar mit Entwicklung für Desktops oder Server • unter Windows Mobile 5 nur 32 Prozesse und nur 32 MB virtueller Adressierungsraum • Einschränkungen wurden mit Windows Embedded CE 6 aufgehoben • Embedded CE 6 != Windows Mobile 6 Torsten Weber | I Was ist Mobile Computing? 8 Windows Mobile ist anders • Microsoft: mobile Anwendungen sollten nicht beendet werden • andere Speicherverwaltung: Anwendungen können jederzeit beendet werden • darauf kann reagiert werden Torsten Weber | I Was ist Mobile Computing? 9 Windows Mobile ist anders Torsten Weber | I Was ist Mobile Computing? 10 Windows Mobile ist anders Torsten Weber | I Was ist Mobile Computing? 11 Windows Mobile ist anders Torsten Weber | I Was ist Mobile Computing? 12 Windows Mobile ist anders 96 dpi 192 dpi Torsten Weber | I Was ist Mobile Computing? 13 Windows Mobile ist anders Torsten Weber | I Was ist Mobile Computing? 14 Windows Mobile ist anders Torsten Weber | I Was ist Mobile Computing? 15 Wer kann Mobile Computing? • prinzipiell kann jeder Mobile Computing • mächtige Entwicklungsumgebung + Kenntnisse in .NET Framework und / oder .NET Compact Framework != konzeptionell gutes Mobile Computing • es benötigt auch einen Erfahrungsschatz Torsten Weber | I Was ist Mobile Computing? 16 Wer kann Mobile Computing? • Was ist, wenn die Erfahrung fehlt? • Was ist, wenn nur ein Aspekt mobil gemacht werden soll? Torsten Weber | I Was ist Mobile Computing? 17 Sie brauchen was mobiles! 1. Lösung: Terminalanwendung Torsten Weber | I Was ist Mobile Computing? 18 Sie brauchen was mobiles! 2. Lösung: Webanwendung Torsten Weber | I Was ist Mobile Computing? 19 Sie brauchen was mobiles! 3. Lösung: .NET Compact Framework Torsten Weber | I Was ist Mobile Computing? 20 Sie brauchen was mobiles! 4. Lösung: .NET Compact Framework + XSLT Torsten Weber | I Was ist Mobile Computing? 21 Sie brauchen was mobiles! Welche Lösung? Mobile Betriebssysteme Mobile Geschäftsprozesse Mobile Geräte Torsten Weber Wie und Was unterscheiden können • Funktionsweise einer Versicherung: kollektive Risikoübernahme – die Verteilung von Risiko auf Menge und auf Zeit • machen Coca Cola und Pepsi dasselbe? • das Geschäft ist das Was • braucht eine Versicherung Service-Orientierung oder Mobile Computing und dort AJAX? | I Was ist Mobile 23 ist das Wie Torsten Weber Computing? Wie und Was unterscheiden können II Grundlagen Mobile Computing MSXML URL, Parameter Kartendienst Mobiles System JPEG, PNG Desktop System SOAP Adresssuche JSON VPN Datenbank Service Ereignisse MSMQ Kompri mierung Werkzeuge für Mobile Computing • Entwicklung für das .NET Compact Framework – mit Visual Studio Standard Edition (2005) bzw. Professional (2008) (aber jeweils nie Express) • native (C++) Device-Programmierung – kein extra Werkzeug mehr für eMbedded VC++ – MFC 8, ATL 8 (auch für Smartphone), STL, CRT • Forms-Designer, Datentools, etc. • Emulatoren – ARM-Image Torsten Weber | II Grundlagen Mobile • Deployment-Designer (CAB-Files) + Code-Sign.25 Computing Das .NET Compact Framework • ist kompatible Teilmenge des .NET Framework • für Windows CE-basierte Geräte • bekannte .NET-Entwicklung – RAD für mobile Geräte – Designer, Debugger, Emulatoren • im Geräte-ROM seit WM 2003 – Vorteil gegenüber Desktop, Server • in .NET CF 2 kein COM Interop Torsten Weber | II Grundlagen Mobile Computing 26 Ein Vergleich .NET / .NET CF 72% 8% 28% .NET Framework 2.0 Funktionalität .NET Compact Framework 2.0 Größe Torsten Weber | II Grundlagen Mobile Computing 4% 28% .NET Compact Framework 2.0 (ROM) 27 Die Funktionalitäten beim .NET CF 2 Visual Studio 2005 Native MFC Managed ATL .NET Compact Framework Win32 Server side ASP .NET Mobile Controls Software Platform (APIs) Device Management Communication Presentation Data Access Multimedia Remote API Configuration* Bluetooth Security State & Notifications* Pocket Watson Connection Mgr. TAPI* SMS* MAPI* POOM* ActiveSync Home Screen User Interface/Shell HTML Control DOM SQL CE ADO CE XML CE DB OLE DB GAPI Camera D3DM Location* Windows CE Windows Mobile * = Managed wrappers CE DB ActiveSync SQL CE Pocket Outlook Pocket Internet Explorer Windows Media Player Drivers Device Hardware Processor Memory GSM/GPRS Display Radio CDMA/1xRTT USB or Serial Torsten Weber | II Grundlagen Mobile Computing WiFi Bluetooth 28 Neuerungen in .NET CF 2 • • • • • • • • mehr Performance Generics, partielle Klassen COM Interop Kryptographie Message Queues serielle Ports neue Steuerelemente User Controls mit Designer Torsten Weber | II Grundlagen Mobile Computing 29 Wenn das .NET CF nicht reicht • Bluetooth, Druck, IrDA, OBEX • Smart Device Framework • 32feet.com ComponentOne Infragistics In the Hand Odyssey Software Xceed Torsten Weber | II Grundlagen Mobile Computing 30 [2], [3], [4] Die Entwicklung einer mobilen Anwendung Visual Studio 2005 C# / VB.NET .NET CF „Desktop“ Version Windows .NET CF Torsten Weber | II Grundlagen Mobile Computing Windows Mobile 31 mobiler SQL Server (ab .NET CF 1) • • • • • • • kompakte relationale Datenbank SQL-Syntax (kompatibel mit SQL Server) hohe Performance unterstützt Replikation & Synchronisation Zugriff per ADO.NET, ADOCE, OLEDBCE 128-Bit-Verschlüsselung der DB unterstützt Transaktionen Torsten Weber | II Grundlagen Mobile Computing 32 mobiler SQL Server (ab .NET CF 2) • Multi-User-Support • SqlCeResultSet (scrollable updateable Cursor) zusätzlich zu DataReader, DataSet, DataTable • Named Parameters • Auto-Compact • Management-Tools • VS2005-Integration • Smartphone-Unterstützung • für Win CE & Win32 Torsten Weber | II Grundlagen Mobile 33 Computing Szenario DataSet if (Person.New) { datamodel.Update(); … Code / RAM Dateisystem / RAM Torsten Weber | II Grundlagen Mobile Computing 34 Szenario SqlCeResultSet if (Person.New) { datamodel.Update(); … Code / RAM Dateisystem / RAM Torsten Weber | II Grundlagen Mobile Computing 35 Windows Mobile 5 – Was ist neu? • .NET Compact Framework 1 SP3 im ROM • RAM-Installation von CF 2.0 für PPC & Smartphone • SQL Mobile für PPC & Smartphone • Managed MAPI, Telephony, Pocket Outlook… • State & Notifications Broker • D3D Mobile • APIs für Kamera & Location • einheitliches CAB-Format Torsten Weber | II Grundlagen Mobile Computing 36 neue Steuerelemente • CameraCapture • ContactPicker • PicturePicker Torsten Weber | II Grundlagen Mobile Computing 37 neue APIs - Managed Outlook Mobile • früher kein COM Interop, unter .NET CF 2 aber • oder mit Windows Mobile 5 API – geht auch mit .NET CF 1 • Beispiel OutlookSession outlook = new OutlookSession(); Contact me = new Contact(); me.FullName = “Torsten Weber”; outlook.Contacts.Items.Add(me); // gespeichert me.JobTitle = “BASTA Speaker”; me.Update(); // gespeichert Torsten Weber | II Grundlagen Mobile Computing 38 neue APIs - Managed Messaging • Microsoft.WindowsMobile.PocketOutlook • Email & SMS – + Attachments • Recipient ≠ Contact ! • Beispiel Dim message As New SmsMessage message.To.Add(New Recipient(callerNumber)) message.Body = “Update Process 203 RPC40o" + selectedTime message.Send() Torsten Weber | II Grundlagen Mobile Computing 39 neue APIs - SnAPI • State & Notifications API • einheitliches API zwecks Benachrichtigung, "wenn etwas passiert" • nutzt dokumentierte Registry-Keys • transient & persistent notifications Torsten Weber | II Grundlagen Mobile Computing 40 Szenario „Dispatching“ mit SnAPI S M S Torsten Weber | I Was ist Mobile Computing? 41 neue APIs - SnAPI • zwei Schritte – SystemState-Objekt erzeugen – Event-Handler anhängen • Beispiel SystemState callerId = new SystemState( SystemProperty.PhoneIncomingCallerContact); callerId.Changed += new EventHandler(callerId_Changed); void callerId_Changed(object sender, ChangeEventArgs e) { Contact caller = (Contact)callerId.CurrentValue; Torsten Weber | II Grundlagen Mobile Computing 42 neue APIs - SnAPI • Beispiel SystemState missedCall; void Form_Load(…) { if(!SystemState.IsApplicationLauncherEnabled( “MyApp.MissedCall”)) { missedCall = new SystemState( SystemProperty.PhoneMissedCall ); missedCall.EnableApplicationLauncher( “MyApp.MissedCall”); } else { SystemState missedCall = new SystemState(“MyApp.MissedCall”); } missedCall.ChangedTorsten += Weber new| II Grundlagen Mobile Computing EventHandler(missedCall_Changed); 43 Leitfaden für die erste mobile Anwendung • Visual Studio – andere IDE ist möglich – Emulatoren sind dabei – mobiler SQL Server ist dabei – Windows Mobile SDKs nachinstallieren • Windows Mobile 5 SDK • Windows Mobile 6 SDK • lokalisierte Abbilder der Emulatoren nachinstallieren – weitere Werkzeuge wie| II SmartDeviceFramework Torsten Weber Grundlagen Mobile Computing 44 Leitfaden für die erste mobile Anwendung II Grundlagen mobile Webanwendungen • für den physischen Zugriff auf mobile Geräte bzw. Emulatoren: ActiveSync (XP) ab 4.1 bzw. Gerätecenter (Vista) • optional – Geräteemulator 2 oder höher Torsten Weber | II Grundlagen Mobile Computing 45 [5] – [13] 2 Szenarien für das Wie für Mobile AJAX • Mobile Webanwendung + Mobile AJAX – mit Internet Explorer Mobile seit Windows Mobile 2003 möglich – auch bei mobilen Geräten gibt es Vorteile von AJAX: • Webseiten nicht komplett neu laden • spart Bytes und damit Geld – Praxis • .NET CF Anwendung + Mobile AJAX – XML-Transformation für „mehr Benutzeroberfläche“ Torsten Weber | II Mobiles AJAX – Wie geht es? 46 2 Szenarien für das Wie für Mobile AJAX Webanwendung Dateninseln .NET CF Anwendung (Beispiel 1) MSXML (Beispiel 4) MSXML (Beispiel2) SOAP & mehr (nahtlosmobil.de/cd110 6 + Beispiel 3) Torsten Weber | II Mobiles AJAX – Wie geht es? 47 2 Szenarien für das Wie für Mobile AJAX Webanwendung Dateninseln .NET CF Anwendung (Beispiel 1) MSXML (Beispiel 4) MSXML (Beispiel2) SOAP & mehr (nahtlosmobil.de/cd110 6 + Beispiel 3) Torsten Weber | II Mobiles AJAX – Wie geht es? 48 Was ist klar. Sie brauchen was mobiles! Wie?: Eine Webanwendung mit AJAX Detailinformationen: Ihr Mobile Operator ist T-Mobile oder Simyo oder jemand anderes. Wer weiß das schon so genau. Torsten Weber | II Mobiles AJAX – Wie geht es? 49 Szenario Webanwendung mit AJAX • Produktdaten mobil abfragen • notwendig: Produkt-ID • soll verhindert werden: zusätzliches „HTMLDrumherum“ (Overhead) • Vorteil: Zwischenschritt eines Seitenaufbaus entfällt, Anwendung weiter sicht- und bedienbar Torsten Weber | II Mobiles AJAX – Wie geht es? 50 Szenario Webanwendung mit AJAX Produkt-ID Produkt ? Produkt-ID Produkt Torsten Weber | II Mobiles AJAX – Wie geht es? 51 Szenario Webanwendung mit AJAX • wie viel übertragen wird, ist mit Fiddler feststellbar (www.fiddlertool.com) • unterstützt als HTTP Debugging Proxy einen Debug-Modus wie eine IDE • bei Emulatoren / mobile Geräten ist eine Konfiguration für Fiddler notwendig Torsten Weber | II Mobiles AJAX – Wie geht es? 52 Mitgeschrieben für Sie! Die Konfiguration von Fiddler • • • • Für die Verwendung von Fiddler auf mobilen Geräten muss ein Browser erst konfiguriert werden. Für den Internet Explorer Mobile 5 unter Windows Mobile 5 (Pocket PC) führen Sie diese Konfiguration über Start, Einstellungen, Reiter Verbindungen, Anwendung Verbindungen, Reiter Erweitert und die Schaltfläche Netzwerk auswählen durch. Stellen Sie anschließend die Option Programme mit automatischem Internetzugriff verwenden auf den Eintrag Firmennetzwerk um. Klicken Sie dann auf die Schaltfläche Bearbeiten und wählen Sie den Reiter Proxyeinstellungen aus. Als nächstes muss die Option Dieses Netzwerk verwendet einen Proxyserver aktiviert und unter Proxyserver der Wert ppp_peer bei einer Verbindung über Bluetooth oder DMA bzw. dtpt_peer bei einer Verbindung über USB eingegeben werden. Klicken Sie anschließend auf Erweitert und im folgenden Dialog auf den Eintrag ppp_peer bzw. dtpt_peer beim Typ HTTP. Jetzt muss nur noch der Anschluss von 80 auf 8888 geändert und das Ganze 5-mal mit OK bestätigt werden. Jetzt ist der Desktop PC an der Reihe bei dem mit der rechten Maustaste im Infobereich der Taskleiste auf das Symbol von ActiveSync geklickt und dort im Kontextmenü der Eintrag Verbindungseinstellungen ausgewählt werden muss. In dem darauffolgenden Dialogfeld muss unter Dieser Computer ist verbunden mit die Option Firmennetzwerk eingestellt und mit OK bestätigt werden. Starten Sie Fiddler und wählen Sie aus dem Menü Tools den Menüpunkt Fiddler Options aus. Im darauf folgenden Dialogfeld Fiddler Options aktivieren Sie die Option Allow remote clients to connect aus und bestätigen mit OK. Docken Sie das mobile Gerät ein. Haben Sie keines zur Verfügung und arbeiten mit einem Emulator kann auch eine virtuelle Dockingstation verwendet werden. Hier muss erst sichergestellt werden, dass sich ActiveSync 4.x mit dem Emulator verbinden kann. In ActiveSync prüfen Sie über den Menübefehl Datei/Verbindungseinstellungen und in dem darauf folgenden Dialogfeld unter Verbindung zu folgenden Anschlüssen zulassen ob dort DMA ausgewählt ist. Anschließend kann über den Menüpunkt Extras/Geräteemulator-Manager per Kontextmenü eines gerade laufenden Emulators der Eintrag In Basisstation ausgewählt werden. Hat alles geklappt, ändert sich das Symbol des ausgewählten Emulators in ein Symbol, das eine Netzwerkverbindung dargestellt. Jetzt kann mit Start\Internet Explorer der Internet Explorer Mobile gestartet und der dabei entstehende Datenverkehr protokolliert und manipuliert werden. Eventuell muss dazu noch die Firewall des Desktop PCs angepasst und dort der Port 8888 freigegeben werden. Torsten Weber | II Mobiles AJAX – Wie geht es? 53 [3] Szenario Webanwendung mit AJAX • das Wie – Webanwendung mit Mobile AJAX welche Technologie? • zweckadäquat entscheiden – alles laden: XML-Dateninseln – teilweise laden: MSXML – im Kontext laden: Mobile AJAX in Verbindung mit SOAP / XML, JSON usw. Torsten Weber | II Mobiles AJAX – Wie geht es? übertragene Daten 54 [4], [5], [6] 2 Szenarien für das Wie für Mobile AJAX Webanwendung Dateninseln .NET CF Anwendung (Beispiel 1) MSXML (Beispiel 4) MSXML (Beispiel2) SOAP & mehr (nahtlosmobil.de/cd110 6 + Beispiel 3) Torsten Weber | II Mobiles AJAX – Wie geht es? 55 Szenario Webanwendung mit AJAX Lösung 1: Dateninseln • Beispiel für eine XML-Dateninsel: <xml> <Chapters> <Chapter Name=“Vorwort”> <ReferenceWeb ID=“…” URL=“…”>…</ReferenceWeb> </Chapter> <Chapter …> … </Chapter> </Chapters> </xml> CODE Torsten Weber | II Mobiles AJAX – Wie geht es? DEMO 56 Szenario Webanwendung mit AJAX Lösung 1: Dateninseln • Beispiel für eine XML-Dateninsel: function loadChapters() { xmlDoc = Chapters.XMLDocument; chapters = xmlDoc.getElementsByTagName("Chapter"); for (i = 0; i < chapters.length; i++) { option = new Option(); option.text = chapters[i].attributes.getNamedItem("Name").text; option.value = option.text; document.all.chaptersList.options.add(option);CODE } Torsten Weber | II Mobiles AJAX – Wie DEMO 57 } geht es? 2 Szenarien für das Wie für Mobile AJAX Webanwendung Dateninseln .NET CF Anwendung (Beispiel 1) MSXML (Beispiel 4) MSXML (Beispiel2) SOAP & mehr (nahtlosmobil.de/cd110 6 + Beispiel 3) Torsten Weber | II Mobiles AJAX – Wie geht es? 58 Szenario Webanwendung mit AJAX Lösung 2: MSXML • erlaubt asynchrones Laden von Dateien per HTTP-GET… mit Hilfe von Msxml2.XMLHTTP • eventuell kombiniert mit dritter Lösung (Kontext) Torsten Weber | II Mobiles AJAX – Wie geht es? 59 Szenario Webanwendung mit AJAX Lösung 2: MSXML • Beispiel laden einer Datei function LoadXmlFile() { if (webRequest) { new ActiveXObject("Msxml2.XMLHTTP"); if (webRequest) { webRequest.onreadystatechange = ParseResponse; webRequest.open("GET", „http://...foo.xml", true); webRequest.send(); } CODE } … Torsten Weber | II Mobiles AJAX – Wie DEMO 60 geht es? } 2 Szenarien für das Wie für Mobile AJAX Webanwendung Dateninseln .NET CF Anwendung (Beispiel 1) MSXML (Beispiel 4) MSXML (Beispiel2) SOAP & mehr (nahtlosmobil.de/cd110 6 + Beispiel 3) Torsten Weber | II Mobiles AJAX – Wie geht es? 61 Szenario Webanwendung mit AJAX Lösung 3: SOAP (oder was anderes) • Internet Explorer Mobile 5 bietet JScript 5.6 • bei Windows Mobile 2003 – innerText und innerHMTL nur bei div und span unterstützt – Zugriff auf Inhalte nur innerhalb von <form>…</form> • bei Windows Mobile 5 gibt es eine Unterstützung für style und document.all Torsten Weber | II Mobiles AJAX – Wie geht es? 62 Szenario Webanwendung mit AJAX Lösung 3: SOAP (oder was anderes) • Beispiel für Windows Mobile 2003 / Windows Mobile 5 Kompatibilität: … <body> <form id="productID" …> <input type="button" id="btnRequest"… /> <div id="wait" /> wait.innerHTML = '<img <div id="result" /> document.forms['productID'] src="Resources/Wait.gif" .btnRequest.disabled = </form> id="imgWait" alt="Bitte true; </body> warten..." />'; </html> Torsten Weber | II Mobiles AJAX – Wie geht es? 63 Szenario Webanwendung mit AJAX Lösung 3: SOAP (oder was anderes) • beim .NET Framework / .NET Compact Framework gibt es Proxyklassen, bei AJAX dagegen ActiveX • damit können die Grenzen von JavaScript und HTML überwunden werden • Zugriff auf Daten läuft zweigeteilt, asynchron ab Torsten Weber | II Mobiles AJAX – Wie geht es? 64 Szenario Webanwendung mit AJAX Lösung 3: Beispiel ASP.NET 2.0 Web Service Produkt-ID Produkt SOAP- Steuerelemente SOAPNachricht verschicken aktivieren, Nachricht Statusbild Methode für ausblenden zusammen Schritt 2 bauen Ergebnis von SOAP registrieren Browserweiche auswerten und für ActiveX anzeigen Objekt Steuerelemente deaktivieren, Statusbild anzeigen WS 1 2 Torsten Weber | II Mobiles AJAX – Wie geht es? Produkt-ID Produkt CODE DEMO CODE 65 2 Szenarien für das Wie für Mobile AJAX Webanwendung .NET CF Anwendung Dateninseln (Beispiel 1) MSXML (Beispiel2) SOAP & mehr d y n a m i s c h MSXML (Beispiel 4) (nahtlosmobil.de/cd110 6 + Beispiel 3) Torsten Weber | II Mobiles AJAX – Wie geht es? 66 Szenario Webanwendung mit AJAX Lösung 4: On-Demand-JavaScript • bei Desktop und Servern bei JSON verwendet • „normal“ – über document.CreateElement <script> erzeugen – dann src-Attribut von <script> setzen – bei IE Mobile nicht unterstützt (IE stürzt ab / hängt) • <script>, src und Ziel erzeugen, als innerHTML eines <div> Torsten Weber | III Fazit 67 Szenario Webanwendung mit AJAX Lösung 4: On-Demand-JavaScript • <div id="scriptHolder"></div> // irgendwo // dann mit JavaScript On-Demand Code erzeugen // oder abrufen mit var newScript = "<script type='text/javascript' src='http://dataservice.com/getData?p=wert&format=json' />"; scriptHolder.innerHTML = newScript; • Methode bei Desktops, Servern wegen ScriptInjection nicht unterstützt – Browserweiche Torsten Weber | III Fazit 68 2 Szenarien für das Wie für Mobile AJAX Webanwendung .NET CF Anwendung Dateninseln (Beispiel 1) MSXML (Beispiel2) SOAP & mehr d y n a m i s c h MSXML (Beispiel 4) (nahtlosmobil.de/cd110 6 + Beispiel 3) Torsten Weber | II Mobiles AJAX – Wie geht es? 69 Szenario .NET CF mit AJAX (durch XSLT) Lösung: MSXML III Fazit • Oberflächen des .NETCF erweiterbar • … aber Probleme können entstehen • WebBrowser = COM • Komplexität im Quellcode Torsten Weber | II Mobiles AJAX – Wie geht es? 70 Mobile Best Practices A 1 B 3 2 Mobile Best Practices • HTTP-Kommunikation ist smart, aber langsam und „fett“ – Fiddler Tool einsetzen – eigene Datenstrukturen und Protokolle einsetzen – nur „Header“ übertragen • bei mehreren Backend-Systemen Middle-Tier Mobile Best Practices • Zugriffsschichten, nicht pro Formular – Singleton-Provider, Singleton-Base – Bibliotheken… EanReader ean = new EanReader (); ean.Enabled = true; … SingletonProvider EanReader ean = new EanReader (); ean.Enabled = true; … SingletonProvider <EandReader>.Instance .Enabled = true; Mobile Best Practices • XML-Verarbeitung bei .NET CF 2 um 40 % schneller • XMLDocument im Ausnahmefall – XMLTextReader • Datenbank vs. Dateisystem • DataSets vs. ResultSets Mobile Best Practices • GC.Collect(); bei Bild-Operationen – Bilder sind unverwaltet • Generics einsetzen • Reflection kostet unheimlich viel Zeit • Referenz- oder Werttyp? Mobile Best Practices • Multi-Threading einsetzen – – – – – bei Splashscreens bei Datenbankzugriffen bei Web Service-Zugriffen Application.DoEvents(); reicht manchmal BeginUpdate, EndUpdate verwenden Mobile Best Practices • Formulare einfach halten – jedes Steuerelement muss sich die Berechtigung „verdienen“ – Tastatur eventuell selber als Formular • Muss der Stift sein? – Steuerelement finden – Gestensteuerung – Steuercodes Mobile Best Practices Mobile Best Practices • Formulare nicht gerätespezifisch – an Unterschiede bei DPI und Ausrichtung denken – Anchoring, Docking verwenden • Add-Ins für Visual Studio für P/Invoke • Komponenten verwenden Mobile Best Practices • PerformanceCounter oder • Power Toys verwenden • • • • • • Remote Performance Monitor and GC Heap Viewer NETCF CLR Profiler App Configuration Tool (NetCFcfg.exe) NETCF ServiceModel Metadata Tool Remote Logging Configuration Tool NETCF Network Log Viewer Mobile Best Practices • PerformanceCounter oder • Power Toys verwenden • • • • • • Remote Performance Monitor and GC Heap Viewer NETCF CLR Profiler App Configuration Tool (NetCFcfg.exe) NETCF ServiceModel Metadata Tool Remote Logging Configuration Tool NETCF Network Log Viewer Mobile Best Practices Mobile Best Practices Mobile Best Practices Mobile Best Practices Mobile Best Practices Fazit • jeder kann Mobile Computing – Berührungsängste – Erfahrungsschatz • enorme Wachstumsraten – „2012“ – führt kein Nischendasein mehr • Mobile Computing mit .NET CF – relativ einfach – ein „so geht es los“-Leitfaden fehlt – Dokumentation manchmal sehr Torsten Weber | III Fazit dürftig 88 Fragen? Wer exportiert die meisten Nilpferde…? Torsten Weber 89 Links & Informationen [1] Quelle Abbildungen: de.wikipedia.org/wiki/Lego [2] Smart Device Framework, www.opennetcf.org [3] In the Hand, www.inthehand.com [4] Bluetooth, IrDA, OBEX, www.32feet.net [5] ActiveSync v4.5 German – Deutsch www.microsoft.com/downloads/details.aspx?familyid=EC48087F-E74B-4B19-AD8BA69E4CFF6295&displaylang=de [6] Windows Mobile 5.0 SDK for Pocket PC www.microsoft.com/downloads/details.aspx?familyid=83A52AF2-F524-4EC5-9155717CBE5D25ED&displaylang=en [7] Windows Mobile 5.0 SDK for Smartphone www.microsoft.com/downloads/details.aspx?familyid=DC6C00CB-738A-4B97-89105CD29AB5F8D9&displaylang=en [8] Windows Mobile 6 Professional and Standard Software Development Kits Refresh http://www.microsoft.com/downloads/details.aspx?familyid=06111a3a-a651-4745-88ef3d48091a390b&displaylang=en Torsten Weber 90 Links & Informationen [9] Localized Windows Mobile 5.0 Pocket PC Emulator Images www.microsoft.com/downloads/details.aspx?familyid=EEC33AE3-C129-4C25-ABAA18E8E842178F&displaylang=en [10] Localized Windows Mobile 5.0 Smartphone Emulator Images www.microsoft.com/downloads/details.aspx?FamilyID=52fed581-8f8d-4c46-99664832098191b7&DisplayLang=en [11] Windows Mobile 6 Localized Emulator Images www.microsoft.com/downloads/details.aspx?familyid=38C46AA8-1DD7-426F-A9134F370A65A582&displaylang=en [12] Microsoft Device Emulator 2.0 – Eigenständige Version www.microsoft.com/downloads/details.aspx?familyID=dd567053-f231-4a64-a648fea5e7061303&displaylang=de [13] Windows Mobile Device Center www.microsoft.com/windowsmobile/devicecenter.mspx Torsten Weber 91 Links & Informationen Download des Verweiswerkzeuges www.nahtlos-mobil.de/werkzeuge/verweiswerkzeug.zip www.nahtlos-mobil.de/werkzeuge/verweiswerkzeug64.zip www.nahtlos-mobil.de/werkzeuge/verweiswerkzeugItanium.zip Programmieren mit dem .NET Compact Framework. Anwendungsentwicklung für mobile Geräte, Ruprecht Dröge, Peter Nowak, Torsten Weber Microsoft Press Deutschland 06/2008, 3-86645-426-0 Microsoft Press Deutschland 09/2006, 3-86645-401-5 Impressum Torsten Weber * 22. März 1977, Wurzen MVP Visual Developer Device Application Development Theodor-Körner-Straße 1 04808 Wurzen + 49 (3425) 924965 E-Mail: [email protected] Blog, XING und Publikationen: torstenweber.de