Architettura: Introduzione | ||
I tre componenti principali di .NET Framework Common Language Runtime/Infrastructure (CLR/CLI) CLS - Common Language Specification CIL - Common Intermediate Language VES - Virtual Execution System |
In questa seconda parte del tutorial sarà analizzata l'architettura del .NET Framework nei suoi punti salienti. Come diverrà presto evidente .NET Framework presenta numerosi punti di contatto con la piattaforma Java, molto diffusa negli ambienti di rete, per questo eventuali congruenze o scostamenti da suddetto sistema verranno messe in evidenza durante la trattazione in modo da facilitare l'inquadramento da parte dei suoi numerosi utenti. Microsoft ha lavorato molto perché il nuovo ambiente di sviluppo sia riconosciuto in ambito internazionale e, dove possibile, reso addirittura standard. Questo processo ha portato ad talune ambiguità nelle denominazioni di alcune componenti, che possono differire dalla documentazione di Microsoft rispetto a quelle dell'ente preposto a ratificare lo standard, ovvero l' ECMA (European Computer Manufacturing Association). Quando presenti queste ambiguità saranno chiarite e le sigle utilizzate scambievolmente. Contrariamente alla Panoramica, questo capito non è basato solo sulle caratteristiche dichiarate dal produttore, ma vuole essere una analisi critica delle reale peculiarità di Microsoft .NET Framework. Fonti per l'intero capitolo 2: Microsoft: .NET Framework Evaluation Guide (Vedi Area DownLoad) http://www.csharphelp.com/archives/archive10.html MSDN Common Language Runtime overview http://www.c-sharpcorner.com/Articles/MSILGAG.asp A colpo d'occhio Attualmente .NET è costituito principalmente da 3 linguaggi compilati (C#, VisualBasic.NET, C++), un ambiente di runtime che ricalca la struttura della Virtual Machine di Java, un insieme gerarchico di librerie di classi ed una nuova versione di ASP, chiamata ASP.NET, "componentizzata" ovvero aderente al paradigma introdotto con COM (Component Object Model). Come già accennato .NET utilizza il protocollo SOAP per lo scambio delle informazioni, vanta un avanzato sistema di controllo delle versioni di applicazioni e librerie e tipi di dati comuni che rendono l'interscambio fra i linguaggi di programmazione molto più semplice rispetto al passato. Pur non potendo vantare l'indipendenza dalla piattaforma di Java, .NET cerca di essere meno vincolato alla rigida architettura di Windows, almeno laddove questo con costituisca un ostacolo alla rapida stesura delle applicazioni che, è bene chiarirlo subito, rimarranno dominio esclusivo di Windows, e fruibili da altri sistemi solo come servizi.
Le diverse visioni di Sun e Microsoft Sun aveva l'immagine di Internet come di una rete eterogenea consistente di diversi sistemi operativi. Per questo progettò Java al fine di avere l'interfaccia grafica (GUI) più generica possibile, in modo da essere supportata da tutte queste piattaforme. Questa però si è rivelata una delle ragioni principali del modesto successo di Java dal lato Client, mentre invece la sua presenza è diventata ben presto predominante nel mercato dei server, dove l'interfaccia grafica ha una importanza relativa. Avendo fallito sul versante Client Sun punta ora su quello server, diviso più o meno equamente tra le diverse varianti di Unix e Windows NT. Questa visione però è ben diversa da quella di Microsoft, detentrice di più del 90% del mercato Client, e che desiderava fornire una piattaforma di sviluppo per Internet ovviamente basata su Windows. Per fare questo inizialmente aggiunse funzioni specifiche di Windows alla sua implementazione di Java, in maniera analoga a quanto in passato aveva fatto con il linguaggio C++. Se si unisce ciò al rifiuto di adottare Java Remote Method Invocation (RMI) per la creazione di applicazioni distribuite (ovvero la possibilità di invocare metodi di oggetti Java remoti da parte di una diversa Macchina Virtuale) in quanto in diretta competizione con la tecnologia proprietaria DCOM, si arriva alla causa legale voluta da Sun e persa da Microsoft, che ha dovuto versare alla rivale 20 milioni di dollari. A seguito della sconfitta la casa di Redmond ha deciso di tagliare i ponti con Java e di sostituirlo con un nuovo linguaggio chiamato C# (C Sharp), che si presenta come il principale strumento di sviluppo di applicazioni basate su .NET. Tuttavia sarebbe estremamente ingiusto considerare C# come un mero sostituto di Java, inserito solo per tappare il buco lasciato vuoto da J++. C# è un linguaggio sorprendentemente innovativo ed efficiente, addirittura entusiasmante sotto certi aspetti, come si spera di mostrare nel capitolo 3 ad esso dedicato. Microsoft ha anche giocato la carta della standardizzazione meglio di quanto ha fatto Sun, presentando nell'ottobre 2000 C# e il Common Language Infrastucture (CLI), le fondamenta del Framework, all' ECMA (European Computer Manufacturing Association) della quale, ironia della sorte, è membro anche Sun. Microsoft ha anche standardizzato il protocollo SOAP attraverso il consorzio W3C il che permette di avere un sistema per accedere agli oggetti remoti assolutamente standard essendo basato su XML e trasportabile, non essendo binario, dai protocolli di trasmissione più diffusi, compreso l'HTTP, a garanzia di una notevole facilità di implementazione. Dal momento che può superare i firewall senza conflitti, SOAP, può essere utilizzato praticamente in ogni realtà applicativa, da Internet alle reti locali.
|