Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

Neue Mobilität Frank Prengel Developer Evangelist Developer Platform & Strategy Group Microsoft Deutschland GmbH

Ähnliche Präsentationen


Präsentation zum Thema: "Neue Mobilität Frank Prengel Developer Evangelist Developer Platform & Strategy Group Microsoft Deutschland GmbH"—  Präsentation transkript:

1 Neue Mobilität Frank Prengel Developer Evangelist Developer Platform & Strategy Group Microsoft Deutschland GmbH http://blogs.msdn.com/frankpr http://www.frankpr.de.NET Compact Framework 2.0 & SQL Server 2005 Mobile Edition

2 2 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

3 3

4 4 Sie können gewinnen!

5 5 Intro Windows Mobile? Phone Edition? Smartphone? Pocket PC? Windows CE? Second Edition?

6 6

7 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 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 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 10 DesktopDesktop PPCPPC SPSP CF 2.0 Vergleich der Versionen

11 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 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

13 Lutz Roeder's Digger demo Smartphone Games

14 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 15 Was fehlt noch? ASP.NET COM Interop XSLT, XPath Remoting Serialisierung (SOAP, binary) Install-time JIT (nGen) Managed POOM, Telephonie etc.

16 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 17 Was tun?

18 18 Tip: OpenNETCF

19 Web Services COM Interop & Inking mit CFCOM Visual Inheritance "Light" demo PocketRK

20 20

21 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 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 (!File.Exists(@\My Documents\My Data.sdf)) { string connStr = @Data Source=\My Documents\My Data.sdf ; SqlCeEngine engine = new SqlCeEngine(connStr); engine.CreateDatabase(); }

23 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 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 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 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 = @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); }

27 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 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

29 Traffic demo SQLCE & RDA

30 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 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 32 Literatur

33 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. http://www.microsoft.com/germany/ms/mobile/entwickler

34 34 Neue Welten

35 35 Introducing... 2.0

36 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 37 Windows.Forms Visual Inheritance (!) User Controls (!) BildschirmorientierungBildschirmauflösungClipboard Control.DoubleClick Control.DoubleClick DockingAnchoring

38 38 Neue Controls DateTimePickerMonthCalendarDocumentListLinkLabel Notification Bubble HelpWebBrowserDataContainerSplitterRichInk

39 Neue Controls Neue Features demo CF WinForms 2.0

40 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 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 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

43 POOM demo COM Interop

44 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 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 46 Smartphone-Unterstützung Daten SQL Mobile DataGrid Textbox: Wechsel der Eingabeart (abc, 123, T9,...) InputModeEditor linkes Menü unterstützt mehrere Menüpunkte

47 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 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 49 Introducing... Mobile Edition

50 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 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 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 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 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 2002 802.11b/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

55 SqlCeResultSet Admin Tools Verwendung mit CF 2.0 Merge Replication demo SQL Mobile

56 56 And now for s.th. completely different... Future

57 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 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, Email, SMS Microsoft.WindowsMobile.PocketOutlook.MessageInterception SMS interception

59 59 State & Notifications einheitliches API zwecks Benachrichtigung, "wenn etwas passiert" nutzt dokumentierte Registry-Keys transient & persistent notifications

60 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 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 62 Managed POOM OutlookSession outlook = new OutlookSession(); Contact c = new Contact(); c.FirstName = "Big"; c.LastName = "Bird"; c.Email1Address = big@bird.com; outlook.Contacts.Items.Add(c);

63 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 64 Managed MAPI Microsoft.WindowsMobile.PocketOutlook Email & SMS Attachments EmailMessage m = new EmailMessage(); m.To.Add(new Recipient("Big bird", "big@bird.com"); 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 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 66 Managed Config. Manager string filename = @"\Storage Card\2577\config.xml"; XmlDocument config = new XmlDocument(); config.Load( filename ); ConfigurationManager.ProcessConfiguration( config, true );

67 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 200320022000

68 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 69 Fragen? Anregungen? Danksagungen? Wünsche? Kritik? Lob? Bahnhof? Geldspenden?

70 70 Vielen Dank!

71 71 © 2004 Microsoft Corporation. All rights reserved. This presentation is for informational purposes only. Microsoft makes no warranties, express or implied, in this summary.


Herunterladen ppt "Neue Mobilität Frank Prengel Developer Evangelist Developer Platform & Strategy Group Microsoft Deutschland GmbH"

Ähnliche Präsentationen


Google-Anzeigen