Home / Marketing / C# – Guida alla programmazione – Introduzione a C# e .NET
C# shirt

C# – Guida alla programmazione – Introduzione a C# e .NET

C# – Introduzione a C# e .NET

Prima di iniziare a parlare di C# è necessario vedere il framwork .NET (creato da Microsoft) e la sua architettura.
Il framwork .NET è l’infrastruttura che costituisce la nuova piattaforma per lo sviluppo di applicazioni per l’accesso ai dati, per dispositivi mobili, per internet, n-tier o per le classiche applicazioni desktop. La piattaforma .NET è composta da diverse tecnologie, strettamente accoppiate fra loro.

L’architettura .NETarchitettura .NET

L’architettura del framework .NET è illustrata nella figura a lato. Essa si appoggia direttamente al S.O. (Sistema Operativo). (Nella figura viene visualizzato come sistema operativo Windows però esistono e sono anche a buon punto progetti per portare .NET su ambienti diversi, ad esempio Mono su Linux.
Il framework .NET consiste di cinque componenti fondamentali.
Il componente principale dell’intero framework, è il CLR (Common Language Runtime), il quale fornisce le funzionalità fondamentali per l’esecuzione di un’applicazione managed (gestita dal CLR). Il CLR, a basso livello, si occupa dell’interfacciamento con il sistema operativo.
Subito sopra il CLR troviamo il BCL (Base Class Library o .NET Framework Class Library) di .NET, cioè un insieme di classifondamentali, utili e necessarie a tutte le applicazioni ed a tutti gli sviluppatori. La BCL contiene i tipi primitivi, le classi di I/O (Input/Output), per il trattamento delle stringhe, per la connettività, o ancora per creare collezioni di oggetti. Tutte le classi specializzate non saranno inserite in questo livello. Sopra il livello BCL troviamo il livello per l’accesso alle base di dati e per la manipolazione dei dati XML, che con l’esperienza noterete che sono facili da utilizzare ed allo stesso tempo estremamente potenti e produttive.
Lo strato più alto del framework è costituito da tutte le funzionalità necessarie per l’interfacciamento con l’utente finale, ad esempio classi per la creazione di applicazioni web, per i web service e per le interfacce grafiche desktop.

CLR – Common Language Runtime:

Come detto precedentemente il componente più importante del framework .NET è il CLR (Common Language Runtime) che gestisce l’esecuzione dei programmi scritti per la piattaforma .NET
Il CLR si occupa dell’instanziazione degli oggetti, effettua controlli di sicurezza, se segue tutto il ciclo di vita ed al termine di esso esegue anche operazioni di pulizia e liberazione delle risorse.
In .NET ogni programma scritto in un linguaggio che il framework supporta viene tradotto in linguaggio intermedio comune CIL ( Common Intermediate Language) e da tale linguaggio tradotto ed assemblato in un eseguibile .NET specifico per la piuattaforma su cui dovrà essere eseguito. Infatti a run-time il CLR non conosce in quale linguaggio lo sviluppatore ha scritto il codice, il risultato della compilazione, è un modulo managed indipendente dal linguaggio usato. E’ inoltre possibile scrivere le applicazzioni direttamente in linguaggio CIL.

CLR

Nella figura a lato mostriamo il processo di compilazione del codice sorgente in moduli.
Ogni modulo contiene sia il codice CIL che i metadati. I metadati sono delle tabelle che descrivono i tipi, ed i loro membri definiti nel codice sorgente, oltre ai tipi e relativi membri esterni referenziati nel codice.
Il CLR non può eseguire direttamente i moduli, esso lavora con entità chiamate assembly, il quale è un raggruppamento logico di moduli managed e di altri file di risorse come ad esempio le immagini utilizzate nell’applicazione, dei file html o altro ancora, ed in aggiunta a questi file possiede un manifesto che descrive tutto il suo contenuto. I compilatori .NET, come ad esempio quello C#, attualemente creano un assembly in maniera automatica a partire dai moduli, aggiungendo il manifesto. L’assembly può essere un eseguibile ma anche una libreria DLL le quali possono essere utilizzate da altre applicazioni.

Compilazione JIT:

Il codice CIL non può essere eseguito direttamente dal microprocessore, e nemmeno il CLR può farlo, in quanto non ha una funzione di interprete. Di conseguenza deve essere tradotto in codice nativoin base alle informazioni contenute nei metadati. Questo compito viene svolto a tempo di esecuzione dal compilatore JIT (Just In Time) detto anche JITter. Il codice nativo viene prodotto on demand cioè ad esempio alla prima invocazione di un metodo esso viene compilato e conservato in memoria e alle successive chiamate esso sarà già disponibile in cache e di conseguenza sarà risparmiato il tempo di compilazione. Il vantaggio della compilazione JIT è che può essere realizzata dinamicamente in modo da trarre vantaggio dalle caratteristiche del sistema sottostante. Ad esempio lo stesso codice può essere compilato in una macchina monoporcessore, ma potrà essere compilato in maniera diversa in una macchina biprocessore in modo tale da sfruttare interamente la presenza dei due processori.

CTS e CLS:

Dato che è possibile utilizzare differenti linguaggi per scrivere codice .NET compatibile è necessario avere una serie di regole atte a garantire l’interoperabilità, la compatibilità e l’integrazione dei linguaggi. Una classe in C# deve poter essere utilizzata in ogni altro linguaggio .NET ed il concetto di classe stesso deve essere lo stesso nei diversi linguaggi. Per permettere tutto questo, Microsoft ha sviluppato un insieme di tipi comuni, detto Common Type System (CTS). Il CTS definisce come i tipi vengono creati, dichiarati, utilizzati e gestiti dal CLR e di conseguenza in maniera ancora indipendente dal linguaggio.
D’altra parte ogni linguaggio ha caratteristiche distintive, in più o meno rispetto ad un altro e se non fosse così la differenza sarebbe solo nella sintassi, cioè nella scrittura dei programmi. Un esempio chiarificante è il fatto che C# è un linguaggio case sensitive mentre VB.NET non lo è. Per garantire l’intergazione fra i linguaggi è necessario stabilire delle regole e sono state create  delle specifiche a cui tali linguaggi devono sottostare CLS (Common Language Specification).
Naturalmente ongi linguaggio può usare delle sue caratteristiche perculiari come ad esempio il tipo UInt32 che definisce un intero a 32 bit senza segno non è CLS compilant (cioè non è stato scritto facendo uso solo di caratteristiche definite dal CLS).

Gestione della memoria:

In C e C++ lo sviluppatore si deve occupare anche della gestione della memoria, cioè della sua allocazione prima di poter creare ed utilizzare un oggetto e della sua deallocazione una volta che si è certi di non dover più utilizzarlo.
Il CLR si occupa della gestione della memoria in maniera automatica utilizzando il meccanismo di garbage collection. Tale meccanismo si occupa di tener traccia di riferimenti ad ogni oggetto creato e che si trova in memoria, e quando l’oggetto non è più referenziato il CLR si occupa di ripulire le zone di memoria non più usate.
Tutto ciò libera il programmatore da buona parte delle proprie responsabilità di liberare memoria non più utilizzata, e d’altra parte dalla possibilità di effettuare operazioni pericolose nella stessa memoria, andando per esempio a danneggiare dati importanti per altri parti di codice.

 

Nel prossimo articolo illustreremo come scrivere e compilare il nostro primo programma C#.

 

NG s.r.l. è specializzata nella realizzazione app, realizzazione siti web, realizzazione e-commerce, realizzazioni grafiche, realizzazione loghi, sviluppo software, assistenza informatica e comunicazione a Rovigo.

NG Srl

Riguardo a Comunicafacile Staff

Comunicafacile Staff
Branding , Web Design & Marketing. Comunicafacile affianca con successo gli imprenditori nella trasformazione digitale dell’ azienda. Comunicafacile parte dai reali bisogni degli imprenditori fornendo soluzioni concrete e funzionali.

Guarda Anche

Real time marketing

Come il pesce d’aprile può tornare utile alla tua impresa

Hai presente quando il lunedì mattina in ufficio tutti parlano della partita della domenica? Questo …

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *