Neue MobilitätNeue Mobilität
Frank PrengelFrank PrengelDeveloper EvangelistDeveloper EvangelistDeveloper Platform & Strategy GroupDeveloper Platform & Strategy GroupMicrosoft Deutschland GmbHMicrosoft Deutschland GmbHhttp://blogs.msdn.com/frankprhttp://blogs.msdn.com/frankprhttp://www.frankpr.dehttp://www.frankpr.de
.NET Compact Framework 2.0 & .NET Compact Framework 2.0 & SQL Server 2005 Mobile EditionSQL Server 2005 Mobile Edition
AgendaAgenda
IntroIntro
.NET Compact Framework 1.0 + SQLCE 2.0.NET Compact Framework 1.0 + SQLCE 2.0Was geht?Was geht?
Was geht nicht?Was geht nicht?
WorkaroundsWorkarounds
.NET Compact Framework 2.0 + SQL Mobile.NET Compact Framework 2.0 + SQL MobileWas ist neu?Was ist neu?
Future Windows MobileFuture Windows MobileManaged APIsManaged APIs
Sie können gewinnen!Sie können gewinnen!
IntroIntro
Windows Mobile?Windows Mobile?
Phone Edition?Phone Edition?
Smartphone?Smartphone?
Pocket PC?Pocket PC?
Windows CE?Windows CE?Second Edition?Second Edition?
.NET Compact Framework 1.0.NET Compact Framework 1.0
SystemSystem
System.DataSystem.Data System.XmlSystem.Xml
System.WebSystem.Web
GlobalizationGlobalization
TextText
SecuritySecurity
CollectionsCollections
ResourcesResources
ReflectionReflection
NetNet
IOIO
ThreadingThreading
DiagnosticsDiagnostics
ADO.NETADO.NET
SqlServerCeSqlServerCe
SqlClientSqlClient XmlDocumentXmlDocument
commoncommon languagelanguageruntimeruntime
InteropServicesInteropServicesRemotingRemotingSerializationSerialization
SecuritySecurity
ServicesServicesDescriptionDescription
DiscoveryDiscovery
ProtocolsProtocols System.DrawingSystem.Drawing
Drawing2DDrawing2D
TextText
ServiceProcessServiceProcess
ConfigurationConfiguration
DesignDesign Xslt/XPathXslt/XPath
SerializationSerialization
ConfigurationConfiguration SessionStateSessionState
CachingCaching
UIUIHtmlControlsHtmlControls
WebControlsWebControls
ImagingImaging
PrintingPrinting
System.WinFormsSystem.WinForms
DesignDesign ComponentModelComponentModel
Reader/WritersReader/Writers
verfügbarverfügbarnichtnicht unterstütztunterstützt
Entwicklung mit dem CFEntwicklung mit dem CF
Code
SOAP
Webservices
Visual Studio.NETVisual Studio.NET
.NET Compact Framework"Desktop-Version"
.NET Compact Framework"Desktop-Version"
Entwicklermaschine Endgerät
WindowsWindows
.NET CompactFramework
.NET CompactFramework
Device OSDevice OS
Smart Device ExtensionsSmart Device Extensions
Unterstützte APIsUnterstützte APIs
Common Base ClassesCommon Base ClassesIO, Collections, Reflection, math. Funktionen, IO, Collections, Reflection, math. Funktionen, Zeichnen, TextZeichnen, Text
ConnectivityConnectivityNetworking, HTTP-Klassen, Aufrufen von Networking, HTTP-Klassen, Aufrufen von Web ServicesWeb Services
DatenzugriffDatenzugriffADO.NET, SQL Server CE, SQL ServerADO.NET, SQL Server CE, SQL Server
XMLXMLXmlDocument, XmlReader/WriterXmlDocument, XmlReader/Writer
Windows FormsWindows FormsCustom ControlsCustom Controls
DesktopDesktopDesktopDesktop
PPCPPCPPCPPC SPSPSPSPCF 2.0CF 2.0CF 2.0CF 2.0
Vergleich der VersionenVergleich der Versionen
P/InvokeP/Invoke
Win32-Aufrufe als Ersatz für fehlende Win32-Aufrufe als Ersatz für fehlende FunktionalitätFunktionalität
Beschränkungen:Beschränkungen:Pass by value: nur Typen <= 32 Bit (auch Structs!)Pass by value: nur Typen <= 32 Bit (auch Structs!)
Pass by value: keine FloatsPass by value: keine Floats
kein explizites Struct-Layout (nur "Sequential")kein explizites Struct-Layout (nur "Sequential")
keine Strings oder Arrays in Structskeine Strings oder Arrays in Structs
keine Funktionszeiger keine Funktionszeiger keine Callbackskeine Callbacks
kein kein DateTimeDateTime
kein kein MarshalAsMarshalAs-Attribut-Attribut
Pocket PC & SmartphonePocket PC & Smartphone
"out of the box" in VS.NET 2003: "out of the box" in VS.NET 2003: Pocket PC 2002Pocket PC 2002
DLLs, EmulatorDLLs, Emulator
kein Smartphone 2002!kein Smartphone 2002!
CF-Unterstützung zur .NET-Programmierung:CF-Unterstützung zur .NET-Programmierung:Pocket PC 2003 SDKPocket PC 2003 SDK
EmulatorenEmulatoren
Smartphone 2003 SDKSmartphone 2003 SDKDLLs, EmulatorenDLLs, Emulatoren
Lutz Roeder's DiggerLutz Roeder's Digger
demo
Smartphone GamesSmartphone Games
Was fehlt?Was fehlt?
Wichtige Controls & UI-FeaturesWichtige Controls & UI-Features
User ControlsUser Controls
Visual InheritanceVisual Inheritance
Security :-(Security :-(Code Access SecurityCode Access Security
KryptographieKryptographie
Typisierte DataSetsTypisierte DataSetsVorsicht bei Verwendung von WebservicesVorsicht bei Verwendung von Webservices
Komfortable Tools für Daten & SQLCEKomfortable Tools für Daten & SQLCE
WSE, Application Building Blocks, ...WSE, Application Building Blocks, ...
Was fehlt noch? Was fehlt noch?
ASP.NETASP.NET
COM InteropCOM Interop
XSLT, XPathXSLT, XPath
RemotingRemoting
Serialisierung (SOAP, binary)Serialisierung (SOAP, binary)
Install-time JIT (nGen)Install-time JIT (nGen)
Managed POOM, Telephonie etc.Managed POOM, Telephonie etc.
““Inherited does not mean Inherited does not mean supported.supported.””
– – Seth Demsey, Seth Demsey, .NET Compact Framework Team, .NET Compact Framework Team, Microsoft CorporationMicrosoft Corporation
... oder: Warum ... oder: Warum bleibt mein Button bleibt mein Button grau?grau?
Was tun?Was tun?
Tip: OpenNETCFTip: OpenNETCF
Web ServicesWeb ServicesCOM Interop & Inking mit CFCOMCOM Interop & Inking mit CFCOMVisual Inheritance "Light"Visual Inheritance "Light"
demo
PocketRKPocketRK
SQL Server CE 2.0SQL Server CE 2.0
kompakte relationale Datenbank (< 2 MB)kompakte relationale Datenbank (< 2 MB)
SQL-Syntax (kompat. mit SQL Server 2000)SQL-Syntax (kompat. mit SQL Server 2000)
hohe Performance durch Query Optimizerhohe Performance durch Query Optimizer
unterstützt Replikation & Synchronisationunterstützt Replikation & Synchronisation
128-Bit-Verschlüsselung der DB128-Bit-Verschlüsselung der DB
Zugriff per ADO.NET, ADOCE, OLEDBCEZugriff per ADO.NET, ADOCE, OLEDBCE
unterstützt Transaktionenunterstützt Transaktionen
Mgmt. Tool (ISQLW) auf dem GerätMgmt. Tool (ISQLW) auf dem Gerät
SQLCE & ADO.NETSQLCE & ADO.NET
Zugriff vom CFZugriff vom CFSystem.Data.SqlServerCeSystem.Data.SqlServerCe
SqlCeEngine, SqlCeConnection, SqlCeCommand, ...SqlCeEngine, SqlCeConnection, SqlCeCommand, ...
SqlCeDataReader, SqlCeDataAdapterSqlCeDataReader, SqlCeDataAdapter
Referenzieren von SqlServerCe Referenzieren von SqlServerCe Deployment von Deployment von SQLCE auf Gerät oder EmulatorSQLCE 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)Datenabgleich (1)
muß Besonderheiten mobiler Anwendungen muß Besonderheiten mobiler Anwendungen berücksichtigenberücksichtigen
FirewallsFirewalls
Netzwerk"aussetzer"Netzwerk"aussetzer"
unauffällig im Hintergrundunauffällig im Hintergrund
zwei Möglichkeiten:zwei Möglichkeiten:Remote Data Access (RDA)Remote Data Access (RDA)
Merge ReplicationMerge Replication
Datenabgleich (2)Datenabgleich (2)ArchitekturArchitektur
SQL CEServerAgent
SQL ServerOLE DBProvider
SQL 2000Database
InternetInformationServer (IIS)
HTTP
Application
SQL CE Client Agent
Database
SQL CE Engine
OL
E D
B
OLE DB
Remote Data AccessRemote Data Access
lose Kopplung SQLCE lose Kopplung SQLCE SQL Server SQL Serverkeine "Verbindung", sondern HTTPkeine "Verbindung", sondern HTTP
Query-Resultate lokal gespeichertQuery-Resultate lokal gespeichertÄnderungen können zurückgeschrieben werdenÄnderungen können zurückgeschrieben werden
Zugang im CF: Zugang im CF: SqlCeRemoteDataAccessSqlCeRemoteDataAccess
RDA PullRDA Pull: lokale Tabelle aus Servertabelle : lokale Tabelle aus Servertabelle oder Stored Procedureoder Stored Procedure
RDA PushRDA Push: lokale Änderungen zurück an den : lokale Änderungen zurück an den ServerServer
Table Tracking muß eingeschaltet seinTable Tracking muß eingeschaltet sein
RDA Pull/PushRDA Pull/Pushpublic 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 ReplicationMerge Replication
DatenDatensynchronisationsynchronisation SQLCE SQLCE SQL Server SQL Serverüber HTTPüber HTTP
SQLCE erhält Snapshot vom ServerSQLCE erhält Snapshot vom Server
Änderung auf beiden Seiten möglichÄnderung auf beiden Seiten möglich
Abgleich beim nächsten SynchronisierenAbgleich beim nächsten Synchronisieren
anpaßbare Konfliktbehandlunganpaßbare Konfliktbehandlung
Server agiert als Subscription PublisherServer agiert als Subscription Publisherzusätzliche Serverlast & Ressourcen!zusätzliche Serverlast & Ressourcen!
Verwendung im CF: Verwendung im CF: SqlCeReplicationSqlCeReplication
RDA oder Merge Replication?RDA oder Merge Replication?
RDA ist "kostengünstiger"RDA ist "kostengünstiger"benutzen, wenn begrenzte Funktionalität ausreichtbenutzen, wenn begrenzte Funktionalität ausreicht
Merge Replication bietet "Komplettlösung"Merge Replication bietet "Komplettlösung"aber: belastet Server & Netzwerk mehraber: belastet Server & Netzwerk mehr
TrafficTraffic
demo
SQLCE & RDASQLCE & RDA
Probleme mit SQLCE 2.0Probleme mit SQLCE 2.0
Single-User/-Proc DBSingle-User/-Proc DB
keine Mgmt.-Tools für den Desktopkeine Mgmt.-Tools für den Desktop
keine Trigger, Stored Procedureskeine Trigger, Stored Procedures
nur eine Subscription pro DB (Merge Repl.)nur eine Subscription pro DB (Merge Repl.)
DB wächst unbegrenzt DB wächst unbegrenzt SqlCeEngine.CompactSqlCeEngine.Compact
DataReader oder DataSetDataReader oder DataSetkein scrollable Cursorkein scrollable Cursor
keine Unterstützung für Smartphonekeine Unterstützung für Smartphone
Fazit CF 1.0 & SQLCE 2.0Fazit CF 1.0 & SQLCE 2.0
vertraute .NET-Entwicklung für mobile Gerätevertraute .NET-Entwicklung für mobile Geräte
RAD, Webanbindung, kompakte DatenbankRAD, Webanbindung, kompakte Datenbank
viele Wünsche offen, aber...viele Wünsche offen, aber...
3rd Party-Apps & Community-Unterstützung3rd Party-Apps & Community-Unterstützung
LiteraturLiteratur
Tools, Infos & ProgrammeTools, Infos & Programmefür Windows Mobile Entwicklerfür Windows Mobile Entwickler
1.1. Machen Sie sich schlau im Machen Sie sich schlau im Windows Mobile Developer CenterWindows Mobile Developer Center::Im Developer Center finden Sie relevante Informationen aus Im Developer Center finden Sie relevante Informationen aus erster Hand: Entwicklungstools, Online Communities, erster Hand: Entwicklungstools, Online Communities, Webcasts, Technische Artikel, Downloads und vieles mehr.Webcasts, Technische Artikel, Downloads und vieles mehr.
2.2. Werden Sie Mitglied im Werden Sie Mitglied im Windows Mobile Solutions Partner Windows Mobile Solutions Partner Programm:Programm:Hier erhalten Developer Unterstützung bei der Entwicklung Hier erhalten Developer Unterstützung bei der Entwicklung und Vermarktung von Windows Mobile Lösungen.und Vermarktung von Windows Mobile Lösungen.
3.3. Zertifizieren Sie Ihre Anwendung über Zertifizieren Sie Ihre Anwendung über Mobile2MarketMobile2Market und erhalten ein Qualitätssiegel für Ihre Windows Mobile und erhalten ein Qualitätssiegel für Ihre Windows Mobile basierten Anwendungen.basierten Anwendungen.
http://www.microsoft.com/germany/ms/mobile/entwicklerhttp://www.microsoft.com/germany/ms/mobile/entwickler
Neue WeltenNeue Welten
Introducing...Introducing...
2.02.0
AllgemeinesAllgemeines
näher am "vollen" .NET Framework näher am "vollen" .NET Framework neue Klassen, Protokolle, Funktionalitätneue Klassen, Protokolle, Funktionalität
Kompatibilität mit Version 1.0Kompatibilität mit Version 1.0SxS, <SxS, <supportedRuntime …/>supportedRuntime …/>
PerformancePerformanceneuer JIT-Compilerneuer JIT-Compiler
besseres Stringhandlingbesseres Stringhandling
Unterstützung der Whidbey-FeaturesUnterstützung der Whidbey-FeaturesGenerics, partielle Klassen, Iteratoren, anonyme Generics, partielle Klassen, Iteratoren, anonyme MethodenMethoden
.NETCF 1.0.NETCF 1.0(ROM)(ROM)
.NETCF 1.0.NETCF 1.0(ROM)(ROM)
.NETCF .NETCF 2.02.0
.NETCF .NETCF 2.02.0
Windows.FormsWindows.Forms
Visual Inheritance (!)Visual Inheritance (!)
User Controls (!)User Controls (!)
BildschirmorientierungBildschirmorientierung
BildschirmauflösungBildschirmauflösung
ClipboardClipboard
Control.DoubleClick Control.DoubleClick DockingDocking
AnchoringAnchoring
Neue ControlsNeue Controls
DateTimePickerDateTimePicker
MonthCalendarMonthCalendar
DocumentListDocumentList
LinkLabelLinkLabel
Notification BubbleNotification Bubble
HelpHelp
WebBrowserWebBrowser
DataContainerDataContainer
SplitterSplitter
RichInkRichInk
Neue ControlsNeue ControlsNeue FeaturesNeue Features
demo
CF WinForms 2.0CF WinForms 2.0
P/Invoke - NeuesP/Invoke - Neues
Strings & Arrays in StructsStrings & Arrays in Structs
Marshaling von Delegates als Marshaling von Delegates als FunktionszeigerFunktionszeiger
Attribut Attribut MarshalAsMarshalAs
explizites Struct-Layoutexplizites Struct-Layout
Floats und Floats und DateTimeDateTime
Typen > 32 Bit können by value übergeben Typen > 32 Bit können by value übergeben werdenwerden
COM InteropCOM Interop
Managed Wrapper wird Managed Wrapper wird generiert (VS oder generiert (VS oder TLBIMP.EXE)TLBIMP.EXE)
Projekt verweist auf Projekt verweist auf WrapperWrapper
COM-Interfaces & -typen COM-Interfaces & -typen verwenden wie .NET-verwenden wie .NET-TypenTypen
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 InteropLayer
ManagedInterfaces
COM Object
Version 2.0
CF: COM aus .NET aufrufenCF: COM aus .NET aufrufen
Threads als MTA initialisiertThreads als MTA initialisiert
verantwortlich: verantwortlich: System.Runtime.InteropServicesSystem.Runtime.InteropServicesMarshalMarshal, , MarshalAsMarshalAs
keine Unterstützung für Custom Marshalerkeine Unterstützung für Custom Marshaler
IDispatch-EinschränkungenIDispatch-Einschränkungenkeine Structures (VT_RECORD)keine Structures (VT_RECORD)
keine Int64, UInt64keine Int64, UInt64
kein automatisches ActiveX-Control-Hostingkein automatisches ActiveX-Control-HostingInfrastruktur für eigene Wrapper vorhandenInfrastruktur für eigene Wrapper vorhanden
POOMPOOM
demo
COM InteropCOM Interop
Netzwerk & Web ServicesNetzwerk & Web Services
System.MessagingSystem.Messaging
Web Services Web Services Performancesteigerung durch Performancesteigerung durch schnelleren schnelleren XmlSerializerXmlSerializer
Unterstützung für SOAP 1.2Unterstützung für SOAP 1.2
CredentialCacheCredentialCache
verbesserte Authentifizierungverbesserte AuthentifizierungKerberos & NTLMKerberos & NTLM
IPv6IPv6
WeiteresWeiteres
System.IO.Ports System.IO.Ports serieller Port serieller Port
System.Security.CryptographySystem.Security.Cryptography(Triple)DES, MD5, SHA1, DSA, RSA, Rijndael, ...(Triple)DES, MD5, SHA1, DSA, RSA, Rijndael, ...
X.509X.509
System.XmlSystem.XmlXPath 1.0XPath 1.0
SchemavalidierungSchemavalidierung
System.DrawingSystem.DrawingImage.Save(...), custom pensImage.Save(...), custom pens
Smartphone-UnterstützungSmartphone-Unterstützung
DatenDatenSQL Mobile SQL Mobile
DataGridDataGrid
Textbox: Wechsel der Textbox: Wechsel der Eingabeart (abc, 123, T9, ...) Eingabeart (abc, 123, T9, ...) InputModeEditorInputModeEditor
linkes Menü unterstützt linkes Menü unterstützt mehrere Menüpunktemehrere Menüpunkte
Visual Studio 2005Visual Studio 2005
IDE für CF-Entwicklung ab Standard EditionIDE für CF-Entwicklung ab Standard EditionCF nicht von Express Edition unterstütztCF nicht von Express Edition unterstützt
native (C++) Device-Programmierungnative (C++) Device-ProgrammierungErsatz für eMbedded VC++Ersatz für eMbedded VC++
MFC 8.0, ATL 8.0 (auch für Smartphone), STL, CRTMFC 8.0, ATL 8.0 (auch für Smartphone), STL, CRT
neue Forms-Designerneue Forms-Designer
neuer Emulatorneuer EmulatorSichern verschiedener ZuständeSichern verschiedener Zustände
Windows Mobile DevelopmentWindows Mobile Development
DisplayDisplayUSB or SerialUSB or Serial
ProcessorProcessorMemoryMemory
GSM/GPRSGSM/GPRSCDMA/1xRTTCDMA/1xRTT
Device Device HardwareHardware
WiFiWiFiBluetoothBluetooth
RadioRadio
DriversDrivers
Windows MobileWindows Mobile CE DBCE DBActiveSyncActiveSyncSQL CESQL CE
Pocket OutlookPocket OutlookPocket Internet ExplorerPocket Internet ExplorerWindows Media PlayerWindows Media Player
Windows CEWindows CE
Software Platform (APIs)Software Platform (APIs)
Home ScreenHome ScreenUser Interface/ShellUser Interface/ShellHTML ControlHTML ControlDOMDOM
GAPIGAPICameraCameraD3DMD3DMLocation*Location*
Remote APIRemote APIConfiguration*Configuration*BluetoothBluetoothSecuritySecurityState & Notifi. *State & Notifi. *Pocket WatsonPocket Watson
Connection ManagerConnection Manager TAPI*TAPI*SMS* SMS* MAPI* MAPI* POOM*POOM*ActiveSyncActiveSync
MultimediaMultimediaCommunicatioCommunicationn
Device ManagementDevice Management PresentationPresentation
SQL CESQL CEADO CEADO CEXMLXMLCE DBCE DBOLE DBOLE DB
Data AccessData Access
NativeNative
Win32Win32
MFCMFC ATLATL
ManagedManaged
.NET Compact.NET CompactFramework 2.0Framework 2.0
Server sideServer side
ASP .NETASP .NETMobile ControlsMobile Controls
Visual Studio 2005Visual Studio 2005
* = Managed wrappers* = Managed wrappers
Introducing...Introducing...
Mobile E
dition
Mobile E
dition
SQL MobileSQL Mobile
kommt mit SQL Server 2005 und VS 2005kommt mit SQL Server 2005 und VS 2005
Integration in die SQL WorkbenchIntegration in die SQL Workbenchgleiche Oberfläche wie SQL Server 2005gleiche Oberfläche wie SQL Server 2005
Integration mit CF 2.0Integration mit CF 2.0
Unterstützung für Unterstützung für Pocket PC, PPC Phone Edition (ab WM2003)Pocket PC, PPC Phone Edition (ab WM2003)
Smartphone (ab WM2003)Smartphone (ab WM2003)
Windows CE 5.0 (kein CE 4.x)Windows CE 5.0 (kein CE 4.x)
Win32 (Tablet PC, Deployment)Win32 (Tablet PC, Deployment)
Neue FeaturesNeue Features
Multi-User-UnterstützungMulti-User-UnterstützungRow Level Locking (Data)Row Level Locking (Data)
Page Level Locking (Index)Page Level Locking (Index)
mehr Stabilitätmehr StabilitätACID-TransaktionenACID-Transaktionen
Named ParametersNamed Parameters
updateable scrollable cursor:updateable scrollable cursor:SqlCeResultSetSqlCeResultSet
SQL Mobile & VS 2005SQL Mobile & VS 2005
Integration in Server ExplorerIntegration in Server ExplorerErstellen & Verwalten von SDF auf Desktop, Gerät Erstellen & Verwalten von SDF auf Desktop, Gerät oder Emulatoroder Emulator
Drag & Drop mit WinFormsDrag & Drop mit WinFormsErzeugung gebundener ControlsErzeugung gebundener Controls
Smart Tasks für Master-Detail-AnsichtenSmart Tasks für Master-Detail-Ansichten
Performance & ProduktivitätPerformance & Produktivitättypisiertes ResultSet automatisch generierttypisiertes ResultSet automatisch generiert
Auflistung in DataSource-FensterAuflistung in DataSource-Fenster
Unterstützung von Projekt & DeploymentUnterstützung von Projekt & Deployment
SynchronisationSynchronisation
Multi-User-SyncMulti-User-Sync
Progress NotificationProgress Notification
>1 Subscriptions für eine DB>1 Subscriptions für eine DB
Wizards für Web-Konfiguration & SyncWizards für Web-Konfiguration & Sync
Custom Resolver in .NETCustom Resolver in .NET
Unterstützung für SQL Server 2000Unterstützung für SQL Server 2000
Kompression konfigurierbarKompression konfigurierbar
Dr. Watson Dr. Watson
ArchitekturArchitektur
CLR / .NET CFCLR / .NET CF
Client Client Agent: Agent:
ReplicationReplicationandandRDARDA
OLEDB / OLEDB / Replication APIReplication API
IISIIS
CLIENTCLIENT SERVERSERVER
Storage Engine / Repl Storage Engine / Repl TrackingTracking
Server Server Agent: Agent:
ReplicationReplicationandand
Remote Remote Data Data
AccessAccess
HTTPHTTP
XML/BizTalk/CS 2002XML/BizTalk/CS 2002
802.11b/a/g, 802.11b/a/g, CDPD, GSM, CDPD, GSM,
CDMA, CDMA, TDMA, etc.TDMA, etc.
SQL Mobile SQL Mobile Data ProviderData Provider
Data ProviderData Provider
SQL Server SQL Server Client Data Client Data Provider Provider
ADO.NETADO.NET
VS 2005 (VB.NET & C#)VS 2005 (VB.NET & C#)
ManagedManaged StackStack
TDSTDS
EthernetEthernet
Well Well ConnectedConnected
Occasionally Occasionally ConnectedConnected
OLEDB CEOLEDB CE
VS 2005VS 2005(C++)(C++)
Native StackNative Stack
OLEDB ProviderOLEDB Provider
QP/Cursor QP/Cursor Engine/ES Engine/ES
SQL MobileSQL Mobile
Enterprise BackendEnterprise Backend
SqlCeResultSetSqlCeResultSetAdmin ToolsAdmin ToolsVerwendung mit CF 2.0Verwendung mit CF 2.0Merge ReplicationMerge Replication
demo
SQL MobileSQL Mobile
And now for s.th. completely And now for s.th. completely different...different...
FutureFuture
Neues für EntwicklerNeues für Entwickler
.NET Compact Framework 2.0-Unterstützung.NET Compact Framework 2.0-Unterstützung
SQL Mobile-UnterstützungSQL Mobile-UnterstützungPIM StorePIM Store
Managed MAPI, Telephony, POOMManaged MAPI, Telephony, POOM
Managed Notifications BrokerManaged Notifications Broker
D3D MobileD3D Mobile
APIs für Kamera & LocationAPIs für Kamera & Location
einheitliches CAB-Formateinheitliches CAB-Format
Dr. WatsonDr. Watson
Neue NamensräumeNeue NamensräumeMicrosoft.WindowsMobile: Microsoft.WindowsMobile:
IApplicationLauncherIApplicationLauncherMicrosoft.WindowsMobile.StatusMicrosoft.WindowsMobile.Status
State & NotificationState & NotificationMicrosoft.WindowsMobile.FormsMicrosoft.WindowsMobile.Forms
Contact Picker, Picture PickerContact Picker, Picture PickerMicrosoft.WindowsMobile.ConfigurationMicrosoft.WindowsMobile.Configuration
Configuration managerConfiguration managerMicrosoft.WindowsMobile.TelephonyMicrosoft.WindowsMobile.Telephony
PhonePhoneMicrosoft.WindowsMobile.PocketOutlookMicrosoft.WindowsMobile.PocketOutlook
Contacts, Calendar, Tasks, Email, SMSContacts, Calendar, Tasks, Email, SMSMicrosoft.WindowsMobile.PocketOutlook.MessageInterceptionMicrosoft.WindowsMobile.PocketOutlook.MessageInterception
SMS interceptionSMS interception
State & NotificationsState & Notifications
einheitliches API zwecks Benachrichtigung, einheitliches API zwecks Benachrichtigung, "wenn etwas passiert""wenn etwas passiert"
nutzt dokumentierte Registry-Keysnutzt dokumentierte Registry-Keys
transient & persistent notificationstransient & persistent notifications
SystemState state;SystemState state;
void Form1_Load( ... )void Form1_Load( ... ){{ if( SystemState.IsApplicationLauncherEnabled( "MyApp.MissedCall“ ) )if( SystemState.IsApplicationLauncherEnabled( "MyApp.MissedCall“ ) ) {{ state = new SystemState( "MyApp.MissedCall" );state = new SystemState( "MyApp.MissedCall" ); }} elseelse {{ 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 & NotificationsState & Notifications
Managed POOMManaged POOMContacts, Calendar, TasksContacts, Calendar, Tasks
erstellen, ändern, löschen, auflisten, suchenerstellen, ändern, löschen, auflisten, suchen
OutlookSession OutlookSession Folder Folder PimItemCollection PimItemCollection PimItem PimItem
Change-Events für Eigenschaften (nur in derselben Anwendung)Change-Events für Eigenschaften (nur in derselben Anwendung)
Transaktionsmodell: Update des Items nach Änderungen notwendigTransaktionsmodell: Update des Items nach Änderungen notwendig
Erstellen: Default Constructor benutzen, Eigenschaften setzen, Erstellen: Default Constructor benutzen, Eigenschaften setzen, Folder.Add(…) aufrufenFolder.Add(…) aufrufen
Managed POOMManaged POOM
OutlookSession outlook = new OutlookSession();Contact c = new Contact();c.FirstName = "Big";c.LastName = "Bird";c.Email1Address = “[email protected]”;outlook.Contacts.Items.Add(c);
Managed TelephonyManaged Telephony
Anrufe startenAnrufe startenUser Prompt optionalUser Prompt optional
Notifications über Anrufe Notifications über Anrufe durch entspr. APIdurch entspr. API
Private Sub callBack_Click(…) Handles callBack.Click Dim phone As New Phone phone.MakeCall( callerNumber, False )
End Sub
Managed MAPIManaged MAPI
Microsoft.WindowsMobile.PocketOutlookMicrosoft.WindowsMobile.PocketOutlook
Email & SMSEmail & SMSAttachmentsAttachments
EmailMessage m = new EmailMessage();m.To.Add(new Recipient("Big bird", "[email protected]");m.Subject ="How are you?";m.BodyText = "I hope you're ok";m.Send();
Dim message As New SmsMessagemessage.To.Add( New Recipient( callerNumber ) )message.Body = "CALL BACK AT " + selectedTimemessage.Send()
SMS InterceptionSMS Interception
MessageInterceptor smsMessageInterceptor sms ;;
void Form1_Load( ... )void Form1_Load( ... ){{ sms = new MessageInterceptor();sms = new MessageInterceptor(); sms.MessageCondition = new MessageCondition(sms.MessageCondition = new MessageCondition( MessageProperty.Body, MessageComparisonType.StartsWith, “Foo” ); MessageProperty.Body, MessageComparisonType.StartsWith, “Foo” ); sms.InterceptionAction = InterceptionAction.NotifyAndDelete;sms.InterceptionAction = InterceptionAction.NotifyAndDelete; sms.MessageReceived += sms.MessageReceived += new MessageReceivedEventHandler( sms_MessageReceived ); new MessageReceivedEventHandler( sms_MessageReceived );}}
void sms_MessageReceived(object sender, MessageReceivedEventArgs e)void sms_MessageReceived(object sender, MessageReceivedEventArgs e){{ SmsMessage message = (SmsMessage)(e.Message);SmsMessage message = (SmsMessage)(e.Message); // ...// ...}}
Managed Config. ManagerManaged Config. Manager
string filename = @"\Storage Card\2577\config.xml";string filename = @"\Storage Card\2577\config.xml";XmlDocument config = new XmlDocument();XmlDocument config = new XmlDocument();config.Load( filename );config.Load( filename );ConfigurationManager.ProcessConfiguration( config, true );ConfigurationManager.ProcessConfiguration( config, true );
<wap-provisioningdoc><characteristic type="Sync"> <characteristic type="Connection"> <parm name="User" value="frankpr"/> <parm name="Server" value="emea.mail.microsoft.com"/> <parm name="Domain" value="EUROPE"/> </characteristic> <characteristic type="Mail"> <parm name="Enabled" value="1"/> </characteristic> </characteristic> </wap-provisioningdoc>
Windows Mobile RoadmapWindows Mobile Roadmap
Plattform-Plattform-FeaturesFeatures
.NET CF 2.0, MFC 8.0, .NET CF 2.0, MFC 8.0, ATL 8.0ATL 8.0
State & Notification, State & Notification, Location, Camera, Location, Camera, SQL CE, D3DM, SQL CE, D3DM, Managed wrappersManaged wrappers
.NET CF SP2.NET CF SP2
VGA (PPC)VGA (PPC)Square (PPC)Square (PPC)Landscape (PPC)Landscape (PPC)
QVGA (SP)QVGA (SP)
.NET CF.NET CF Enhanced Emulator Enhanced Emulator Configuration Mgr,Configuration Mgr,Bluetooth, SMSBluetooth, SMS
MFC 3.0, MFC 3.0, ATL 3.0ATL 3.0
Active SyncActive SyncConnection MgrConnection MgrMAPIMAPIOBEXOBEXTelephonyTelephony
MFC 3.0MFC 3.0
Win32, Win32, POOM POOM
EntwicklungEntwicklung
Visual Studio 2005 Visual Studio 2005 (C#, VB.NET, C++)(C#, VB.NET, C++)
eVB 3 eVB 3 (C++)(C++)eVC 4 eVC 4 (C++)(C++)
VS.NET 2003 VS.NET 2003 (C#, VB.NET)(C#, VB.NET)
eVB 3 eVB 3 (C++)(C++)eVC 4 eVC 4 (C++)(C++)
VS.NET 2003VS.NET 2003(C#, VB.NET)(C#, VB.NET)
eVC 3 eVC 3 (C++)(C++)eVB 3 eVB 3 (VB)(VB)
eVC 3 eVC 3 (C++)(C++)eVB 3 eVB 3 (VB)(VB)
Core OSCore OS WinCE 5.0WinCE 5.0WinCE 4.2WinCE 4.2WinCE 4.2WinCE 4.2WinCE 3.0WinCE 3.0 WinCE 3.0WinCE 3.0
GeräteGeräte
Future Future Windows MobileWindows Mobile
20032003Second EditionSecond Edition200320032002200220002000
FazitFazit
Mehr Performance in CF & SQL Mobile!Mehr Performance in CF & SQL Mobile!
Mehr Interoperabilität durch COM Interop & Mehr Interoperabilität durch COM Interop & besseres P/Invoke!besseres P/Invoke!
Mehr Produktivität & Mehr Produktivität & Spaß beim Entwickeln!Spaß beim Entwickeln!
Future Windows Mobile Future Windows Mobile hebt ab!hebt ab!
Fragen?Fragen?
Anregungen?Anregungen?
Danksagungen?Danksagungen?
Wünsche?Wünsche?
Kritik?Kritik?
Lob?Lob?
Bahnhof?Bahnhof?
Geldspenden?Geldspenden?
Vielen Dank!Vielen Dank!
© 2004 Microsoft Corporation. All rights reserved.© 2004 Microsoft Corporation. All rights reserved.This presentation is for informational purposes only. Microsoft makes no warranties, express or implied, in this summary.This presentation is for informational purposes only. Microsoft makes no warranties, express or implied, in this summary.