1 / 40

Windows Longhorn, Avalon and XAML

Windows Longhorn, Avalon and XAML. Daniele Bochicchio daniele@aspitalia.com Microsoft ASP.NET MVP. Cristian Civera cristian@aspitalia.com Microsoft ASP.NET MVP. Agenda. Windows Longhorn Pillars WinFX: Avalon, Aero WinFS Indigo Avalon: non solo Longhorn XAML

renata
Télécharger la présentation

Windows Longhorn, Avalon and XAML

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Windows Longhorn, Avalon and XAML Daniele Bochicchio daniele@aspitalia.com Microsoft ASP.NET MVP Cristian Civera cristian@aspitalia.com Microsoft ASP.NET MVP

  2. Agenda • Windows Longhorn Pillars • WinFX: Avalon, Aero • WinFS • Indigo • Avalon: non solo Longhorn • XAML • Fondamenti, il code behind, i nuovi controlli, style • BAML e compilazione delle applicazioni • Costruzione di applicazioni 3D • Binding ed applicazioni data-centric • Eventi e il nuovo concetto di comandi • Rivoluzione e futuro

  3. L’evoluzione delle “API” • 1985: Win16 con Windows 1.0 • 1990: Win32 (Windows 3.0), VB1 • 1992: MFC (Microsoft Foundation Classes), OLE • 1993: COM • 1995: VB 4 • 1997: VB 5, DCOM • 1998: VB 6 • 2000: COM+ • 2002: .NET Framework 1.0 • 2003: .NET Framework 1.1 • 2005: .NET Framework 2.0 • 2006: Longhorn Application Model

  4. Win32 Programming • Vantaggi • Si può fare tutto • Svantaggi • A patto di sapere come si fa :) • Bisogna conoscere le API di Windows

  5. In principio erano VB, ATL, MFC • Vantaggi • Layer aggiuntivi per non passare direttamente per le API di Windows • Possibilità di componentizzare • Svantaggi • Difficoltà di apprendimento (ATL, MFC) • Poco controllo sul risultato (VB)

  6. Poi venne COM • Vantaggi • Estendibilità senza per forza usare le API di Windows • Possibilità di usare oggetti scritti in linguaggi diversi • Svantaggi • DLL hell • Versioning • deployment

  7. Infine arrivò il .NET Fx • Vantaggi • Security: Control Access Security (CAS) • Versioning, side-by-side execution • API uguali per ogni linguaggio • Compilazione ed ottimizzazione del JIT-ter • Protezione da codice insicuro (buffer overrun) • Svantaggi • Interop per molte funzionalità • Rottura con il passato

  8. ClickOnce in pillole • Deployment semplificato da web • Incluso in .NET Framework 2.0 (Whidbey) • CAS in base al manifest ed al contesto in cui gira • Possibilità di • eseguire le applicazioni online • installarle in locale • Funzionalità di auto update incluse

  9. Un giorno sarà Longhorn • Vantaggi • .NET Fundamentals: CLR, CAS, versioning, side-by-side exec, ADO.NET • Tutto managed: da qualsiasi linguaggio, stesso tipo di accesso alle API di Windows • Flessibilità del web: • Interaccia a markup: XAML • Navigation Application • Isolamento da altre applicazioni • Deployment rapido con ClickOnce • MSBuild per “compilare” con azioni personalizzate • Svantaggi • E’ un modo inesplorato ai più

  10. Windows Longhorn • Uscita prevista nel 2006 • Includerà Avalon, Aero ed Indigo • WinFS è stato rimandato a data da destinarsi • E’ il primo sistema operativo completamente managed • E’ un consolidamento delle tecnologie esistenti: .NET Framework, Web Services, Remoting • E’ l’innovazione: Aereo, Avalon, Click-once

  11. Queuing Eventing Routing WinFX Presentation Data Communication Communication Windows Forms Windows Forms Avalon Avalon WinFS WinFS Indigo Indigo ASP.NET ADO.NET Collaboration Document UI Media Object T/SQL XML Service Models Schemas Messaging Services Connectivity Services Controls Interop Engine Desktop Window Manager Adaptive UI Engine Desktop Services People and Groups ObjectSpaces People Group Channels (Datagram, Reliable, Peer, …) Policy Engine Synchronization(WinFS, Win32..) Calendar Media Page/SiteComposition Presentation Object Manager Desktop Composition Engine Application Services DataSet Collaboration History Document … Channel Security Transport Channels (IPC, HTTP, TCP…) Data Model Media Services InfoAgent (PreferenceRules..) Message Encoder SQL XML Real-Time Activities Items Animation andComposition MediaProcessing Capture and Sourcing Designer Services Personalization and Profiling Services System Services Relationships FileSystem Services (MetaDataHandlers..) Communications Manager (Port) Transaction Framework Providers Signaling Hardware Rendering Software Rendering and Sinks Controls Membership and Security Services Extensions Federation Base Operating System Services CLR Base Class Libraries Network Class Library Memory Manager Code Execution Loader Security Serialization Application Deployment Engine (Click-Once) Network Services Demand Activation and Protocol Health Hosting Layer PNRP Native WiFi SIP TCP Listener UDP Listener IPC Listener Transactions Storage Identity & Security System Management Services (Event Logs, Tracing, Probes, Auto Update, Admin) GDI/GDI+ Window Manager Global Audio Engine Direct 3DGraphics Virtual Shadow Copy Service File Replication Service Virtual Disk Service Lightweight Transactions TransactionCoordinator Internet Connection Firewall Graphics drivers DDI Input Manager Audio Drivers DirectX Graphics Mini port Protocols Redirectors Distributed File System Filter Manager Cache Manager KernelTransactionManager LoggingService Filter Engine TCP, UDP IPV4, IPV6 IPSEC QOS HTTP Listener Transacted NTFS Universal Data Format FAT 16/32 Plug andPlay MemoryManager PowerManager ConfigManager Process Manager SecurityReference Monitor LPCFacility IO Manager Device Drivers Kernel Mode 802.3 802.11 .. Kernel SCSI/FC Hardware Abstraction Layer

  12. Windows Forms Windows Forms Avalon WinFS Indigo ASP.NET ADO.NET Collaboration Document UI Media Object T/SQL XML Service Models Queuing Eventing Schemas Messaging Services Connectivity Services Routing Controls Interop Engine Desktop Window Manager Adaptive UI Engine Desktop Services People and Groups ObjectSpaces People Group Channels (Datagram, Reliable, Peer, …) Policy Engine Synchronization(WinFS, Win32..) Calendar Media Page/SiteComposition Presentation Object Manager Desktop Composition Engine Application Services DataSet Collaboration History Document … Channel Security Transport Channels (IPC, HTTP, TCP…) Data Model Media Services InfoAgent (PreferenceRules..) Message Encoder SQL XML Real-Time Activities Items Animation andComposition MediaProcessing Capture and Sourcing Designer Services Personalization and Profiling Services System Services Relationships FileSystem Services (MetaDataHandlers..) Communications Manager (Port) Transaction Framework Providers Signaling Hardware Rendering Software Rendering and Sinks Controls Membership and Security Services Extensions Federation CLR Base Class Libraries Network Class Library Memory Manager Code Execution Loader Security Serialization Application Deployment Engine (Click-Once) Network Services Demand Activation and Protocol Health Hosting Layer PNRP Native WiFi SIP TCP Listener UDP Listener IPC Listener Transactions Storage Identity & Security System Management Services (Event Logs, Tracing, Probes, Auto Update, Admin) GDI/GDI+ Window Manager Global Audio Engine Direct 3DGraphics Virtual Shadow Copy Service File Replication Service Virtual Disk Service Lightweight Transactions TransactionCoordinator Internet Connection Firewall Graphics drivers DDI Input Manager Audio Drivers DirectX Graphics Mini port Protocols Redirectors Distributed File System Filter Manager Cache Manager KernelTransactionManager LoggingService Filter Engine TCP, UDP IPV4, IPV6 IPSEC QOS HTTP Listener Transacted NTFS Universal Data Format FAT 16/32 Plug andPlay MemoryManager PowerManager ConfigManager Process Manager SecurityReference Monitor LPCFacility IO Manager Device Drivers Kernel Mode 802.3 802.11 .. Kernel SCSI/FC Hardware Abstraction Layer WinFX Presentation Data Communication Avalon WinFS Indigo Base Operating System Services

  13. Longhorn SDK • E’ un insieme di tool, codice e strumenti per creare applicazioni per Longhorn • Tutto gestito da codice managed • .NET Framework 2.x per l’accesso alle API • WinFX = API al 100% • Se c’è un’API in Longhorn, esiste il corrispettivo in WinFX • Se non esiste un’API in WinFX, non esiste in LH Si scarica da http://longhorn.msdn.microsoft.com/

  14. I numeri di LH PDC build • 100.000 API documentate • 200.000 pagine di DOC Longhorn .NET Framework 1.x 172 assemblies 438 namespaces 13.595 tipi 39 assemblies 121 namespaces 3.889 tipi

  15. WinFS • Sistema di ricerca basato su SQL Server Yukon, nel sistema • Aggregatore logico di dati • Visualizzazione oggetti per proprietà (ordina per autore, dimensione) a prescindere dalla loro locazione sul disco fisso. Necessita di una partizione abilitata • Basato su XML Schema per l’arricchimento delle funzionalità • Lavora in unione con NTFS per migliorare l’utilizzo del sistema operativo • Posticipato a data da destinarsi

  16. Aero • La nuova interfaccia grafica, completamente 3D • Lavora direttamente sulla GPU • Se l’hardware non supporta tutte le funzionalità, verrà fatto il rendering minimo • Supporto per trasparenze, alpha blending sugli oggetti, effetto “vetro” • Esiste una versione minima nella WinHec build

  17. Indigo • Strato di comunicazione di Longhorn • Riunisce: • Web Service • Remoting • Message Queue • Basato su XML • Approccio SOA (Service Oriented Architecture) • Riunisce gli standard di WSA per fornire servizi: • Sicuri • Integri • Transazionali • Interoperabili • Oggi parzialmente implementato con WS2

  18. Avalon • La nuova interfaccia di presentazione • Offre nuove managed APIs e controls • Supporto per rich e complex GUI • Filmati come sfondo di oggetti di una finestra • Possibilità di posizionare gli oggetti in maniera inclinata nella finestra • E’ un insieme di classi offerte da WinFX attraverso il namespace System.Windows

  19. Avalon November 04 CTP • Versione di Avalon per Windows XP e Windows Server 2003 • Richiede il .NET Framework 2.0 Nov 04 CTP • Include un SDK • Prima versione a supportare i sistemi operativi “vecchi” • La versione finale di Avalon girerà su XP, 2003, 2003 R2 e Longhorn • Video e audio non sono attivi

  20. XAML • Nuovo linguaggio XML per definire le GUI • Gli oggetti sono inseriti in maniera dichiarativa e convertiti da un motore in istanze di un oggetto • Gli oggetti sono convertiti in istanze di oggetti nel namespace MsAvalon.Windows .Controls/Shapes/Media/Data… <Window xmlns="http://schemas.microsoft.com/2003/xaml"> <Button Widht="100" Height="30">Questo e' un button</Button> </Windows>

  21. Due tipi di applicazioni • Application Class • Supporto alle applicazioni Windows classiche • NavigationApplication Class • Supporto alle applicazioni con necessità di funzionalità di navigazione, stile web

  22. Componenti di XAML • Panels • il concetto che sta dietro è identico a quello dei Panels di ASP.NET, sono cioè dei contenitori di altri controls • Documents • è una delle novità, perché rappresenta un insieme di oggetti in grado di mostrare documenti • Controls • a cosa servono dovrebbe essere chiaro, ma lo ripetiamo. Sono utilizzati per interagire con l'utente. • Shapes • sono usati per inserire oggetti vettoriali.

  23. I nuovi controlli • System.Windows.Controls.Primitives:controlli primitivi per fornire: • Bottoni • Selezioni • MenuItem • Elementi che già conosciamo oggi… • Ogni controllo può contenere ulteriori controlli/shapes che ne definiscono il layout • Lo style dell’attuale Windows è emulato tramite shapes

  24. Avalon e XAML su Windows XP

  25. Il code behind • Design e source legati con l’uso di partial class • In file1.xaml • In file1.xaml.cs <Application def:Class=“MyClass” def:CodeBehind=“MyClass.xaml.cs” > public partial class MyClass : [Application] { // codice }

  26. BAML e compilazione • Il file xaml viene trasformato in un file binario .BAML • Ottimizzato nelle dimensioni • Inserito nelle risorse dell’assembly e caricato a runtime • E’ possibile sfruttare quindi la localizzazione delle risorse • Le variabili vengono valorizzate • Era previsto anche un secondo metodo CAML alla “ASP.NET”, ma verrà scartato

  27. Style • Permettono di • Specificare proprietà comuni • Ridefinire un controllo • Variare il comportamento al mutare di proprietà dipendenti • Identificabili per nome o per tipo di controllo • Sono relativi al controllo padre e ereditabili • I controlli in Avalon sfruttano gli style per il loro layout <Style> <Button FontSize=“40” Foreground=“Red” />

  28. Animazioni • xxxAnimation: oggetti che variano nel tempo il valore delle proprietà • Ne esiste una per ogni tipo di dato, non solo primitivo: Length, Color, Matrix… • Possono essere applicate a qualsiasi proprietà di qualsiasi controllo • Controllabili da codice • Coordinabili con timeline e relative al padre • Potenti con trasformazioni 2D / 3D sfruttando DirectX <DoubleAnimation From=“0” To=“1” Duration=“2” RepeatDuration=“Indefinite” />

  29. Costruzione di applicazioni 3D • La base di tutto è il controllo Viewport 3D • I concetti sono gli stessi dell’attuale DirectX, ma con la facilità di XAML • Avalon permette di definire: • Camera • Modelli • Luce: punti, ambiente, direzionale • Geometrie 3D: cubi, sfere, cilindri, mesh • Materiali • E’ possibile applicare animazioni e style • Esiste un convertitore mesh X -> xaml (DXMeshToXaml.exe)

  30. Style Animazioni Supporto 3D in Avalon

  31. DataBindinding ed applicazioni data-centric • L’oggetto System.Windows.Data.Bind permette di caricare da una fonte dati a n oggetti/proprietà • Lavora in modalità monodirezionale, bidirezionale, singolo carimento • Può essere asincrono • Tramite le DataSource è possibile definire sorgenti a livello xaml • Relativo al DataContext padre • Riceve notifiche tramite IPropertyChange, ICollectionChange e DependencyObject

  32. Accesso ai dati con XAML

  33. Eventi in Avalon • Non sono più basati sui messaggi di Win32 • Possono viaggiare tra l’albero degli oggetti • Bubbling: dall’elemento che scatena l’evento fino al padre • Tunneling: dal padre fino al destinatario dell’evento • Si possono quindi intercettare e annullare e determinano eventi di tipo Preview / After • Lavorano su qualsiasi Thread • Supportano qualsiasi tipo di input, per es: stylus

  34. Eventi: comandi • Permettono di legare un controllo ad un altro • Eseguono operazioni • Limitano l’uso di codice per le classiche operazioni evento->azioni • Utili per ridefinire controlli, es: ScrollViewer

  35. ScrollViewer ASPItalia.com per Avalon

  36. Il futuro dello sviluppatore • Con XAML si può fare molto, ma ovviamente non tutto • Non dovremo più occuparci della presentazione • Creare classi che implementano interfacce per fornirle allo strato di presentazione • Creare controlli nuovi per dare funzionalità aggiuntive e rendere più facile il loro riutilizzo e definizione del layout

  37. La vera rivoluzione • Abbandono delle librerie Win32 usate dalle librerie ad alto livello: • Fine degli handle GDI/User • Fine di coda dei messaggi e colli di bottiglia • Fine dei problemi relativi al threading • Uso delle potenzialità delle schede video • Buffer video • Trasformazioni ed effetti • Minor problemi di memory leak (handle) • Il DCE resterà basato sui messaggi ancora per un po’, per compatibilità

  38. Q&A Time Domande specifiche? Le slides e le demo saranno online da domani su http://www.dotnetcircle.it/

  39. Avalon Showcase Per contattarci: daniele@aspitalia.com cristian@aspitalia.com I nostri blog: http://blogs.aspitalia.com/daniele/ http://blogs.aspitalia.com/ricciolo/ Avalon Zone: http://avalon.aspitalia.com

  40. Dalla nostra esperienza su ASP, ASP.NET 1.0, ASP.NET 2.0, XML, MCE, LonghornCorsi online, su CD Rom, in aula, per aziende e PAhttp://corsi.aspitalia.com/

More Related