710 likes | 883 Views
Neue Mobilität. .NET Compact Framework 2.0 & SQL Server 2005 Mobile Edition. Frank Prengel Developer Evangelist Developer Platform & Strategy Group Microsoft Deutschland GmbH http://blogs.msdn.com/frankpr http://www.frankpr.de. Agenda. Intro .NET Compact Framework 1.0 + SQLCE 2.0
E N D
Neue Mobilität .NET Compact Framework 2.0 & SQL Server 2005 Mobile Edition Frank Prengel Developer Evangelist Developer Platform & Strategy Group Microsoft Deutschland GmbH http://blogs.msdn.com/frankpr http://www.frankpr.de
Agenda • Intro • .NET Compact Framework 1.0 + SQLCE 2.0 • Was geht? • Was geht nicht? • Workarounds • .NET Compact Framework 2.0 + SQL Mobile • Was ist neu? • Future Windows Mobile • Managed APIs
Intro Windows Mobile? Smartphone? Second Edition? Windows CE? Pocket PC? Phone Edition?
UI HtmlControls WebControls .NET Compact Framework 1.0 System.Web System.WinForms Services Design ComponentModel Description Discovery System.Drawing Protocols Caching Security Drawing2D Printing Text Configuration SessionState Imaging System.Data System.Xml ADO.NET SqlClient XmlDocument Serialization Reader/Writers Design SqlServerCe Xslt/XPath System Collections IO Configuration commonlanguageruntime Security Net ServiceProcess InteropServices Text Reflection Diagnostics Remoting Serialization Globalization Resources Threading nichtunterstützt verfügbar
Entwicklung mit dem CF Webservices Visual Studio.NET SOAP Smart Device Extensions Code .NET Compact Framework"Desktop-Version" .NET CompactFramework Device OS Windows Endgerät Entwicklermaschine
Unterstützte APIs • Common Base Classes • IO, Collections, Reflection, math. Funktionen, Zeichnen, Text • Connectivity • Networking, HTTP-Klassen, Aufrufen von Web Services • Datenzugriff • ADO.NET, SQL Server CE, SQL Server • XML • XmlDocument, XmlReader/Writer • Windows Forms • Custom Controls
PPC SP CF 2.0 Desktop Vergleich der Versionen
P/Invoke • Win32-Aufrufe als Ersatz für fehlende Funktionalität • Beschränkungen: • Pass by value: nur Typen <= 32 Bit (auch Structs!) • Pass by value: keine Floats • kein explizites Struct-Layout (nur "Sequential") • keine Strings oder Arrays in Structs • keine Funktionszeiger • keine Callbacks • kein DateTime • kein MarshalAs-Attribut
Pocket PC & Smartphone • "out of the box" in VS.NET 2003: Pocket PC 2002 • DLLs, Emulator • kein Smartphone 2002! • CF-Unterstützung zur .NET-Programmierung: • Pocket PC 2003 SDK • Emulatoren • Smartphone 2003 SDK • DLLs, Emulatoren
demo Smartphone Games Lutz Roeder's Digger
Was fehlt? • Wichtige Controls & UI-Features • User Controls • Visual Inheritance • Security :-( • Code Access Security • Kryptographie • Typisierte DataSets • Vorsicht bei Verwendung von Webservices • Komfortable Tools für Daten & SQLCE • WSE, Application Building Blocks, ...
Was fehlt noch? • ASP.NET • COM Interop • XSLT, XPath • Remoting • Serialisierung (SOAP, binary) • Install-time JIT (nGen) • Managed POOM, Telephonie etc.
“Inherited does not mean supported.” – Seth Demsey, .NET Compact Framework Team, Microsoft Corporation ... oder: Warum bleibt mein Button grau?
demo PocketRK Web ServicesCOM Interop & Inking mit CFCOM Visual Inheritance "Light"
SQL Server CE 2.0 • kompakte relationale Datenbank (< 2 MB) • SQL-Syntax (kompat. mit SQL Server 2000) • hohe Performance durch Query Optimizer • unterstützt Replikation & Synchronisation • 128-Bit-Verschlüsselung der DB • Zugriff per ADO.NET, ADOCE, OLEDBCE • unterstützt Transaktionen • Mgmt. Tool (ISQLW) auf dem Gerät
SQLCE & ADO.NET • Zugriff vom CF • System.Data.SqlServerCe • SqlCeEngine, SqlCeConnection, SqlCeCommand, ... • SqlCeDataReader, SqlCeDataAdapter • Referenzieren von SqlServerCe Deployment von SQLCE auf Gerät oder Emulator public void CreateDatabase() { if (!File.Exists(@”\My Documents\My Data.sdf”)) { string connStr = @“Data Source=\My Documents\My Data.sdf” ; SqlCeEngine engine = new SqlCeEngine(connStr); engine.CreateDatabase(); } }
Datenabgleich (1) • muß Besonderheiten mobiler Anwendungen berücksichtigen • Firewalls • Netzwerk"aussetzer" • unauffällig im Hintergrund • zwei Möglichkeiten: • Remote Data Access (RDA) • Merge Replication
Datenabgleich (2)Architektur Application SQL Server OLE DB Provider SQL CE Server Agent HTTP OLE DB SQL CE Client Agent OLE DB Internet Information Server (IIS) SQL CE Engine SQL 2000 Database Database
Remote Data Access • lose Kopplung SQLCE SQL Server • keine "Verbindung", sondern HTTP • Query-Resultate lokal gespeichert • Änderungen können zurückgeschrieben werden • Zugang im CF: SqlCeRemoteDataAccess • RDA Pull: lokale Tabelle aus Servertabelle oder Stored Procedure • RDA Push: lokale Änderungen zurück an den Server • Table Tracking muß eingeschaltet sein
RDA Pull/Push public void RDAPull(){ SqlCeRemoteDataAccess rda = new SqlCeRemoteDataAccess(); string ServerOledbStr = “Provider=sqloledb; Data Source=dataserver;”+ “Initial Catalog=Pubs;User Id=sa;Password=;”; rda.LocalConnectionString = @”Provider=Microsoft.SQLSERVER.OLEDB.CE.2.0;” + @”Data Source=\My Documents\test.sdf”; rda.InternetURL = @“http://www.dataserver.com/sqlce/sscesa20.dll”; rda.InternetLogin = “MyDomain\someuser”; rda.InternetPassword = “HaRd2GuEsS!$*”; rda.Pull( “Authors”, “Select * from authors where state = ‘CA’”, ServerOledbStr, RdaTrackOption.TrackingOn); } public void RDAPush(){ SqlCeRemoteDataAccess rda = new SqlCeRemoteDataAccess(); string ServerOledbStr = “Provider=sqloledb; Data Source=dataserver;”+ “Initial Catalog=Pubs;User Id=sa;Password=;”; rda.LocalConnectionString = @”Provider=Microsoft.SQLSERVER.OLEDB.CE.2.0;” + @”Data Source=\My Documents\test.sdf”; rda.InternetURL = @“http://www.dataserver.com/sqlce/sscesa20.dll”; rda.InternetLogin = “MyDomain\someuser”; rda.InternetPassword = “HaRd2GuEsS!$*”; rda.Push( “Authors”, ServerOledbStr, RdaBatchOption.BatchingOn); }
Merge Replication • Datensynchronisation SQLCE SQL Server • über HTTP • SQLCE erhält Snapshot vom Server • Änderung auf beiden Seiten möglich • Abgleich beim nächsten Synchronisieren • anpaßbare Konfliktbehandlung • Server agiert als Subscription Publisher • zusätzliche Serverlast & Ressourcen! • Verwendung im CF: SqlCeReplication
RDA oder Merge Replication? • RDA ist "kostengünstiger" • benutzen, wenn begrenzte Funktionalität ausreicht • Merge Replication bietet "Komplettlösung" • aber: belastet Server & Netzwerk mehr
demo SQLCE & RDA Traffic
Probleme mit SQLCE 2.0 • Single-User/-Proc DB • keine Mgmt.-Tools für den Desktop • keine Trigger, Stored Procedures • nur eine Subscription pro DB (Merge Repl.) • DB wächst unbegrenzt • SqlCeEngine.Compact • DataReader oder DataSet • kein scrollable Cursor • keine Unterstützung für Smartphone
Fazit CF 1.0 & SQLCE 2.0 • vertraute .NET-Entwicklung für mobile Geräte • RAD, Webanbindung, kompakte Datenbank • viele Wünsche offen, aber... • 3rd Party-Apps & Community-Unterstützung
Tools, Infos & Programmefür Windows Mobile Entwickler • Machen Sie sich schlau im Windows Mobile Developer Center:Im Developer Center finden Sie relevante Informationen aus erster Hand: Entwicklungstools, Online Communities, Webcasts, Technische Artikel, Downloads und vieles mehr. • Werden Sie Mitglied im Windows Mobile Solutions Partner Programm:Hier erhalten Developer Unterstützung bei der Entwicklung und Vermarktung von Windows Mobile Lösungen. • Zertifizieren Sie Ihre Anwendung über Mobile2Marketund erhalten ein Qualitätssiegel für Ihre Windows Mobile basierten Anwendungen. http://www.microsoft.com/germany/ms/mobile/entwickler
2.0 Introducing...
.NETCF 1.0 (ROM) .NETCF 2.0 Allgemeines • näher am "vollen" .NET Framework • neue Klassen, Protokolle, Funktionalität • Kompatibilität mit Version 1.0 • SxS, <supportedRuntime …/> • Performance • neuer JIT-Compiler • besseres Stringhandling • Unterstützung der Whidbey-Features • Generics, partielle Klassen, Iteratoren, anonyme Methoden
Windows.Forms • Visual Inheritance (!) • User Controls (!) • Bildschirmorientierung • Bildschirmauflösung • Clipboard • Control.DoubleClick • Docking • Anchoring
Neue Controls • DateTimePicker • MonthCalendar • DocumentList • LinkLabel • Notification Bubble • Help • WebBrowser • DataContainer • Splitter • RichInk
demo CF WinForms 2.0 Neue Controls Neue Features
P/Invoke - Neues • Strings & Arrays in Structs • Marshaling von Delegates als Funktionszeiger • Attribut MarshalAs • explizites Struct-Layout • Floats und DateTime • Typen > 32 Bit können by value übergeben werden
Version 1.0 Version 2.0 Application Code Application Code Managed Wrapper Managed Call Managed Interfaces P/Invoke Native Wrapper .NET CF Interop Layer COM Call COM Call COM Object COM Object Your Code Generated COM Object COM Interop • Managed Wrapper wird generiert (VS oder TLBIMP.EXE) • Projekt verweist auf Wrapper • COM-Interfaces & -typen verwenden wie .NET-Typen
CF: COM aus .NET aufrufen • Threads als MTA initialisiert • verantwortlich: System.Runtime.InteropServices • Marshal, MarshalAs • keine Unterstützung für Custom Marshaler • IDispatch-Einschränkungen • keine Structures (VT_RECORD) • keine Int64, UInt64 • kein automatisches ActiveX-Control-Hosting • Infrastruktur für eigene Wrapper vorhanden
demo COM Interop POOM
Netzwerk & Web Services • System.Messaging • Web Services • Performancesteigerung durch schnelleren XmlSerializer • Unterstützung für SOAP 1.2 • CredentialCache • verbesserte Authentifizierung • Kerberos & NTLM • IPv6
Weiteres • System.IO.Ports serieller Port • System.Security.Cryptography • (Triple)DES, MD5, SHA1, DSA, RSA, Rijndael, ... • X.509 • System.Xml • XPath 1.0 • Schemavalidierung • System.Drawing • Image.Save(...), custom pens
Smartphone-Unterstützung • Daten • SQL Mobile • DataGrid • Textbox: Wechsel der Eingabeart (abc, 123, T9, ...) InputModeEditor • linkes Menü unterstützt mehrere Menüpunkte
Visual Studio 2005 • IDE für CF-Entwicklung ab Standard Edition • CF nicht von Express Edition unterstützt • native (C++) Device-Programmierung • Ersatz für eMbedded VC++ • MFC 8.0, ATL 8.0 (auch für Smartphone), STL, CRT • neue Forms-Designer • neuer Emulator • Sichern verschiedener Zustände
Managed Server side Native ASP .NETMobile Controls MFC ATL .NET Compact Framework 2.0 Win32 Software Platform (APIs) Data Access Device Management Communication Presentation Multimedia Remote APIConfiguration*Bluetooth Security State & Notifi. * Pocket Watson Connection ManagerTAPI*SMS* MAPI* POOM* ActiveSync SQL CEADO CEXMLCE DBOLE DB Home ScreenUser Interface/ShellHTML ControlDOM GAPICameraD3DMLocation* Windows Mobile CE DBActiveSync SQL CE Pocket OutlookPocket Internet ExplorerWindows Media Player Windows CE Device Hardware Radio ProcessorMemory GSM/GPRSCDMA/1xRTT WiFiBluetooth DisplayUSB or Serial Windows Mobile Development Visual Studio 2005 Drivers * = Managed wrappers
Mobile Edition Introducing...
SQL Mobile • kommt mit SQL Server 2005 und VS 2005 • Integration in die SQL Workbench • gleiche Oberfläche wie SQL Server 2005 • Integration mit CF 2.0 • Unterstützung für • Pocket PC, PPC Phone Edition (ab WM2003) • Smartphone (ab WM2003) • Windows CE 5.0 (kein CE 4.x) • Win32 (Tablet PC, Deployment)