Introduzione
Introduzione
Brent Rettore
Wise Owl Consulting
Ottobre 2003
Contenuto
Che cos'è questo libro
Modello di applicazione "Longhorn"
Attendibilità del calcolo e della sicurezza
Archiviazione avanzata e accesso ai dati
Comunicazione e collaborazione
Presentazione e supporti avanzati
Cosa troverai in questo libro
Come sviluppatore di software di molti, molti anni, ho scritto programmi per numerose piattaforme e sistemi operativi, tutti con i loro vantaggi e svantaggi. In genere, la maggior parte delle piattaforme e dei sistemi operativi era simile ai predecessori con miglioramenti incrementali.
Ad oggi, Microsoft® Windows® stesso si è evoluto in questo modo. Inizialmente, la scrittura di un'applicazione Windows ha lo scopo di programmare l'API Microsoft Win32®. In realtà, era l'API Win16 contemporaneamente, ma concettualmente sono le stesse. Microsoft ha progettato l'API Win32 come API semplice e procedurale chiamabile dai programmi C. In una sola volta, il libro di Charles Petzold Programming Windows, che ha introdotto questa API, era necessaria la lettura per qualsiasi sviluppatore di applicazioni Windows.
La cosa interessante dell'API Win32 è che ti consente di eseguire praticamente qualsiasi cosa vuoi. (La cosa meno bella è che è praticamente necessario fare tutto ciò che vuoi. Si ottiene prima crack in tutti i messaggi di Windows e può rispondere agli eventi che segnalano in qualsiasi modo appropriato (o inappropriato). È possibile modificare la memoria, ovvero la memoria del processo o persino la memoria di un altro processo, ma si vuole consentire la sicurezza. È possibile disegnare una finestra in qualsiasi modo. Il tuo lavoro è semplicemente quello di ottenere i bit corretti sullo schermo nelle posizioni corrette nei momenti appropriati.
La progettazione di Windows è in realtà piuttosto orientata agli oggetti. Si modificano gli oggetti finestra, si usano penne grafiche e così via. Tuttavia, queste operazioni vengono eseguite chiamando le API corrette (al di fuori delle migliaia disponibili) nell'ordine corretto e passando i tipi di dati appropriati, soprattutto senza aiuto del compilatore quando si verifica un errore.
Quando Microsoft ha rilasciato Windows per la prima volta e per un certo numero di anni dopo, gli sviluppatori di software hanno in genere scritto applicazioni monolitiche e isolate. Gli sviluppatori non avevano componenti da cui comporre applicazioni e nessun meccanismo che supportasse la composizione; inoltre, le applicazioni non hanno tentato di comunicare con altre applicazioni nello stesso sistema, e non con un'applicazione in un computer diverso.
Nel 1993, Microsoft ha introdotto il Component Object Model (COM). Microsoft ha progettato COM come tentativo di risolvere i due problemi seguenti. COM ha introdotto uno standard binario in modo che i componenti, prodotti da diversi compilatori del linguaggio di origine, possano interagire usando definizioni di interfaccia non modificabili. Il protocollo di rete DCOM (Distributed COM) ha consentito a questi componenti di interagire tra i limiti del processo e del computer.
Molte delle API di Windows introdotte da Microsoft dopo il 1993 sono API basate su COM. Due esempi sono le API delle estensioni Di Microsoft DirectX® e Shell. Oggi Windows ha più di 10.000 API progettate da molti sviluppatori diversi in molti team diversi con obiettivi diversi. Di conseguenza, Windows espone alcune api come punti di ingresso flat in linguaggio C in una libreria di collegamento dinamico (DLL). Espone altre API come set di interfacce COM complesse e interagendo. Sono disponibili altre API a cui si accede usando altre tecnologie.
In pratica, lo sviluppatore vuole che un sistema operativo ti scudi dalla maggior parte di questa complessità nella maggior parte dei casi. Pertanto, molti team diversi, all'interno di Microsoft e out, hanno sviluppato varie librerie di framework per semplificare lo sviluppo di applicazioni. Alcune librerie di framework più diffuse sono Microsoft Foundation Classes (MFC), Microsoft ActiveX Template Library (ATL), la libreria in Microsoft Visual Basic®, la Libreria Windows oggetti di Borland (OWL) e senza dubbio molti altri.
MFC, ad esempio, tenta di eseguire il wrapping delle varie idioincrone dell'API Win32 con un set coerente e orientato agli oggetti di classi C++. Quando il linguaggio di programmazione preferito è C++ e le librerie MFC supportano direttamente ciò che si vuole fare, il lavoro è semplice. Tuttavia, quando vuoi qualcosa leggermente al di fuori del mainstream, sei principalmente da solo e, di fatto, in forma peggiore rispetto a prima, perché ora devi capire come usare le API Win32, oltre a rendere il tuo lavoro interoperare con le classi MFC esistenti.
ATL consente di scrivere oggetti COM estremamente efficienti e, in misura minore, le applicazioni Windows che usano classi basate su modelli C++ poco chiare e (a molti sviluppatori). Non si tratta di un'estensione molto lunga per dire che si potrebbe facilmente finire con oggetti altamente efficienti che nessuno poteva capire.
Il team di Visual Basic di Microsoft ha adottato un approccio diverso. Hanno eseguito il wrapping dell'accesso all'API Win32 in un linguaggio e una libreria facili da imparare e usare, ma a scapito della rimozione di funzionalità e opzioni. Visual Basic semplifica la produzione di componenti per le applicazioni e le applicazioni che usano tali componenti. Tuttavia, Visual Basic non consente di completare l'accesso a tutte le offerte dell'API Win32. A volte lo sviluppatore di Visual Basic non può semplicemente eseguire un'attività a causa di restrizioni imposte dall'ambiente di sviluppo scelto.
All'inizio degli anni '90, il World Wide Web è decollato. I computer hanno iniziato a diventare sempre più connessi. Inizialmente, un Web browser ha semplicemente eseguito il rendering di codice HTML statico e l'esplorazione del Web era molto simile a guardare una pagina di una rivista.
Quando Microsoft ha rilasciato Internet Explorer 4 nel 1997, sono sorte altre possibilità. Gli sviluppatori possono creare file HTML contenenti script e markup. Gli oggetti nel modello a oggetti HTML hanno ottenuto comportamenti ed è possibile scrivere script che hanno risposto agli eventi e fornito un comportamento personalizzato. Le pagine HTML ora potrebbero reagire agli eventi utente nel client e rispondere molto più rapidamente rispetto alle applicazioni basate sul Web precedenti che richiedevano un round trip al server per ogni aggiornamento dello schermo.
Un grande vantaggio delle applicazioni Web è stato che è possibile distribuire facilmente l'applicazione copiando semplicemente un set di file in un server. La volta successiva che un client ha visitato l'applicazione, ha interagito con la versione più recente.
Un altro grande vantaggio delle applicazioni Web è stato il supporto predefinito per l'integrazione di contenuti multimediali avanzati. Il layout di pagina basato su flusso e il supporto per più tipi di carattere, grafica e contenuti multimediali è molto più semplice da fornire tramite un'applicazione Web rispetto a quella attualmente usata tramite un'applicazione Win32, indipendentemente dal framework usato.
In generale, tuttavia, è ancora difficile scrivere applicazioni Web oggi perché il supporto del linguaggio di programmazione e della libreria per tali applicazioni è limitato. Il debug di applicazioni Web è spesso un incubo. In molti modi, l'esperienza utente client non è ancora così ricca quanto quella fornita dalle applicazioni client basate sull'API Win32 a causa del set limitato di controlli disponibili per le applicazioni Web.
Alla fine degli anni '90, uno sviluppatore windows spesso doveva specializzarsi. Si era un programmatore api Win32 e si poteva scrivere lentamente qualsiasi tipo di applicazione client. In alternativa, si era uno sviluppatore di Visual Basic e si poteva scrivere rapidamente applicazioni dell'interfaccia utente basate su form, ma non potevano scrivere altri tipi di applicazioni. Uno sviluppatore MFC ha in qualche modo stravalato questi due estremi, anche se in pratica, era necessario essere uno sviluppatore C++ esperto che aveva familiarità con l'API Win32 per essere un buon sviluppatore MFC. Gli sviluppatori ATL e COM-object erano spesso gli idraulici di un sistema e fornivano componenti per questi altri sviluppatori da riutilizzare.
Nel 2000 Microsoft ha introdotto .NET. La definizione di ciò che è esattamente .NET è diversa a seconda dell'utente richiesto. A mio parere, .NET è una piattaforma di sviluppo software moderna per la produzione, più rapidamente di una possibile, correggere e proteggere applicazioni Windows che usano le tecnologie più recenti, ad esempio i servizi XML e Web, pur consentendo comunque l'accesso al codice del patrimonio.
.NET in generale e codice gestito in particolare offre numerosi vantaggi allo sviluppatore di software:
- Modello a oggetti indipendente dal linguaggio e indipendente dai tipi.
- Sono stati ridotti i conflitti tra versioni diverse dei componenti.
- Riduzione del numero di bug e di fori di sicurezza dovuti a errori di programmazione comuni. Ad esempio, non sono presenti più sovraccarichi del buffer e non sono più presenti errori di gestione della memoria.
- Un singolo framework e un set di librerie che tutti gli sviluppatori possono usare. Le librerie di classi .NET Framework incapsulano le API Win32 più usate più di frequente, oltre a numerose API aggiuntive fornite da molti SDK in un pacchetto unificato.
- Astrazioni più elevate rispetto a quelle disponibili in precedenza.
In alcuni modi, .NET è semplicemente un nuovo framework indipendente dal linguaggio orientato agli oggetti che incapsula molti aspetti delle API Win32. Personalmente, preferisco pensare a .NET come sostituzione all'avanguardia per le API Win32, incomplete, ma sempre più complete nel tempo.
Ad esempio, .NET versione 1.0 fornisce classi di sviluppo di applicazioni client basate su form orientate agli oggetti. È possibile pensare a questi come semplicemente wrapper sulle API di windows Win32 di base. Tuttavia, .NET fornisce anche classi ASP.NET che incapsulano lo sviluppo di applicazioni Web e la generazione di comportamenti HTML. Queste classi estendono effettivamente l'API Di Windows e non sono realmente un wrapper per nulla nelle API Win32. . Il supporto completo di NET per i servizi Web e XML in generale sono due esempi di nuove funzionalità fornite con .NET anziché semplici wrapper per le funzionalità Win32 esistenti.
Che cos'è questo libro
Questo libro è incentrato sulle funzionalità di Microsoft "Longhorn" per lo sviluppatore. Dal punto di vista dello sviluppatore, "Longhorn" offre nuove funzionalità che è possibile classificare in modo generale in cinque aree:
Modello di applicazione "Longhorn"
"Longhorn" definisce le applicazioni in modi nuovi e più potenti.
- Le API "Longhorn" sono classi gestite che gestiscono gran parte della gestione della programmazione e riducono il carico di lavoro dello sviluppatore. Tutti i compilatori e gli strumenti di terze parti che supportano .NET Common Language Runtime (CLR) supportano automaticamente le nuove API "Longhorn".
- Il modello di applicazione "Longhorn" supporta sia le applicazioni di spostamento basate su form tradizionali che le nuove applicazioni di spostamento basate su pagine. Il supporto di spostamento basato sulle pagine dell'applicazione viene fornito dal sistema operativo.
- Un nuovo modello di sicurezza e privacy "Longhorn", che è il risultato di una combinazione di API gestite e identità digitale, fornisce la sicurezza delle applicazioni fin dall'inizio del processo di sviluppo. Le applicazioni e i componenti "Longhorn" sono attendibili a causa dell'uso del codice gestito.
- Le API "Longhorn" rappresentano i migliori concetti di sviluppo di una varietà di tecnologie contemporanee. In molti modi, lo sviluppatore non è più vincolato dalle decisioni di progettazione prese più di un decennio fa.
- Gestione e conservazione automatica dello stato dell'applicazione per semplificare lo sviluppo di applicazioni.
- La tecnologia di distribuzione ClickOnce supporta funzionalità di distribuzione sofisticate, ad esempio l'installazione in Programmi, il controllo delle versioni, l'installazione side-by-side e il download Drizzle.
- Le interfacce utente induttive guidano gli utenti tramite un'attività.
- Le funzionalità di accessibilità e automazione sono integrate nella piattaforma. Le applicazioni ottengono automaticamente tale supporto.
Attendibilità del calcolo e della sicurezza
"Longhorn" basa la sicurezza di un'applicazione sul modello cas (Code Access Security) di Common Language Runtime, ma con estensioni significative.
- "Longhorn" riconosce che alcune applicazioni sono completamente attendibili e altre hanno solo attendibilità parziale. Le applicazioni che partecipano completamente al modello di sicurezza "Longhorn" avranno accesso completo alle funzionalità "Longhorn". Le applicazioni che partecipano solo parzialmente al modello avranno alcuni vantaggi, anche se con restrizioni.
- "Longhorn" fornisce un ambiente di runtime ultrasicuro e gestito, denominato Secure Execution Environment (SEE), che protegge l'utente dal comportamento dell'applicazione "non valido".
- Trust Manager fornisce un sistema di assegnazione dei punteggi per le applicazioni "Longhorn" che determinano un livello di attendibilità suggerito che gli utenti potrebbero concedere all'applicazione.
- "Longhorn" fornisce un Centro protezione per la sicurezza che consente a un utente di gestire le correzioni ad accesso frequente e l'accesso agli aggiornamenti di Windows. Inoltre, un Advisor per la sicurezza informa l'utente dei rischi e delle violazioni della sicurezza.
- Digital Rights Management fa parte del codice gestito, offrendo protezione avanzata per la proprietà intellettuale. Ciò consente l'archiviazione sicura e la trasmissione di proprietà intellettuale precedentemente vulnerabili nell'ambiente "Longhorn".
- "Longhorn" identifica in modo univoco gli utenti e i computer che usano firme digitali. In combinazione con un'autorità di firma per la verifica, "Longhorn" può identificare in modo sicuro e affidabile i singoli utenti negli scenari di elaborazione.
Archiviazione avanzata e accesso ai dati
"Longhorn" offre un miglioramento significativo dell'archiviazione dei dati dell'applicazione e l'accesso tramite un nuovo file system.
- La nuova ADO.NET offre un accesso ai dati migliorato.
- Schemi comuni per informazioni quotidiane, ad esempio contatti, organizzazioni, indirizzi e molto altro ancora, consentono l'accesso condiviso alle informazioni da applicazioni, dal sistema operativo e dalla shell. Infatti, la nuova interfaccia utente della shell è uno degli utenti più pesanti del nuovo sistema di archiviazione.
- Un'applicazione può allegare metadati aggiuntivi agli oggetti nel file system, consentendo una ricerca e un recupero più veloci degli oggetti file rispetto a quanto è possibile con un file system tradizionale.
- Le modifiche apportate agli oggetti nell'ambiente "Longhorn" vengono propagate automaticamente ad altre istanze di tali oggetti usando il data binding dinamico.
Comunicazione e collaborazione
Le applicazioni "Longhorn" ora hanno una vasta gamma di funzionalità di comunicazione e collaborazione.
- Funzionalità come sessioni e canali offrono servizi di collaborazione avanzati ai partecipanti.
- Le funzionalità di comunicazione e collaborazione possono operare in modo sicuro tramite firewall e NAT (Network Address Translation), consentendo l'attraversamento dei limiti aziendali.
- La comunicazione standardizzata basata sui servizi Web consente alle applicazioni legacy e alle nuove applicazioni di partecipare alla collaborazione.
- Le funzionalità di comunicazione basate su server/peer possono operare su un'infrastruttura centralizzata o direttamente ai client utente.
- Il supporto della presenza virtuale consente agli utenti di collaborare con altri utenti tramite funzionalità simili alla messaggistica istantanea (notifica comune, invito e così via).
- La sicurezza integrata è parte integrante di queste funzionalità.
- Il supporto dell'estendibilità shell, ad esempio verbi ** collaborativi (uso di un client di chat predefinito e così via), può essere identificato per usare strumenti familiari nella comunicazione in tempo reale "Longhorn".
- I controlli comuni, ad esempio il nuovo controllo selezione Persone, offrono un supporto generale delle applicazioni per le applicazioni di comunicazione.
Presentazione e supporti avanzati
Gli sviluppatori possono produrre più facilmente applicazioni che forniscono interfacce utente avanzate usando i servizi multimediali e di presentazione disponibili in "Longhorn".
- "Longhorn" fornisce allo sviluppatore classi grafiche avanzate che forniscono animazioni, effetti e immagini visivamente interessanti che sfruttano l'accelerazione hardware.
- La grafica dichiarativa e dinamica avanzata consente la presentazione e la scalabilità flessibili per i dispositivi di output ad alta risoluzione durante il salvataggio delle risorse perché la grafica viene generata da un linguaggio descrittivo.
- Le animazioni facilmente applicate migliorano l'usabilità e la continuità dell'interfaccia utente.
- Il supporto grafico usa schede video DirectX/3D con accelerazione hardware per creare un ambiente più coinvolgente e fluido.
- L'applicazione può integrare facilmente tutte le forme di interfaccia utente, ovvero immagini, video, audio, grafica vettoriale, controlli, testo e così via.
- Un nuovo modello di layout consente la visualizzazione rtf e multimediale a causa di un framework che regola automaticamente la paginazione, la posizione e così via, alle dimensioni dello schermo.
- I nuovi servizi di testo, ad esempio l'inclusione del rendering di subpixel (ClearType) consentono un'interfaccia utente grafica visivamente coinvolgente in qualsiasi PC con un acceleratore 3D indipendentemente dalle possibili risoluzioni dello schermo.
- È possibile unire parti di dati diverse in contenitori, che possono essere spostate nell'interfaccia utente.
- Le trasformazioni condizionali dei dati in base a tipo, valore o altre regole offrono agli strumenti di sviluppo di creare un'interfaccia utente più semplice.
- Una vasta piattaforma multimediale consente una riproduzione senza problemi di audio e video; esperienze A/V distribuite tra PC e dispositivi elettronici di consumo; codec audio e video di alta qualità; prestazioni elevate per l'acquisizione e la modifica di contenuti ad alta definizione in tempo reale; rich CD, DVD e servizi di metadati televisivi.
Cosa troverai in questo libro
Ognuno di questi argomenti può compilare facilmente un libro da solo. Pertanto, non descriverò tutte le varie API in "Longhorn". Non ho anche intenzione di approfondire una descrizione dettagliata di ogni tecnologia. Non si tratta di un'API o di un libro di riferimento. Sono sicuro che non sarà lungo fino a quando non si possono trovare molte copie leggermente modificate e rigurgitate della documentazione disponibile nelle librerie.
Quello che farò è mostrare come iniziare a sviluppare per "Longhorn". Come minimo, è consigliabile leggere i capitoli 1 e 2 perché trattano le nozioni di base assolute necessarie per sviluppare applicazioni per la piattaforma "Longhorn".
Nel capitolo 1 viene illustrato il nuovo modello di applicazione. Non passare Go. Non raccogliere $200. È davvero necessario leggere il capitolo 1 o si otterrà una scheda Go To Jail nella posta. Vi presento anche un nuovo linguaggio di markup/programmazione nel capitolo 1. Sia che tu sia uno sviluppatore VB.NET, uno sviluppatore C# o uno dei mitici sviluppatori COBOL.NET, dovrai imparare questo nuovo linguaggio di markup/programmazione. Leggere il capitolo 1: modello di applicazione "Longhorn". Non sto scherzando. In effetti, vai a farlo ora e torna indietro. Aspetto.
Ok, ora che hai letto il capitolo 1 e sei entusiasta di creare le tue applicazioni, probabilmente dovresti leggere il capitolo 2. In esso viene illustrato come compilare, distribuire ed eseguire un'applicazione "Longhorn". Quindi il Capitolo 2 è anche importante, ma non c'è bisogno di affrettarsi ad esso. Si tratta di un capitolo molto paziente e attenderà di completare questa introduzione.
I capitoli rimanenti introducono le varie tecnologie a cui ho alludeto in questa introduzione. Il capitolo 3 è un'ottima introduzione alla creazione di interfacce utente usando il nuovo linguaggio di markup e offre un sapore della sua potenza. Il capitolo 4 introduce le nuove API del file system e probabilmente causerà l'abbandono delle API del file system Win32.
Nel capitolo 5 viene illustrato come usare il data binding per spostare i dati da praticamente qualsiasi oggetto .NET all'interfaccia utente e tornare indietro senza scrivere codice procedurale. Vi mostrerò come creare applicazioni di comunicazione potenti, sicure e affidabili nel capitolo 6. Infine, l'ultimo capitolo illustra alcune linee guida per la creazione di applicazioni per dispositivi mobili moderne e connesse.
Grazie per aver sospeso fino alla fine di questa lunga introduzione. Ora è il momento di leggere il capitolo 2. (Hai letto il capitolo 1 in precedenza, vero?) Divertirsi con "Longhorn". Ho sicuramente!
Continuare con il capitolo 1: Modello di applicazione "Longhorn"
Brent Rettore
Brent Rettore è presidente e fondatore di Wise Owl Consulting (www.wiseowl.com) e ha oltre tre decenni di esperienza nello sviluppo di software. Brent ha progettato e implementato sistemi operativi, nonché nuovi linguaggi di programmazione computer e i relativi compilatori. Brent ha iniziato a sviluppare applicazioni Windows con Windows 1x beta nel 1985 ed è stato coinvolto nello sviluppo di Windows da allora. È autore e coautore di numerosi libri di programmazione Windows, tra cui ATL Internals e Win32 Programming. Brent è anche l'autore di Demeanor per .NET, ovvero l'offuscatore di codice premier per le applicazioni .NET.
© 2003 Microsoft Corporation. Tutti i diritti sono riservati.
IntelliSense, Microsoft, MSDN, MS-DOS, Visual Basic .NET e Visual Studio .NET sono marchi registrati o marchi di Microsoft Corporation nei Stati Uniti e/o in altri paesi. Altri nomi di prodotti e società menzionati nel presente documento possono essere i marchi dei rispettivi proprietari.