sviluppare applicazioni per dispositivi mobili con visual studio 2005 e.net compact framework 2.0...
TRANSCRIPT
Sviluppare applicazioni per dispositivi mobili con Visual Studio 2005 e
.NET Compact Framework 2.0
Fabio [email protected]
Categorie dei dispositivi Windows Mobile
– Dedicato a contenuti multimediali
– Interfaccia grafica ottimizzata
– Non touch, navigazione tramite telecomando
– Capacità di video in e out
– PDA e dispositivi convertibili
– Dispositivi per la messaggistica
– Touch Screen– Tastiere QWERTY– Applicazioni verticali– Piattaforma estendibile
– Innanzitutto un telefono– Input tramite Keypad e
joystick– Ottimizzati per una
navigazione tra le funzionalità ad una mano
– Piattaforma estendibile
Momento• Più di 10 millioni di dispositivi con il
.NET Compact Framework in ROM• Più di 200,000 sviluppatori su .NET Compact
Framework• Più di 600,000 download della Service Pack 1
0
100,000
200,000
300,000
400,000
500,000
600,000
Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec Jan Feb Mar Apr
SP3 Total Installed Base
SP2 Total Installed Base
Libri
In FullIn Full
In PartIn Part
Piccolo ma compatibile• Una copertura del 28% in un 8% di dimensione• Non supportate
– Server functionality– ASP.NET– Remoting– Code Access Security– Reflection Emit (scripting)– Individual properties, methods, events – classes factored at member level– Managed C++, J#
CopyCopyGround-up rewriteGround-up rewrite Snapshot & ModifySnapshot & Modify
Windows.FormsWindows.Forms
System.Web.ServicesSystem.Web.Services
Microsoft.DirectX.Microsoft.DirectX.Direct3DMobileDirect3DMobile
System.DrawingSystem.Drawing
Execution EngineExecution Engine
JIT, GC, Loader, JIT, GC, Loader, assembly cacheassembly cache
System.NetSystem.Net
System.IOSystem.IO
System.ResourcesSystem.Resources
System.ThreadingSystem.Threading Microsoft.Win32.Microsoft.Win32.RegistryRegistry
System.CryptographySystem.Cryptography
System.IO.PortsSystem.IO.Ports
System.StringSystem.String
System.TextSystem.Text
System.GlobalizationSystem.Globalization
System.MessagingSystem.Messaging
System.XmlSystem.Xml
System.DataSystem.Data
System.Text.RegexSystem.Text.Regex
Microsoft.VisualBasicMicrosoft.VisualBasic
System.CollectionsSystem.Collections
System.Generic.System.Generic.CollectionsCollections
86% 86% del .NET del .NET
FrameworkFramework
91% 91% dell .NET dell .NET
FrameworkFramework
Compatibilità• Le applicazioni sviluppate con versioni precedenti del.NET Compact
Framework funzioneranno con la nuova versione
– Il goal è il 100% di compatibilità
• La nuova versione del .NET Compact Framework potrà girare su versioni precedenti di Windows CE e Windows Mobile
Dispositivi supportatiV1 V2
PocketPC 2000PocletPC 2002PocketPC 2003, SE SmartPhone 2003 WinCE 4.1WinCE 4.2WinCE 5.0
Pocket PC 2003 SEPocket PC 2005Smart Phone 2005WinCE 5.0
Controllli Windows.Forms• DateTimePicker• MonthCalendar• DocumentList• LinkLabel• Notification Bubble• Help• RichInk• WebBrowser• DataContainer• UserControl
• Supporto per la Clipboard • Nuove proprietà, metodi e eventi
– Control.DoubleClick– ToolBarButton tooltips– Più eventi Treeview– ComboBox editabile– Textbox.HideSelection– UserControl– FontCollection
• Più supporto per la tastiera– Form.KeyPreview– TabIndex, TabStop
Funzionalità Windows.Forms
HPHP43004300
Tastiera Tastiera integrataintegrata
Funzionalità per Smartphone .NET Compact Framework 2.0
• Gestione dei dati– SQL Server 2005 Mobile
Edition (Windows Mobile 5.0)
– DataGrid
• Textbox IME switching– InputModeEditor
• Abilitazione di più menu item nel menù di sinistra
Networking e Web service• Web service
– Aumento di prestazioni dovute alla classe XmlSerializer
– Supporto per SOAP 1.2• Autenticazione
– Kerberos e NTLM– Automaticamente viene selezionato il metodo
più sicuro
• IPv6
WebService service = new WebService();service.Credentials = new NetworkCredential(username, password, domain);
Managed D3D Mobile• Incluso in WinCE 5.0 e le future versioni di
Windows Mobile – Le API Native derivano da DX8– Le API Managed derivano da DX9
• Funzionalità– Accesso completo alle D3DM API– Supporto ai Fixed point
(Vertex Data, Matrices, Lights, e Materials)
– Sprite– Font– Mesh– TextureLoader– Tutorials and Samples
Emulatori• Novità di VS 2005 Beta 2• Emulatori ARM (come i device reali)• DMA Trasport Patch (più veloce)
– Installare– Da VS 2005 Configurare DMA Transport
• ActiveSync 4.0• Device Manager nuovo !
– Fare Cradle -> Emulatore == Device !!!– Es. File Explorer - Sincronizzazione
• Deploy su Device anzichè emulatore
DataSet
• Serializzazione su singola DataTable
• DataSet.Copy()– Utile per inviare copie per aggiornamento
continuando a lavorare con i dati
• DataSet.GetChanges– Finalmente
• DataSet.Merge– Per ottenere modifiche incrementali da un WS
e unirle al DS corrente
DataTable Serialization• WriteXml, ReadXml• Una DataTable può essere inviata/ricevuta come
argomento di un web service
private void DeptComplete(string deptName, DataSet ds)private void DeptComplete(string deptName, DataSet ds){{ DataTable dt = ds.Tables["DeptDetail"];DataTable dt = ds.Tables["DeptDetail"]; dt.dt.WriteXmlWriteXml(deptName + ".xml");(deptName + ".xml"); dt.Clear();dt.Clear();}}
private void DeptRestore(string deptName, DataSet ds)private void DeptRestore(string deptName, DataSet ds){{ DataTable dt = ds.Tables["DeptDetail"];DataTable dt = ds.Tables["DeptDetail"]; dt.Clear();dt.Clear(); dt.dt.ReadXmlReadXml(deptName + ".xml");(deptName + ".xml");}}
XML Serializer• Le classi possono essere serializzate e
deserializzate– XmlSerializer disponibile nel framework– Serialize: salva le istanze in XML– Deserialize: legge l’XML per ricostruire l’istanza
• Controllo sulla Serialization– Costruttore di default– Attribute per controllare il comportamento
• XmlElement• XmlAttribute
XPath
• Supportato da XmlDocument
• Metodi– SelectNode
• Restituisce un singolo XmlNode in base al match
– SelectNodes• Lista di matching node
Linguaggio.NET Compact Framework 2.0
• Nuove funzionalità del linguaggio– Generics
– Metodi anonimi
– Iterators
– Partial Types
• I generics sono classi e metodi che lavorano in maniera uniforme su tipi differenti
• Benefici– Le variabili sono di un
tipo ben preciso e non Object
– Non è necessario un cast (errori in fase di compilazione)
– Riutilizzo reale del codice
Generics class Stack<T> { private T[] store; private int size;
public Stack() { store = new T[10]; size = 0; }
public void Push(T x) { // push code goes here }
public T Pop() { return store[--size]; }}
void Add(Stack<int> s) { int x = s.Pop(); int y = s.Pop(); s.Push(x+y);}
Blocchi di codice incapsulati in delegate
Senza metodi anonimi
Con metodi anonimi
Metodi anonimi
button.Click += new EventHandler(sender, args){
// increment a counter or other action};
button.Click += new EventHandler(ProcessClick);
// separate methodvoid ProcessClick(object sender, EventArgs e){ // increment a counter or other action}
Partial Type
Cliente1.cs
public partial class Cliente{ public void GetOrders() { }}
Cliente2.cs
public partial class Cliente{ public void GetInvoice() { }}
• Divide la definizione di un tipo in file separati• Il compilatore C# combina i file per creare un unica classe• La separazione aiuta a mantenere aggiornato il codice
sopratutto in presenza di generaziona automatica
Visual Studio 2005.NET Compact Framework 2.0
Visual Studio 2005.NET Compact Framework 2.0
Nuove API Managed in Nuove API Managed in Windows Mobile 5.0Windows Mobile 5.0
Pocket OutlookMicrosoft.WindowsMobile.PocketOutlook
• Wrapper sul Pocket Outlook Object Model (POOM)– Espone molte funzionalità di Pocket Office
• Facilita l’uso delle informazioni dentro al PIM– Appuntamenti, contatti e task– Account di Email e SMS e messaggi– Recipienti e allegati
• La classe OutlookSession è la porta d’ingresso– Wrapper dell’application objecy di Pocket
Outlook
Le classi di Pocket Outlook
Pocket OutlookPocketOutlook.MessageInterception
• Fornisce un meccanismo di processo dei messsaggi– Intercetta I messaggi SMS in ingresso– Può eseguire specifiche applicazioni– E’ possibile impostare dei criteri di selezione– Può togliere il messaggio dalla “coda”
• Utile in tante situazioni– Evidenziare alcuni messaggi– Meccanismi di Push dal server– Tasporto di semplici informazioni
• configurazione
Le classi Message Interception
FormsMicrosoft.WindowsMobile.Forms
• Fornisce una serie di nuove finestre di dialogo– Foto dalla camera digitale, scelta di un
contatto, selezione di un immagine
FormsNuove dialog
FormsEsempio
// using Microsoft.WindowsMobile.Forms;// using Microsoft.WindowsMobile.PocketOutlook;
CameraCaptureDialog cameraCaptureDialog = new CameraCaptureDialog();cameraCaptureDialog.ShowDialog();this.image = cameraCaptureDialog.FileName;this.imageDisplay.Image = new Bitmap( this.image );
ChooseContactDialog chooseContactDialog = new ChooseContactDialog();chooseContactDialog.ShowDialog();this.contact = chooseContactDialog.SelectedContact;this.contactName.Text = this.contact.FileAs;
SelectPictureDialog selectPictureDialog = new SelectPictureDialog();selectPictureDialog.ShowDialog();this.picture = selectPictureDialog.FileName;this.pictureDisplay.Image = new Bitmap( this.picture );
Nuove API Managed in Windows Mobile 5.0
Nuove API Managed in Windows Mobile 5.0
© 2005 Microsoft Corporation. All rights reserved.© 2005 Microsoft Corporation. All rights reserved.This presentation is for informational purposes only. MICROSOFT MAKES NO WARRANTIES, EXPRESS OR IMPLIED, IN This presentation is for informational purposes only. MICROSOFT MAKES NO WARRANTIES, EXPRESS OR IMPLIED, IN THIS SUMMARY.THIS SUMMARY.