<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>Webservicenet - Blog</title>
	<atom:link href="http://webservicenet.wordpress.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://webservicenet.wordpress.com</link>
	<description>Just another WordPress.com weblog</description>
	<lastBuildDate>Wed, 20 Jan 2010 22:54:09 +0000</lastBuildDate>
	<language>it</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
<cloud domain='webservicenet.wordpress.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://s2.wp.com/i/buttonw-com.png</url>
		<title>Webservicenet - Blog</title>
		<link>http://webservicenet.wordpress.com</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="http://webservicenet.wordpress.com/osd.xml" title="Webservicenet - Blog" />
	<atom:link rel='hub' href='http://webservicenet.wordpress.com/?pushpress=hub'/>
		<item>
		<title>1. Introduzione al Framework .NET</title>
		<link>http://webservicenet.wordpress.com/2010/01/20/1-introduzione-al-framework-net/</link>
		<comments>http://webservicenet.wordpress.com/2010/01/20/1-introduzione-al-framework-net/#comments</comments>
		<pubDate>Wed, 20 Jan 2010 21:37:17 +0000</pubDate>
		<dc:creator>webservicenet</dc:creator>
				<category><![CDATA[Corso Asp.NET]]></category>

		<guid isPermaLink="false">http://webservicenet.wordpress.com/?p=6</guid>
		<description><![CDATA[.Net è nato con lo scopo di convertire il web da un contenitore di informazioni, in un contenitore di servizi Il vantaggio appare evidente se pensiamo a quanto sia difficile, con le tecnologie odierne, coordinare le varie operazioni che effettuiamo sulla rete e quanto sia ancora più difficile mettere in comunicazione tra di loro applicazioni e servizi differenti. Pensate che sogno sarebbe poter avere sul proprio palmare la disponibilità residua della carta di credito, con gli ultimi movimenti effettuati, senza dover inserire tutto a mano, oppure essere sempre aggiornato con le ultime notizie delle agenzie di stampa sugli argomenti che ci interesano e senza nemmeno fare un click Se pensate che sia solo un sogno, sappiate che tra gli obiettivi principali di .NET, ci sono proprio cose come questa: rendere l'utente più "passivo" ed aumentare dunque la qualità con cui riceve informazioni, in pratica far si che siano le informazioni che cerchino noi e non il contrario. Tutti i prodotti attualmente rilasciati o che stanno per esserlo hanno il suffisso .NET. : Windows.NET, ASP.NET, Visual Studio.NET, Windows CE.NET, gli stessi .NET Enterprise Servers, che una volta faceva parte dell'architettura Windows DNA. .NET <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=webservicenet.wordpress.com&amp;blog=11556267&amp;post=6&amp;subd=webservicenet&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p><strong>1.1 Introduzione</strong></p>
<div>
<p>.Net è nato con lo scopo di convertire il web da un contenitore di informazioni,<br />
in un contenitore di servizi Il vantaggio appare evidente se pensiamo a quanto<br />
sia difficile, con le tecnologie odierne, coordinare le varie operazioni che<br />
effettuiamo sulla rete e quanto sia ancora più difficile mettere in comunicazione<br />
tra di loro applicazioni e servizi differenti. Pensate che sogno sarebbe poter<br />
avere sul proprio palmare la disponibilità residua della carta di credito,<br />
con gli ultimi movimenti effettuati, senza dover inserire tutto a mano, oppure<br />
essere sempre aggiornato con le ultime notizie delle agenzie di stampa sugli<br />
argomenti che ci interesano e senza nemmeno fare un click Se pensate che sia<br />
solo un sogno, sappiate che tra gli obiettivi principali di .NET, ci sono<br />
proprio cose come questa: rendere l&#8217;utente più &#8220;passivo&#8221; ed aumentare<br />
dunque la qualità con cui riceve informazioni, in pratica far si che siano<br />
le informazioni che cerchino noi e non il contrario. Tutti i prodotti attualmente<br />
rilasciati o che stanno per esserlo hanno il suffisso .NET. : Windows.NET,<br />
ASP.NET, Visual Studio.NET, Windows CE.NET, gli stessi .NET Enterprise Servers,<br />
che una volta faceva parte dell&#8217;architettura Windows DNA. .NET (che si legge<br />
<strong>dotNET</strong> e non puntoNET, all&#8217;italiana) è essenzialmente sinonimo di InterNET.<br />
Per poter programmare in .NET abbiamo bisogno soltanto di installare il framework<br />
.NET (l’ultima versione è la 3.5) a meno che non utilizziamo il nuovo<br />
sistema operativo windows.Net server 2003 che il framework lo ha gia’<br />
di serie. A mio avviso, l’aspetto rivoluzionario dell’iniziativa<br />
.NET è che consente agli sviluppatori di adottare un paradigma di programmazione<br />
unificato, indipendentemente dal linguaggio utilizzato o dal tipo di applicazioni<br />
che realizzano.<strong></p>
<p>1.1 Architettura del framework.NET</p>
<p></strong>tutti gli oggetti delle libreria di classi di .NET sono strettamente<br />
correlati,e non è possibile creare applicazioni eccezionali focalizzandosi<br />
soltanto su una piccola parte del .NET framework ed ignorare il resto. Il<br />
modo migliore di capire come funzioni il .NET è osservarne l’architettura</p>
<p>Esso è composto da vari strati come mostrato in figura (fig.1)</p>
<p><a href="http://webservicenet.files.wordpress.com/2010/01/image001.gif"><img class="alignnone size-full wp-image-7" title="image001" src="http://webservicenet.files.wordpress.com/2010/01/image001.gif?w=500" alt=""   /></a></p>
<p>Figura 1</p>
<p>Partendo dal fondo della gerarchia troviamo le API di Windows.</p>
<p>.NET mette a disposizione una visualizzazione orientata all’oggetto<br />
delle funzioni del sistema operativo, ma non le sostituisce;infatti la maggior<br />
parte delle chiamate effettuate all’interno del framework .NET sono<br />
chiamate ad una dll del kernel di Windows. Allo stesso livello delle API di<br />
Windows troviamo i servizi di COM+. E’ quindi possibile creare componenti<br />
.NET che sfruttino i vantaggi delle transazioni, della sincronizzazione e<br />
dei servizi relativi alla sicurezza offerti da COM+, anche se con questo approccio<br />
l’esecuzione deve passare necessariamente da .NET a COM, e questo comporta<br />
un certo overhead con conseguente spreco di cicli di CPU. Ma bisogna anche<br />
dire che nella maggior parte delle applicazioni, questo overhead è del tutto<br />
trascurabile. Il primo vero e proprio strato del Framework .NET è il Common<br />
Language Runtime (CLR). Esso è responsabile dei servizi di base .NET, come<br />
ad esempio la gestione della memoria, la garbage collection, la gestione strutturata<br />
delle eccezioni ed il multithreading. Il porting del framework .NET su altri<br />
sistemi operativi (come il progetto di un framework sotto UNIX) comporta la<br />
scrittura di una versione del CLR per il nuovo sistema operativo. Il CLR è<br />
contenuto nel file MSCorEE.dll e tutte le applicazioni .NET invocano una funzione<br />
contenuta in questa dll all’inizio dell’esecuzione. Il CLR rappresenta<br />
il cuore del Framework, basti pensare che tutti i linguaggi di programmazione<br />
più utilizzati, come ad esempio C++ e Visual Basic, hanno sempre avuto dei<br />
file &#8220;runtime&#8221; (MSVBVM60.DLL per Visual Basic e MSCRT40.DLL per<br />
C++) che dovevano essere distribuiti con l&#8217;applicazione; ora è il CLR che<br />
si occupa dell&#8217;esecuzione e della gestione del codice. Coloro che hanno programmato<br />
in Java avranno sicuramente familiarità con il concetto di runtime unificato,<br />
dato che la Java Virtual Machine di Sun (JVM) si basava sulla stessa concezione,<br />
con la sola differenza che il CLR compila nativamente tutto il codice eseguito.</p>
<p>Il <strong>CRL</strong> è quindi un modulo runtime univoco per tutti i linguaggi<br />
.NET che si occupa dell&#8217;esecuzione di tutto il codice. I compilatori .NET<br />
generano un linguaggio <strong>IL </strong>(Intermediate Language) (a differenza<br />
del codice macchina generato dai vecchi compilatori come ad esempio Visuali<br />
Basic 6) che viene compilato JIT (Just in Time) prima di essere eseguito.<br />
E&#8217; importante sottolineare che IL non è interpretato ma convertito in codice<br />
macchina ed eseguito.</p>
<p>Il <strong>CTS</strong> (Common Type System) si occupa invece della gestione<br />
unificata di tutti i tipi presenti nei vari linguaggi del Framework .NET,<br />
definendo come devono essere dichiarati, usati e gestiti dal runtime. E&#8217; possibile<br />
realizzare applicazioni utilizzando qualunque linguaggio di programmazione<br />
che sia conforme alle specifiche indicate dal CTS. Il livello sopra il CLR<br />
contiene la Base Class Library (BCL) in cui vengono definiti tutti i tipi<br />
di dato fondamentali, come System.Object (la radice della gerarchia di oggetti<br />
di .NET). i tipi numerici e data, il tipo string,matrici e collezioni. Sempre<br />
la BCL contiene le classi per la gestione delle funzionalità principali del<br />
.NET, come l’input /output su file, il threading, la serializzazione<br />
e la sicurezza. La BCL è contenuta nel file MSCorLib.dll. Lo strato successivo<br />
è denominato: Data and XML. Questo strato è costituito dalle classi .NET che<br />
consentono di utilizzare database ed il linguaggio XML.</p>
<p>XML è parte integrante del framework .NET e senza dover ricorrere a componenti<br />
esterne, come accadeva con i linguaggi precedenti al .NET; infatti XML è da<br />
considerarsi come il formato utilizzato da .NET per la memorizzazione di qualsiasi<br />
informazione. Tutti i file di configurazione si basano su XML, e naturalmente<br />
il framework .NET è dotato di un potente e veloce parser XML. La parte “Data”<br />
di questo strato è adibita all’uso dei database, ed è ciò che viene<br />
comunemente denominato ADO.NET. A dispetto della somiglianza dei nomi tra<br />
ADO ed ADO.NET, essi sono molto diversi tra loro. ADO include tutte le tecniche<br />
per database disponibili (cursori lato server e lato client, recordset,resultset<br />
disconnessi,conenction e gli aggiornamenti batch), ADO.NET si concentra esclusivamente<br />
sui resultset disconnessi (chiamati dataset) e non offre alcun supporto per<br />
i cursori lato server. L’oggetto Dataset è molto più potente e versatile<br />
dell’oggetto recordset di ADO e può immagazzinare dati provenienti da<br />
più tabelle appartenenti allo stesso database o a database differenti. Uno<br />
dei grossi vantaggi di.NET è la possibilità di trattare documenti XML come<br />
una qualsiasi fonte dati, come una tabella di un database, inoltre con .NET<br />
è possibile utilizzare, attraverso il meccanismo di databinding (associazione<br />
dei dati ad un controllo della pagina), incluso nel sistema, degli oggetti<br />
potentissimi che permettono di creare report, motori di ricerca e più in generale<br />
di visualizzare dati in maniera completa e con pochissimo sforzo, ovvero,<br />
scrivendo pochissime righe di codice. Con gli oggetti datagrid, datalist e<br />
repeater, potete dimenticarvi anche come si crea una tabella HTML. E&#8217; infatti<br />
tutto fatto in automatico, attraverso questi oggetti. ADO.NET è contenuto<br />
nel file System.Data.dll mentre la parte XML è contenutanel file System.XML.dll<br />
Salendo nella gerarchia del framework .NET incontriamo lo strato ASP.NET e<br />
Windows Form, entrambi posizionati sullo stesso livello. Queste parti del<br />
framework contengono tutte le classi necessarie per la realizzazione dell’interfaccia<br />
utente in un browser. Anche se i due strati si trovano sullo stesso livello<br />
sono molto differenti tra loro dal punto di vista delle tecnologie utilizzate.<br />
ASP.NET  opera sul server e genera codice HTML che poi viene interpretato<br />
dal browser di un client che può avere in esecuzione un qualsiasi sistema<br />
operativo, le windows forms girano sul client e deve essere necessariamente<br />
una macchina windows. Il penultimo strato prima della vetta è il Common Language<br />
Specification (CLS), un insieme di specifiche messe a disposizione dalla Microsoft<br />
per agevolare i produttori di compilatori .Queste specifiche determinano il<br />
gruppo minimo di funzionalita’ che un linguaggio .NET deve possedere.<br />
In cima al nostro diagramma di Figura 1 troviamo i linguaggi di programmazione<br />
(Visual Basic,c++,c#,j#,javascript ed altri).Dal momento che tutti i linguaggi<br />
di programmazione,siano essi Microsoft o no, hanno come obbiettivo il CLS<br />
e tutti utilizzano i tipi di dato del framework .NET, tutti risultano simili<br />
tra loro molto di più dei linguaggi del passato.<strong><br />
</strong></p>
<p><strong>1.2 La compilazione delle pagine </strong></p>
<p>Per compilare le applicazioni scritte in Visual Basic .NET, C# o altro linguaggio,<br />
basterà eseguire dalla riga di comando:</p>
<table border="1" width="600" align="center">
<tbody>
<tr style="color:#ffffff;" bgcolor="#336699">
<td width="10">-</td>
<td valign="top"><strong>Comando</strong></td>
<td valign="top"><strong>Descrizione</strong></td>
</tr>
<tr>
<td width="10">-</td>
<td valign="top"><strong>csc.exe</strong><strong> /r:NomeFile.dll NomeFile.cs</strong></td>
<td valign="top">per compilare NomeFile.cs (C#) in NomeFile.exe</td>
</tr>
<tr>
<td width="10">-</td>
<td width="243" valign="top"><strong>vbc.exe</strong> <strong>/r:NomeFile.dll<br />
NomeFile.vb</strong></td>
<td width="487" valign="top">per compilare NomeFile.vb (Visual Basic .NET)<br />
in NomeFile.exe</td>
</tr>
</tbody>
</table>
<p>Il comando <strong>/r:</strong> indica al compilatore di effettuare un <strong>Reference</strong><br />
ad una DLL, in questo caso quindi, il file sorgente, include riferimenti a tipi,<br />
classi&#8230; presenti nella DLL NomeFile.dll.</p>
<p>Il Framework .NET consente di creare, oltre che file eseguibili (.EXE), anche<br />
DLL; per ottenere questo risultato basterà semplicemente aggiungere il comando<br />
<strong>/t:library</strong> in fase di compilazione:</p>
<table border="1" width="600" align="center">
<tbody>
<tr style="color:#ffffff;" bgcolor="#336699">
<td width="10">-</td>
<td valign="top"><strong>Comando</strong></td>
<td valign="top"><strong>Descrizione</strong></td>
</tr>
<tr>
<td width="10">-</td>
<td valign="top"><strong>csc.exe</strong><strong> /t:library /r:NomeFile.dll<br />
NomeFile.cs</strong></td>
<td valign="top">per creare una DLL da un file .cs (C#)</td>
</tr>
<tr>
<td width="10">-</td>
<td width="326" valign="top"><strong>vbc.exe</strong><strong> /t:library /r:NomeFile.dll<br />
NomeFile.vb</strong></td>
<td width="404" valign="top">per creare una DLL da un file .vb (Visual Basic<br />
.NET)</td>
</tr>
</tbody>
</table>
<p>Quelli appena mostrati sono dei semplici esempi di argomenti che possono essere<br />
associati al comando di compilazione (csc.exe, vbc.exe &#8230;), ne esistono altri<br />
che consentono di gestire riferimenti a files, modalità di compilazione, operazioni<br />
di debug, controllo sui tipi &#8230; E&#8217; importante sottolineare che il codice eseguibile<br />
prodotto da un compilatore tradizionale è differente rispetto al codice eseguibile<br />
generato del Framework .NET in quanto i compilatori tradizionali (C, Pascal,<br />
C++ ecc&#8230;) effettuano una traduzione in codice nativo, al contrario, .NET,<br />
genera un eseguibile in formato IL (Intermediate Language) e sarà compito del<br />
CLR trasformare il codice IL in codice nativo, utilizzando il <strong>JIT Compiler</strong><br />
(compilatore Just in time). Dopo questa premessa è facile intuire che un eseguibile<br />
generato in .NET (quindi in IL) non potrà essere eseguito su sistemi che non<br />
presentano il Framework .NET installato in quanto non sarà possibile riconoscere<br />
ed interpretare l&#8217;IL.</p>
<p>Il compilatore JIT si occupa della conversione della pagina in codice nativo<br />
solo nel momento in cui si richiede l&#8217;utilizzo di una particolare funzione del<br />
programma, convertendo solo la porzione di codice presa in considerazione; questo<br />
consente di ottimizzare il tempo di compilazione e l&#8217;occupazione in Kb del file<br />
generato. Nella nuova logica introdotta da .NET, ogni applicazione deve essere<br />
considerata come un&#8217;insieme di <strong>Asembly</strong> (librerie) e da un file<br />
&#8220;Assembly principale&#8221; (il file .exe) necessario per avviare l&#8217;applicazione;<br />
gli Assembly presentano il vantaggio di essere autodescrittivi in quanto contengono:<br />
codice IL, metadati con informazioni su strutture, classi&#8230; Lo schema seguente<br />
illustra le operazioni eseguite durante la fase di compilazione.</p>
<p>Avviando il programma, viene caricato il primo Assemlby, successivamente vengono<br />
caricate le Classi base di .NET; il CLR si occupa invece di controllare i tipi<br />
ed i permessi di esecuzione sulla base delle informazioni presenti nei metadati<br />
ed alle impostazioni di sicurezza del Sistema.</p>
<p><a href="http://webservicenet.files.wordpress.com/2010/01/image003.gif"><img class="alignnone size-medium wp-image-8" title="image003" src="http://webservicenet.files.wordpress.com/2010/01/image003.gif?w=240&#038;h=300" alt="" width="240" height="300" /></a></p>
<p>Altri compiti importanti del CLR sono:</p>
<table border="1" width="600" align="center">
<tbody>
<tr style="color:#ffffff;" bgcolor="#336699">
<td width="10">-</td>
<td valign="top"><strong>Descrizione</strong></td>
</tr>
<tr>
<td width="10" valign="top">-</td>
<td width="730" valign="top">Controllare gli spazi di memoria da liberare,<br />
ovvero quelli che non sono più necessari all&#8217;esecuzione del programma<br />
(Garbage Collector).</td>
</tr>
<tr>
<td valign="top">-</td>
<td valign="top">Gestire le eccezioni</td>
</tr>
<tr>
<td valign="top">-</td>
<td valign="top">Verificare l&#8217;aderenza del codice con gli standard definiti<br />
dal CTS (Common Type System) e CLS (Common Language Specification)</td>
</tr>
</tbody>
</table>
<p><strong></p>
<p>1.3 Esecuzione delle pagine ASP.NET</strong></p>
<p>Quello appena visto è come compilare una applicazione per creare un eseguibile<br />
.exe. Ora ci occupiamo della procedura per compilare un’applicazione per<br />
essere eseguita in Internet. Infatti uno dei vantaggi di ASP.NET  nei confronti<br />
di ASP è che possiamo compilare le pagine. Quando una pagina .aspx (ASP.NET)<br />
viene eseguita, il Framework .NET compila la pagina in un assembly che viene<br />
collocato nella directory %systemroot%/Microsoft.NET/Framwork/V1.n.nnnn/Temporary<br />
ASP.NET files. Questo assembly contiene una singola classe che deriva dalla<br />
classe System.Web.UI.Page e che contiene il codice necessario all&#8217;esecuzione<br />
della pagina. La prima esecuzione di una pagina .aspx può richiedere alcuni<br />
secondi (il tempo necessario per la compilazione) ma, le richieste successive,<br />
saranno notevolmente più veloci in quanto verranno soddisfatte istanziando la<br />
classe generata e attraverso il rendering della pagina. <a href="http://webservicenet.files.wordpress.com/2010/01/image004.gif"><img class="alignnone size-medium wp-image-9" title="image004" src="http://webservicenet.files.wordpress.com/2010/01/image004.gif?w=270&#038;h=300" alt="" width="270" height="300" /></a></p>
<p>Quando viene generata una classe per una determinata pagina .aspx, tutti i files<br />
dipendenti (file inclusi, files esterni&#8230;) diventano parte della classe compilata,<br />
questo consente di verificare, ad ogni accesso successivo alla pagina, se sono<br />
state effettuate modifiche al file .aspx o ai vari files inclusi e, in caso<br />
affermativo, eliminare l&#8217;assembly (in quanto non più aggiornato) e rigenerarlo.<br />
Una volta compilata la nostra applicazione ASP.NET, ciò che otterremo sara’<br />
un file .dll contenente il codice  di programmazione da noi usato, ed i vari<br />
file .aspx, che conterranno solo il codice html delle pagine; ciò ci porta ad<br />
un altro  dei principali vantaggi introdotti dal .NET framework: la possibilità<br />
di copiare direttamente una DLL all’interno di un’applicazione senza<br />
dover riavviare il Sistema o sovrascrivere una DLL già esistente ed utilizzata<br />
da un altro software; questa tecnica consente di evitare il famoso problema<br />
delle DLL, conosciuto come “DLL Hell”, oltre che semplificare notevolmente<br />
la distribuzione di applicazioni su qualunque sistema.</p>
<p><strong>1.4 L&#8217;inferno delle DLL (DLL Hell)</strong></p>
<p>L’Inferno delle DLL (<em>DLL Hell</em>) nasce quando diverse applicazioni<br />
utilizzano e condividono la stessa DLL o lo stesso <strong>oggetto COM</strong><br />
(Component Object Model); la situazione tipica è quella che avviene in seguito<br />
all’installazione di un nuovo programma che registra e sovrascrive una<br />
DLL esistente, questa modifica porterà ad una situazione in cui i programmi<br />
che utilizzavano quest’ultima DLL potrebbero non funzionare più correttamente.</p>
<p>Il framework .NET risolve questo problema introducendo un approccio “<strong>side<br />
by side</strong>” ovvero la capacità di installare, mantenere e gestire contemporaneamente<br />
diverse versioni di componenti COM. La semplificazione appena descritta, viene<br />
gestita dal framework grazie al fatto che le applicazioni sono autodescrittive<br />
e viene tenuta traccia dell’ultima esecuzione di ogni singola applicazione,<br />
al fine di memorizzare l’elenco dei componenti che hanno portato a buon fine<br />
l’esecuzione; grazie a questa tecnica, in caso di malfunzionamenti, sarà sempre<br />
possibile riportare le applicazioni al loro stato iniziale.</p>
<p><strong><br />
Conclusioni </strong></p>
<p>.NET permette di sviluppare qualsiasi tipo di applicazione: stand-alone, client/server,<br />
per sistemi handheld (palmari, smart phones, smart devices), per il web. In<br />
pratica, per tutto quello che vuol dire &#8220;applicazione” Per gli  sviluppatori<br />
rappresenta un vantaggio notevole dato che permette di poter scrivere un&#8217;applicazione<br />
e farla girare su tutte le altre piattaforme supportate. Microsoft ha rubato<br />
l&#8217;idea a Sun? Per certi versi è vero, .NET è un Java megliorato ed in grande<br />
stile. Di Java ha preso le cose migliori, di Java non ha le cose peggiori. Anche<br />
.NET si basa su un <strong>CLR</strong> (Common Language Runtime), un runtime che esegue<br />
al volo il codice, che viene automaticamente convertito dai compilatori in <strong>MSIL</strong><br />
(Microsoft Intermediate Language). Dunque, la mia applicazione scritta in VB.NET<br />
o in C#, verrà sempre convertita in MSIL prima di essere eseguita. Il vantaggio<br />
di un framework comune per tutti i linguaggi vuol dire essenzialmente una cosa:<br />
<strong>con .NET utilizzare uno o l&#8217;altro l’inguaggio è essenzialmente e finalmente<br />
una scelta dello sviluppatore</strong>. Tutti i linguaggi permettono di fare praticamente<br />
le stesse identiche cose: cambia la forma, la sostanza è la stessa. Grazie al<br />
.NET si è risolto anche il problema del DLL Hell, oltre al fatto che le pagine<br />
web in ASP.NET sono ormai ordinate, infatti la parte di html è separata dalla<br />
parte di programmazione vera e propria; ciò porta ad un miglioramento della<br />
coordinazione tra il grafico , che si occuperà solo della parte html, ed il<br />
programmatore, che si occuperà di scrivere il codice nel linguaggio a lui più<br />
adatto.</p>
</div>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/webservicenet.wordpress.com/6/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/webservicenet.wordpress.com/6/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/webservicenet.wordpress.com/6/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/webservicenet.wordpress.com/6/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/webservicenet.wordpress.com/6/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/webservicenet.wordpress.com/6/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/webservicenet.wordpress.com/6/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/webservicenet.wordpress.com/6/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/webservicenet.wordpress.com/6/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/webservicenet.wordpress.com/6/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/webservicenet.wordpress.com/6/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/webservicenet.wordpress.com/6/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/webservicenet.wordpress.com/6/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/webservicenet.wordpress.com/6/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=webservicenet.wordpress.com&amp;blog=11556267&amp;post=6&amp;subd=webservicenet&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://webservicenet.wordpress.com/2010/01/20/1-introduzione-al-framework-net/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/b0d34f758eef7d80e230580866cb1193?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">webservicenet</media:title>
		</media:content>

		<media:content url="http://webservicenet.files.wordpress.com/2010/01/image001.gif" medium="image">
			<media:title type="html">image001</media:title>
		</media:content>

		<media:content url="http://webservicenet.files.wordpress.com/2010/01/image003.gif?w=240" medium="image">
			<media:title type="html">image003</media:title>
		</media:content>

		<media:content url="http://webservicenet.files.wordpress.com/2010/01/image004.gif?w=270" medium="image">
			<media:title type="html">image004</media:title>
		</media:content>
	</item>
		<item>
		<title>Hello world!</title>
		<link>http://webservicenet.wordpress.com/2010/01/20/hello-world/</link>
		<comments>http://webservicenet.wordpress.com/2010/01/20/hello-world/#comments</comments>
		<pubDate>Wed, 20 Jan 2010 21:02:02 +0000</pubDate>
		<dc:creator>webservicenet</dc:creator>
				<category><![CDATA[Sicurezza informatica]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[Benvenuti nel Blog della WebServiceNet.<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=webservicenet.wordpress.com&amp;blog=11556267&amp;post=1&amp;subd=webservicenet&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Benvenuti nel Blog della WebServiceNet.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/webservicenet.wordpress.com/1/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/webservicenet.wordpress.com/1/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/webservicenet.wordpress.com/1/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/webservicenet.wordpress.com/1/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/webservicenet.wordpress.com/1/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/webservicenet.wordpress.com/1/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/webservicenet.wordpress.com/1/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/webservicenet.wordpress.com/1/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/webservicenet.wordpress.com/1/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/webservicenet.wordpress.com/1/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/webservicenet.wordpress.com/1/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/webservicenet.wordpress.com/1/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/webservicenet.wordpress.com/1/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/webservicenet.wordpress.com/1/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=webservicenet.wordpress.com&amp;blog=11556267&amp;post=1&amp;subd=webservicenet&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://webservicenet.wordpress.com/2010/01/20/hello-world/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/b0d34f758eef7d80e230580866cb1193?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">webservicenet</media:title>
		</media:content>
	</item>
	</channel>
</rss>
