Präsentation herunterladen
Die Präsentation wird geladen. Bitte warten
Veröffentlicht von:Hinrich Keese Geändert vor über 11 Jahren
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.
Ähnliche Präsentationen
© 2024 SlidePlayer.org Inc.
All rights reserved.