Neue Mobilität Frank Prengel Developer Evangelist Developer Platform & Strategy Group Microsoft Deutschland GmbH Compact Framework 2.0 & SQL Server 2005 Mobile Edition
2 Agenda Intro.NET Compact Framework SQLCE 2.0 Was geht? Was geht nicht? Workarounds.NET Compact Framework SQL Mobile Was ist neu? Future Windows Mobile Managed APIs
3
4 Sie können gewinnen!
5 Intro Windows Mobile? Phone Edition? Smartphone? Pocket PC? Windows CE? Second Edition?
6
7.NET Compact Framework 1.0 System System.DataSystem.Xml System.Web Globalization Text Security Collections Resources Reflection Net IO Threading Diagnostics ADO.NET SqlServerCe SqlClientXmlDocument common language runtime InteropServices Remoting Serialization Security Services Description Discovery Protocols System.Drawing Drawing2D Text ServiceProcess Configuration DesignXslt/XPath Serialization ConfigurationSessionState Caching UI HtmlControls WebControls Imaging Printing System.WinForms DesignComponentModel Reader/Writers verfügbar nicht unterstützt
8 Entwicklung mit dem CF Code SOAP Webservices Visual Studio.NET.NET Compact Framework "Desktop-Version" Entwicklermaschine Endgerät Windows.NET Compact Framework Device OS Smart Device Extensions
9 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
10 DesktopDesktop PPCPPC SPSP CF 2.0 Vergleich der Versionen
11 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 keine Callbacks kein DateTime kein MarshalAs -Attribut
12 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
Lutz Roeder's Digger demo Smartphone Games
14 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,...
15 Was fehlt noch? ASP.NET COM Interop XSLT, XPath Remoting Serialisierung (SOAP, binary) Install-time JIT (nGen) Managed POOM, Telephonie etc.
16 Inherited does not mean supported.Inherited does not mean supported. – Seth Demsey,.NET Compact Framework Team, Microsoft Corporation... oder: Warum bleibt mein Button grau?
17 Was tun?
18 Tip: OpenNETCF
Web Services COM Interop & Inking mit CFCOM Visual Inheritance "Light" demo PocketRK
20
21 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
22 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 Documents\My Data.sdf)) { string connStr Source=\My Documents\My Data.sdf ; SqlCeEngine engine = new SqlCeEngine(connStr); engine.CreateDatabase(); }
23 Datenabgleich (1) muß Besonderheiten mobiler Anwendungen berücksichtigen FirewallsNetzwerk"aussetzer" unauffällig im Hintergrund zwei Möglichkeiten: Remote Data Access (RDA) Merge Replication
24 Datenabgleich (2) Architektur SQL CE Server Agent SQL Server OLE DB Provider SQL 2000 Database Internet Information Server (IIS) HTTP Application SQL CE Client Agent Database SQL CE Engine OLE DB
25 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
26 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 Source=\My Documents\test.sdf; rda.InternetURL 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 Source=\My Documents\test.sdf; rda.InternetURL rda.InternetLogin = MyDomain\someuser; rda.InternetPassword = HaRd2GuEsS!$*; rda.Push( Authors, ServerOledbStr, RdaBatchOption.BatchingOn); }
27 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
28 RDA oder Merge Replication? RDA ist "kostengünstiger" benutzen, wenn begrenzte Funktionalität ausreicht Merge Replication bietet "Komplettlösung" aber: belastet Server & Netzwerk mehr
Traffic demo SQLCE & RDA
30 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 SqlCeEngine.Compact DataReader oder DataSet kein scrollable Cursor keine Unterstützung für Smartphone
31 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
32 Literatur
33 Tools, Infos & Programme für Windows Mobile Entwickler 1. 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. 2. Werden Sie Mitglied im Windows Mobile Solutions Partner Programm: Hier erhalten Developer Unterstützung bei der Entwicklung und Vermarktung von Windows Mobile Lösungen. 3. Zertifizieren Sie Ihre Anwendung über Mobile2Market und erhalten ein Qualitätssiegel für Ihre Windows Mobile basierten Anwendungen.
34 Neue Welten
35 Introducing
36 Allgemeines näher am "vollen".NET Framework näher am "vollen".NET Framework neue Klassen, Protokolle, Funktionalität Kompatibilität mit Version 1.0 SxS, SxS, Performance neuer JIT-Compiler besseres Stringhandling Unterstützung der Whidbey-Features Generics, partielle Klassen, Iteratoren, anonyme Methoden.NETCF 1.0 (ROM) (ROM).NETCF 2.0
37 Windows.Forms Visual Inheritance (!) User Controls (!) BildschirmorientierungBildschirmauflösungClipboard Control.DoubleClick Control.DoubleClick DockingAnchoring
38 Neue Controls DateTimePickerMonthCalendarDocumentListLinkLabel Notification Bubble HelpWebBrowserDataContainerSplitterRichInk
Neue Controls Neue Features demo CF WinForms 2.0
40 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
41 COM Interop Managed Wrapper wird generiert (VS oder TLBIMP.EXE) Projekt verweist auf Wrapper COM-Interfaces & -typen verwenden wie.NET- Typen COM Object Your Code COM Object Native Wrapper COM Call Managed Wrapper Application Code P/Invoke Version 1.0 Generated COM Call Application Code Managed Call.NET CF Interop Layer Managed Interfaces COM Object Version 2.0
42 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
POOM demo COM Interop
44 Netzwerk & Web Services System.Messaging Web Services Performancesteigerung durch schnelleren XmlSerializer Unterstützung für SOAP 1.2 CredentialCache verbesserte Authentifizierung Kerberos & NTLM IPv6
45 Weiteres System.IO.Ports serieller Port System.Security.Cryptography (Triple)DES, MD5, SHA1, DSA, RSA, Rijndael,... X.509System.Xml XPath 1.0 SchemavalidierungSystem.Drawing Image.Save(...), custom pens
46 Smartphone-Unterstützung Daten SQL Mobile DataGrid Textbox: Wechsel der Eingabeart (abc, 123, T9,...) InputModeEditor linkes Menü unterstützt mehrere Menüpunkte
47 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
48 Windows Mobile Development Display USB or Serial Processor Memory GSM/GPRS CDMA/1xRTT Device Hardware WiFi Bluetooth Radio Drivers Windows Mobile CE DB ActiveSync SQL CE Pocket Outlook Pocket Internet Explorer Windows Media Player Windows CE Software Platform (APIs) Home Screen User Interface/Shell HTML Control DOM GAPI Camera D3DM Location* Remote API Configuration* Bluetooth Security State & Notifi. * Pocket Watson Connection Manager TAPI* SMS* MAPI* POOM* ActiveSync Multimedia Communication Device Management Presentation SQL CE ADO CE XML CE DB OLE DB Data Access Native Win32 MFCATL Managed.NET Compact Framework 2.0 Server side ASP.NET Mobile Controls Visual Studio 2005 * = Managed wrappers
49 Introducing... Mobile Edition
50 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)
51 Neue Features Multi-User-Unterstützung Row Level Locking (Data) Page Level Locking (Index) mehr Stabilität ACID-Transaktionen Named Parameters updateable scrollable cursor: SqlCeResultSet
52 SQL Mobile & VS 2005 Integration in Server Explorer Erstellen & Verwalten von SDF auf Desktop, Gerät oder Emulator Drag & Drop mit WinForms Erzeugung gebundener Controls Smart Tasks für Master-Detail-Ansichten Performance & Produktivität typisiertes ResultSet automatisch generiert Auflistung in DataSource-Fenster Unterstützung von Projekt & Deployment
53 Synchronisation Multi-User-Sync Progress Notification >1 Subscriptions für eine DB Wizards für Web-Konfiguration & Sync Custom Resolver in.NET Unterstützung für SQL Server 2000 Kompression konfigurierbar Dr. Watson Dr. Watson
54 Architektur CLR /.NET CF Client Agent: Replication andRDA OLEDB / Replication API IIS CLIENTSERVER Storage Engine / Repl Tracking Server Agent: Replication and Remote Data Access HTTP XML/BizTalk/CS b/a/g, CDPD, GSM, CDMA, TDMA, etc. SQL Mobile Data Provider Data Provider SQL Server Client Data Provider ADO.NET VS 2005 (VB.NET & C#) Managed Stack TDS Ethernet Well Connected Occasionally Connected OLEDB CE VS 2005 (C++) Native Stack OLEDB Provider QP/Cursor Engine/ES SQL Mobile Enterprise Backend
SqlCeResultSet Admin Tools Verwendung mit CF 2.0 Merge Replication demo SQL Mobile
56 And now for s.th. completely different... Future
57 Neues für Entwickler.NET Compact Framework 2.0-Unterstützung SQL Mobile-Unterstützung PIM Store Managed MAPI, Telephony, POOM Managed Notifications Broker D3D Mobile APIs für Kamera & Location einheitliches CAB-Format Dr. Watson
58 Neue Namensräume Microsoft.WindowsMobile:IApplicationLauncherMicrosoft.WindowsMobile.Status State & Notification Microsoft.WindowsMobile.Forms Contact Picker, Picture Picker Microsoft.WindowsMobile.Configuration Configuration manager Microsoft.WindowsMobile.TelephonyPhoneMicrosoft.WindowsMobile.PocketOutlook Contacts, Calendar, Tasks, , SMS Microsoft.WindowsMobile.PocketOutlook.MessageInterception SMS interception
59 State & Notifications einheitliches API zwecks Benachrichtigung, "wenn etwas passiert" nutzt dokumentierte Registry-Keys transient & persistent notifications
60 SystemState state; void Form1_Load(... ) { if( SystemState.IsApplicationLauncherEnabled( "MyApp.MissedCall ) ) if( SystemState.IsApplicationLauncherEnabled( "MyApp.MissedCall ) ) { state = new SystemState( "MyApp.MissedCall" ); state = new SystemState( "MyApp.MissedCall" ); } else else { state = new SystemState( SystemProperty.MissedCallCount ); state = new SystemState( SystemProperty.MissedCallCount ); state.ComparisonType = StatusComparisonType.Greater; state.ComparisonType = StatusComparisonType.Greater; state.ComparisonValue = 0; state.ComparisonValue = 0; state.EnableApplicationLauncher( "MyApp.MissedCall" ); state.EnableApplicationLauncher( "MyApp.MissedCall" ); } state.Changed += new ChangeEventHandler( MissedCall ); state.Changed += new ChangeEventHandler( MissedCall ); //... //...} void MissedCall( object sender, ChangeEventArgs e ) { MessageBox.Show( Missed Calls: + e.CurrentValue ); } State & Notifications
61 Managed POOM Contacts, Calendar, Tasks erstellen, ändern, löschen, auflisten, suchen OutlookSession Folder PimItemCollection PimItem Change-Events für Eigenschaften (nur in derselben Anwendung) Transaktionsmodell: Update des Items nach Änderungen notwendig Erstellen: Default Constructor benutzen, Eigenschaften setzen, Folder.Add(…) aufrufen
62 Managed POOM OutlookSession outlook = new OutlookSession(); Contact c = new Contact(); c.FirstName = "Big"; c.LastName = "Bird"; c. 1Address = outlook.Contacts.Items.Add(c);
63 Managed Telephony Anrufe starten User Prompt optional Notifications über Anrufe durch entspr. API Private Sub callBack_Click(…) Handles callBack.Click Dim phone As New Phone phone.MakeCall( callerNumber, False ) End Sub
64 Managed MAPI Microsoft.WindowsMobile.PocketOutlook & SMS Attachments Message m = new Message(); m.To.Add(new Recipient("Big bird", m.Subject ="How are you?"; m.BodyText = "I hope you're ok"; m.Send(); Dim message As New SmsMessage message.To.Add( New Recipient( callerNumber ) ) message.Body = "CALL BACK AT " + selectedTime message.Send()
65 SMS Interception MessageInterceptor sms; void Form1_Load(... ) { sms = new MessageInterceptor(); sms = new MessageInterceptor(); sms.MessageCondition = new MessageCondition( MessageProperty.Body, MessageComparisonType.StartsWith, Foo ); sms.MessageCondition = new MessageCondition( MessageProperty.Body, MessageComparisonType.StartsWith, Foo ); sms.InterceptionAction = InterceptionAction.NotifyAndDelete; sms.InterceptionAction = InterceptionAction.NotifyAndDelete; sms.MessageReceived += new MessageReceivedEventHandler( sms_MessageReceived ); sms.MessageReceived += new MessageReceivedEventHandler( sms_MessageReceived );} void sms_MessageReceived(object sender, MessageReceivedEventArgs e) { SmsMessage message = (SmsMessage)(e.Message); SmsMessage message = (SmsMessage)(e.Message); //... //...}
66 Managed Config. Manager string filename Card\2577\config.xml"; XmlDocument config = new XmlDocument(); config.Load( filename ); ConfigurationManager.ProcessConfiguration( config, true );
67 Windows Mobile Roadmap Plattform- Features.NET CF 2.0, MFC 8.0, ATL 8.0 State & Notification, Location, Camera, SQL CE, D3DM, Managed wrappers.NET CF SP2 VGA (PPC) Square (PPC) Landscape (PPC) QVGA (SP).NET CF Enhanced Emulator Configuration Mgr, Bluetooth, SMS MFC 3.0, ATL 3.0 Active Sync Connection Mgr MAPI OBEX Telephony MFC 3.0 Win32, POOM MFC 3.0 Win32, POOM Entwicklung Visual Studio 2005 (C#, VB.NET, C++) eVB 3 (C++) eVC 4 (C++) VS.NET 2003 (C#, VB.NET) eVB 3 (C++) eVC 4 (C++) VS.NET 2003 (C#, VB.NET) eVC 3 (C++) eVB 3 (VB) Core OS WinCE 5.0 WinCE 4.2 WinCE 3.0 WinCE 3.0 WinCE 3.0 Geräte Future Windows Mobile 2003 Second Edition
68 Fazit Mehr Performance in CF & SQL Mobile! Mehr Interoperabilität durch COM Interop & besseres P/Invoke! Mehr Produktivität & Spaß beim Entwickeln! Future Windows Mobile hebt ab!
69 Fragen? Anregungen? Danksagungen? Wünsche? Kritik? Lob? Bahnhof? Geldspenden?
70 Vielen Dank!
71 © 2004 Microsoft Corporation. All rights reserved. This presentation is for informational purposes only. Microsoft makes no warranties, express or implied, in this summary.