Solo quello che ti interessa | ELEMENTI DI BASE - I 7 pilastri di ASP.NET Copyright admin [email protected] http://www.belloma.it/elementi-di-base-i-7-pilastri-di-net/ ELEMENTI DI BASE - I 7 pilastri di ASP.NET 1) Integrazione con .NET Framework Il NET Framework è composto da una raccolta di parti funzionali, con decine di classi, strutture, interfacce, ed altri elementi core di programmazione. Ognuno delle migliaia di classi NET Framework è raggruppato secondo una logica di contenitori gerarchici chiamati spazio dei nomi. Spazi dei nomi diversi forniscono caratteristiche diverse e offrono funzionalità per quasi ogni aspetto dello sviluppo distribuito dall' accodamento messaggi alla sicurezza. Questo massiccio toolkit si chiama la libreria di classi. Il modo in cui utilizzare le classi .NET è lo stesso che in qualsiasi tipo di applicazione. NET (stand-alone di Windows, servizio di Windows, una riga di comando, e così via). Anche se ci sono specifiche classi per Windows e per il web, le interfacce utente di costruzione e la stragrande maggioranza del .NET Framework (dall'accesso al database alla programmazione multithread) è utilizzabile in qualsiasi tipo di applicazione. In altre parole, .NET fornisce gli stessi strumenti per sviluppatori web, windows o altro. Su http://tinyurl.com/2d42w5e la biblioteca del .NET Framework 2) ASP.NET è compilato, non interpretato Nella prima fase, il codice (C#, VB o altro) viene compilato in un linguaggio intermedio chiamato Microsoft Intermediate Language (MSIL), o semplicemente IL. Questa prima fase la compilazione può avvenire automaticamente quando la pagina viene richiesta per la prima volta, oppure è possibile effettuarla in anticipo (un page 1 / 7 Solo quello che ti interessa | ELEMENTI DI BASE - I 7 pilastri di ASP.NET Copyright admin [email protected] http://www.belloma.it/elementi-di-base-i-7-pilastri-di-net/ processo noto come precompilazione). Il file compilato con il codice IL è un assembly. Il secondo livello di compilatione si ha poco prima che la pagina venga effettivamente eseguita. In questo punto, il codice IL viene compilato in codice di basso livello (codice macchina nativo). Questa fase è nota come just-in-time (JIT). Naturalmente, la compilazione JIT non sarebbe che utile se si dovesse esguire ogni volta che un utente ha richiesto una pagina. Fortunatamente, le applicazioni ASP.NET non hanno bisogno di essere compilate ogni volta che viene fatta una richiesta di una pagina: il codice IL viene generato una sola volta e rigenerato solo quando la sorgente viene modificata. Allo stesso modo, i file nativi di codice macchina vengono memorizzati in una directory di sistema che ha un percorso simile a C:\ Windows \ Microsoft.NET \ Framework \ [versione] \ Temporary ASP.NET Files. ll punto effettivo in cui viene compilato il codice che genera l'IL, dipende da come si crea ed si effettua il deploy dell'applicazione web. Se si sta costruendo un progetto/applicazione web in Visual Studio, il codice viene compilato in IL quando si compila il progetto. Ma se si sta costruendo un sito web più leggero, il codice per ogni pagina viene compilata la prima volta si richiede la pagina (questa è la differenza tra progetto web e sito web). In entrambi i casi, il codice passa poi attraverso la sua seconda fase di compilazione (da IL in codice macchina). 3) ASP.NET è multilinguaggio La scelta del liguaggio di programmazione non ha importanza, in quanto il codice viene sempre compilato nello stesso codice IL. IL è un trampolino di lancio per ogni applicazione gestita (un'applicazione gestita è un'applicazione che è scrittoa in .NET e viene eseguita all'interno dell'ambiente gestito del Common Language Runtime). In un certo senso, IL è l'unico linguaggio che il CLR riconosce. Se si vuole visionare il codice IL di un'applicazione, basta usare l'IL Disassembler. Il programma si chiama ildasm.exe e si trova in una directory come C: \ Program Files \ Microsoft SDK \ Windows \ v7.0A \ bin. Eseguire Ildasm.exe, e quindi utilizzare il comando File --> Apri, e selezionare una DLL o un EXE che è stato creato con. NET. Uno strumento più potente per effettuare il controllo del codice IL è in http://www.red-gate.com/products/reflector. page 2 / 7 Solo quello che ti interessa | ELEMENTI DI BASE - I 7 pilastri di ASP.NET Copyright admin [email protected] http://www.belloma.it/elementi-di-base-i-7-pilastri-di-net/ Con un po' di logica e pazienza, è possibile decostruire il codice IL abbastanza facilmente e capire cosa sta succedendo, ricostruendo il codice originalle. Il fatto che l'IL sia così facile da smontare può porre problemi di controllo della privacy, ma questi problemi di solito non sono di alcuna preoccupazione per gli sviluppatori ASP.NET. Questo perché tutto il codice ASP.NET è memorizzato ed eseguito sul server. Il client riceve solo il file di codice compilato, e quindi il client non ha alcuna possibilità di decompilare. Se, però questo è fonte di preoccupazione, è possibile utilizzare uno obfuscator che rendere più difficile capire il codice. Visual Studio include una versione ridotta del uno obfuscator, chiamato Dotfuscator. Esiste il porgetto Mono ( http://www.mono-project.com) che consente di creare applicazioni ASP.NET per qualunque piattafarma (ricordiamo che IL è uno standard ISO): Android, Linux, Apple, ecc. Il CLR si aspetta che tutti gli oggetti aderiscano ad uno specifico insieme di regole.. Questo set di regole si chiama CLS (Common Language Specification). Il CLS definisce molte leggi che devono seguire tutti i linguaggi. Ogni compilatore che genera il codice IL, che deve essere eseguito dal CLR, deve rispettare tutte le regole definite all'interno dei CLS. Un elenco di linguaggi compatibili si trovano su http://dotnetpowered.com/languages.aspx. I programmatori che hanno amato, nel suo periodo di massimo splendore COBOL, possono ora utilizzare la propria base di conoscenze per creare web applicazioni! 4) ASP.NET è ospitato dal Common Language Runtime L'aspetto più importante del motore di ASP.NET è che funziona all'interno dell'ambiente runtime del CLR. L'intero .NET Framework (cioè , tutti i namespace, le applicazioni e le classi) si riferisce al codice gestito. Alcuni dei vantaggi sono i seguenti: - Gestione automatica della memoria e Garbage Collection: Ogni volta che l'applicazione istanzia un riferimento a un tipo oggetto, il CLR alloca spazio sul page 3 / 7 Solo quello che ti interessa | ELEMENTI DI BASE - I 7 pilastri di ASP.NET Copyright admin [email protected] http://www.belloma.it/elementi-di-base-i-7-pilastri-di-net/ - - - - heap gestito per quell'oggetto. Non appena il riferimento a un oggetto esce dallo scope delle applicazione, l'oggetto diventa disponibile per la garbage collection e quindi per essere eliminato in modo automatico. Tipo di sicurezza:. Quando si compila un'applicazione, NET aggiunge informazioni alla nostro assembly che indica i dettagli come, le classi disponibili, i loro membri, i loro tipi di dati e così via. Come risultato, il compilatore può verificare la validità di ogni chiamata in fase di runtime. Extensible Metadata: Le informazioni sulle classi e i membri sono solo alcuni dei tipi di metadati che ASP.NET memorizza in un assembly compilato. I metadati descrivono il codice e consentono di fornire informazioni aggiuntive per il runtime o altri servizi. Ad esempio, potrebbe dire a Visual Studio come visualizzare un controllo personalizzato in fase di progettazione. Gestione strutturata degli errori: .NET offre la gestione delle eccezioni strutturata, che consente di organizzare il codice di gestione degli errori in modo logico e conciso. È possibile creare blocchi separati per trattare diversi tipi di errori. È inoltre possibile nidificare i gestori di eccezioni strati più profondi. Multithreading: Il CLR fornisce un pool di thread che possono essere utilizzati da diverse classi. Ad esempio, è possibile chiamare metodi, leggere i file, o comunicare con i servizi web in modo asincrono, senza la necessità di creare nuovi thread esplicitamente. 5) ASP.NET Is Object-Oriented ASP.NET è veramente objectoriented. Non solo il codice ha il pieno accesso a tutti gli oggetti del .NET Framework, ma è anche possibile sfruttare tutte le convenzioni dell'OOP (programmazione orientata agli oggetti) . Ad esempio, è possibile creare classi riutilizzabili, standardizzare codice con le interfacce, estendere classi esistenti con l'ereditarietà, ecc. Uno dei migliori esempi di pensiero object-oriented si trova nei controlli server. Questi sono un emblema dell'incapsulamento. Gli sviluppatori possono manipolare tali oggetti utilizzando il codice di programmazione per personalizzare il loro aspetto, fornire i dati da visualizzare, e persino reagire eventi. Il markup HTML che questi controlli generano durante il rendering è nascosto dietro le quinte: invece di costringere lo sviluppatore a scrivere codice HTML raw manualmente, gli oggetti verranno renderizzati e quindi trasformati in codice HTML, poco prima che il server Web invii la pagina al client. In questo modo, i controlli server ASP.NET offrono un page 4 / 7 Solo quello che ti interessa | ELEMENTI DI BASE - I 7 pilastri di ASP.NET Copyright admin [email protected] http://www.belloma.it/elementi-di-base-i-7-pilastri-di-net/ modo, per astrarre i dettagli di basso livello di programmazione HTML e HTTP. Ecco un esempio come è possibile definire una casella di testo HTML standard in una pagina ASP.NET web: <input type="text" id="myText" runat="server" /> Con l'aggiunta del attributo runat = "server", questo pezzo di codice HTML statico diventa completamente controllabile sul lato server attraverso codice C# (diventa un oggetto HtmlInputText). Ad esempio, è possibile impostare il testo di questo campo durante il primo caricamento della pagina, con il seguente codice C #: void Page_Load (object sender, EventArgs e) { myText.Value = "Ciao Mondo!"; } Tecnicamente, questo codice imposta la proprietà Value di un oggetto HtmlInputText. Il risultato finale è che stringa viene visualizzata in una casella di testo HTML, che viene creata durante il rendering prima dell'invio al client. Ci sono gli HTML Control che praticamente corrispondono alla versione server dei tipici contrtolli HTML, ma che possono essere gestiti sul lato server in modo OOP (grazie alla proprietà runat="server"). Questi possono essere generati dinamicamente sul lato server e le loro classi sono quelle che hanno Html come primi caratteri del nome (HtmlAnchor, HtmlButton, ecc.) Altri controlli più complessi sono i Web Control che invece sono renderizzati in più controlli HTML standard e che quindi espongono funzionalità più complesse (e non solo il mapping delle proprietà lato server/lato client), come Calendar, TreeView, page 5 / 7 Solo quello che ti interessa | ELEMENTI DI BASE - I 7 pilastri di ASP.NET Copyright admin [email protected] http://www.belloma.it/elementi-di-base-i-7-pilastri-di-net/ ecc.. 6) ASP.NET supporta tutti i browser Normalmente quando si sviluppa un'applicazione Web, o si sceglie l'insieme minimo di funzionalità valide per tutti i browser e si utilizzano solo quelle, o si creano versioni diverse dell'applicazione per browser diversi. ASP.NET risolve questo problema in un modo molto intelligente. Anche se è possibile recuperare informazioni relative al browser client, ASP.NET in realtà incoraggia gli sviluppatori a ignorare queste considerazioni e utilizzare la ricca suite di controlli server web. Questi controlli server rendono il loro markup adattivo in base alle capacità del client. In pratica il codice generato durante il rendering (che utilizza JavaScript e DHTML) viene già generato in modo che si possa adattare al Browser che ha fatto la richiesta. 7) ASP.NET è facile da distribuire (deploy) e da configurare ASP.NET semplifica notevolmente il processo di deploy (assenza di registrazione di componenti e facilità di configurazione). Sostanzialmente basta che ogni client abbia il .NET Framework. In pratica portare in produzione un'applicazione ASP.NET è relativamente semplice: page 6 / 7 Solo quello che ti interessa | ELEMENTI DI BASE - I 7 pilastri di ASP.NET Copyright admin [email protected] http://www.belloma.it/elementi-di-base-i-7-pilastri-di-net/ è sufficiente copiare tutti i file in una directory virtuale su un server di produzione. Distribuire i componenti utilizzati dall'applicazione è altrettanto facile. Tutto quello che occorre fare è copiare i componenti assembly insieme ai file del sito web . Poiché tutti le informazioni sui componenti sono memorizzate direttamente nei metadati del file assembly, non c'è bisogno lanciare un programma di registrazione o modificare il Registro di Windows. Questi componenti si collocano nella sottodirectory Bin della directory dell'applicazione web, in questo modo il motore ASP.NET li rileva automaticamente e li rende disponibili alla pagina web del codice. La configurazione è un'altro aspetto importante della distribuzione delle applicazioni, soprattutto se è necessario trasferire informazioni di sicurezza, come gli account utente e i privilegi degli utenti. ASP.NET rende però questo processo di distribuzione più semplice, riducendo al minimo la dipendenza da impostazioni di IIS. Infatti la maggior parte delle impostazioni di ASP.NET sono memorizzate in un file web.config dedicato che si trova nella stessa directory delle pagine web. Esso contiene un insieme gerarchico di impostazioni memorizzate in forma facilmente leggibile formato XML che è possibile modificare utilizzando nient'altro che un editor di testo come Notepad. Quando si modifica un'impostazione, ASP.NET se ne accorge e riavvia l'applicazione in una nuovo AppDomain (dominio di applicazione), mantenendo il dominio applicazione esistente in vita abbastanza a lungo per completare l'elaborazione qualsiasi richieste in sospeso. page 7 / 7