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

Post on 05-Apr-2015

104 views 0 download

Transcript of Neue Mobilität Frank Prengel Developer Evangelist Developer Platform & Strategy Group Microsoft...

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 = “big@bird.com”;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", "big@bird.com");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.