.NET
Colin Fahey
1. Definizione di .NET
“.NET„ il termine si riferisce alle seguenti tecnologie di raccolta:
(1) Framework Class Library (FCL)
(2) Intermediate Language (IL)
(3) Common Language Runtime (CLR)
1.1 Framework Class Library (FCL)
La Framework Class Library (FCL) è un insieme di classi per sostenere:
* Contenitori (Array, String, List, ...)
* Multithreading (thread, thread pool)
* La messa in rete (socket, protocolli, client, server)
* Le operazioni sui file
* Flussi di dati
* Parsing (espressioni regolari, XML manipolazione)
* Operazioni matematiche
* Gestione delle eccezioni
* Lingua caratteristiche (riflessione, traccia dello stack, dinamica code)
La Framework Class Library (FCL) è attuato per molte piattaforme diverse ( Windows, Linux, MacOS, ... ).
Quindi, un unico programma che utilizza il Framework Class Library (FCL) possono essere sviluppati senza la conoscenza delle significative differenze tra le piattaforme di destinazione.
La Framework Class Library (FCL) contiene utili modelli dei concetti fondamentali di informatica (ad esempio, “thread, socket, ruscello,„ ecc.)
In un certo senso, la Framework Class Library (FCL) dà ogni sistema operativo supportato un moderno, di alto livello, interfaccia di programmazione coerente.
La Framework Class Library (FCL) è uno dei più avanzati, completa, progettato in modo uniforme e ben documentate collezioni delle funzioni e dei tipi di dati disponibili per i programmatori.
Purtroppo, i seguenti aspetti multimediali non fanno parte del Framework Class Library (FCL): registrazione audio, riproduzione audio, video registrazione, riproduzione video, rendering 3D, il joystick di input, i dispositivi di controllo ( CD/DVD, ... ), ecc
Microsoft ha un .NET versione di DirectX le biblioteche per il loro Windows sistema operativo.
Ci sono C# wrapper per OpenGL, OpenAL, GLUT, SDL, ecc, ma questo non è così conveniente come tali funzioni multimediali essere inclusi nel nucleo Framework Class Library (FCL) e inclusi gli utenti finali “di run-time„ biblioteche.
Uno dei problemi di sviluppo di programmi che utilizzano le librerie particolare è che l'insieme di utenti finali che richiedono il supporto per le librerie selezionate.
Se non è conveniente per scaricare e installare le librerie necessarie, un utente finale può scegliere di non utilizzare un programma che richiede quelle biblioteche.
Un utente finale può anche essere riluttanti ad attendere una libreria per il download da un percorso on-line.
Se un programma richiede sviluppatore di un utente finale di trovare, acquistare e installare le librerie, tutte senza l'assistenza di un programma particolare, quindi l'utente finale potrebbe scegliere di non utilizzare il programma.
Per esempio, molti open-source, i progetti richiedono gli utenti finali di trovare, scaricare e installare, diversi da altre librerie open-source progetti (esempi: openssl, zlib, libpng, libjpg, glut, ...), che è tempo - consumo, complicato, frustrante, e potrebbe comportare gli utenti finali di scegliere di ricerca di programmi alternativi o prodotti.
Il servizio “Windows Update„ apparentemente aiuta la distribuzione della versione 1.1 la .NET run-time di biblioteche per Windows utenti.
Questi run-time di biblioteche sono inclusi Windows XP con il sistema operativo.
Pertanto, la creazione di Windows programmi che richiedono .NET 1.1 sembra del tutto ragionevole.
Inoltre, il run-time di librerie per Microsoft's implementazioni dei .NET Framework Class Library (FCL) può essere distribuito liberamente, in modo tale che gli sviluppatori in grado di fornire queste biblioteche per gli utenti finali che hanno già i biblioteche.
Windows Vista il sistema operativo fornita con il .NET 3.0 run-time di biblioteche (una combinazione di .NET Framework Class Libraries e numerose nuove librerie come ad esempio la “Windows Presentation Foundation„ (WPF)).
Pertanto, la distribuzione di .NET 2.0 e .NET 3.0 programmi per Windows Vista non richiede l'installazione .NET per il run-time di biblioteche.
1.2 Intermediate Language (IL)
La Intermediate Language (IL) è un piccolo insieme di semplice, indipendente dal processore, sistema operativo indipendente istruzioni che sono sufficienti per esprimere completamente le strutture di dati e funzioni di vari di alto livello ( C++, C#, F#, Visual Basic, Java, Ocaml, ... ) linguaggi di programmazione.
Codice sorgente scritto in un alto livello di lingua può essere compilato in giù ad un corrispondente “Intermediate Language„ forma.
Codice in una forma “Intermediate Language„ può essere facilmente combinato con un altro codice in una forma “Intermediate Language„.
Un programma per computer (anche chiamato “software)„ può includere il codice sorgente scritte in diversi linguaggi di alto livello (ad esempio, C#, C++, e Visual Basic).
Tutto il codice sorgente può essere compilato (convertiti) in un formato “Intermediate Language„ per consentire un facile combinare con altri codice compilato.
Programmi in una forma “Intermediate Language„ è di solito convertite in macchina-istruzioni specifiche (ad esempio, CPU istruzioni) molto poco prima esecuzione (ad esempio, “Just-In-Time„ (JIT) conversione di IL a CPU istruzioni).
Ma un programma può anche essere eseguito nel contesto di un Virtual Machine (VM) inteso ad interpretare Intermediate Language (IL) istruzioni.
Codice scritte in diversi linguaggi di alto livello ( C#, F#, Ocaml, C++, Visual Basic, ... ), può essere compilato a Intermediate Language (IL) modulo utilizzando un opportuno compilatore su ogni piattaforma supportata ( Windows, Linux, MacOS X, ... ), e il file risultante, con incorporato Intermediate Language (IL) codice, è indipendente dalla piattaforma e può essere eseguito su qualsiasi piattaforma con un l'attuazione della .NET Common Language Runtime (CLR).
Intermediate Language (IL) il codice generato dal compilatore è essenzialmente indipendente dalla piattaforma su cui il compilatore è stato eseguito.
1.3 Common Language Runtime (CLR)
La Common Language Runtime (CLR) è il meccanismo responsabile per l'esecuzione di codice presentati nel Intermediate Language (IL) forma.
La Common Language Runtime (CLR) offre vari servizi.
La Common Language Runtime (CLR) può convertire Intermediate Language (IL) codice di istruzioni che sono nativi per la piattaforma (ad esempio, CPU istruzioni).
La conversione dal Intermediate Language (IL) a piattaforma specifiche (ad esempio, CPU-specifici) istruzioni può accadere in anticipo di qualsiasi esecuzione (vale a dire, un “Ahead-Of-Time„ (AOT) conversione), o può accadere gradualmente, come il programma esegue (vale a dire, “Just-In-Time„ (JIT) conversione) .
Just-In-Time (JIT) la conversione in evoluzione possibile utilizzare le statistiche relative l'esecuzione del programma di ottimizzare dinamicamente il codice di conversione (ad esempio: l'identificazione utilizzati di frequente loop e rami, e l'ottimizzazione in base al loro comportamento osservato (che a sua volta dipende dai dati attuali ed eventi)).
La Common Language Runtime (CLR) gestisce la memoria assegnata a nome del programma.
Pertanto, la CLR assicura che il programma non mancherà di accesso assegnati memoria, mentre i riferimenti a tali memoria persiste, e assicura che le allocazioni di memoria sono annullati, e che la memoria è nuovamente disponibile per le future assegnazioni dopo che il programma dispone di tutti i riferimenti a tali assegnazioni .
La Common Language Runtime (CLR) rileva quando il programma non ha più un riferimento a una allocazione della memoria, e la dotazione di memoria è contrassegnato per la deallocazione.
La Common Language Runtime (CLR) utilizza uno qualsiasi di una serie di algoritmi di “garbage collection„ (esempio: “mark-and-sweep„) per individuare e recuperare i blocchi di memoria non è più accessibile di un programma.
Common Language Runtime (CLR) il programma gestisce le eccezioni.
La Common Language Runtime (CLR) applica le politiche di sicurezza.
La Common Language Runtime (CLR) utilizza il meccanismo “P/Invoke„ a carico specifico per piattaforma biblioteche e invocare (chiamata) funzioni all'interno di tali biblioteche.
2. .NET ( FCL, IL, CLR ) implementazioni di Microsoft
2.1 Introduzione
.NET il paradigma ( FCL, IL, CLR ) è stato attuato dalla Microsoft.
L'ultima versione, “3.0„, è stato rilasciato nel 2006.10.
.NET 3.0 è composto dal .NET 2.0 Framework Class Libraries e diverse nuove biblioteche, come ad esempio la “Windows Presentation Foundation„ (WPF) associati con il “Silverlight„ (ex WPF/E, ex Sparkle, ...) plugin per browser Firefox e Internet Explorer.
Microsoft divide il software in .NET 2.0 a due diversi pacchetti:
(1) .NET Framework Version 2.0 Redistributable Package
La Redistributable Package è necessario da parte degli utenti finali per l'esecuzione di programmi costruita per l'.NET paradigma. Questo pacchetto deve essere installato anche da sviluppatori prima di installare e utilizzare il .NET Software Development Kit (SDK) indicati qui di seguito.
(2) .NET Framework Version 2.0 Software Development Kit
Il kit di sviluppo software (SDK) è richiesto da sviluppatori di compilare codice sorgente C# a Intermediate Language (IL) file di programma.
Questo pacchetto contiene vari strumenti per lo sviluppo e la documentazione.
2.2 .NET Framework Version 2.0 Redistributable Package
La Redistributable Package è necessario da parte degli utenti finali per l'esecuzione di programmi costruita per l'.NET paradigma.
Questo pacchetto deve essere installato anche da sviluppatori prima di installare e utilizzare il .NET Software Development Kit (SDK) indicati qui di seguito.
Il seguente pagina Internet è il principale .NET pagina di download:
La sezione denominata “.NET Framework Version 2.0 Redistributable Package„ ha collegamenti per tre piattaforme hardware: “Download x86 version„, “Download x64 version„, “Download IA64 version„.
Ad esempio, seguendo il link “Download x86 version„, porta a una pagina intitolata “Microsoft .NET Framework Version 2.0 Redistributable Package (x86)„
(Nome file: dotnetfx.exe; Versione: RC1; Data di pubblicazione: 3/22/2006; Lingua: Italiano; Dimensione download: 22.4 MB)
Localmente versione cache (solo per riferimento; potenzialmente obsoleto):
(Il nome del file è stato cambiato da qui il nome del file originale di “dotnetfx.exe„ al fine di evitare confusione con la versione di installazione 1.1 anche il nome “dotnetfx.exe„.)
2.3 .NET Framework Version 2.0 Software Development Kit (SDK)
Il kit di sviluppo software (SDK) è richiesto da sviluppatori di compilare codice sorgente C# a Intermediate Language (IL) file di programma.
Questo pacchetto contiene vari strumenti per lo sviluppo e la documentazione.
Il seguente pagina Internet è il principale .NET pagina di download:
La sezione denominata “.NET Framework Version 2.0 Software Development Kit„ ha collegamenti per tre piattaforme hardware: “Download x86 version„, “Download x64 version„, “Download IA64 version„.
Ad esempio, seguendo il link “Download x86 version„, porta a una pagina intitolata “.NET Framework 2.0 Software Development Kit (SDK) (x86)„
(File Nome: setup.exe; Versione: 2.0; Data di pubblicazione: 11/7/2005; Lingua: Italiano; Dimensione download: 354.0 MB)
Localmente versione cache (solo per riferimento; potenzialmente obsoleto):
(Il nome del file è stato cambiato da qui il nome del file originale di “setup.exe„ al fine di evitare confusione con tutti gli altri file di installazione di nome “setup.exe„.)
3. Microsoft Visual C#: un programma Integrated Development Environment (IDE)
3.1 Introduzione
Integrated Development Environment (IDE) un programma permette uno sviluppatore di modificare il codice sorgente ed eseguire vari strumenti (esempi: compilatore, debugger, ...) nel contesto di un unico, unificante programma, pieno di utili indicazioni visive e controlli.
“Microsoft Visual C# 2005 Express Edition„ non è un costo (non è richiesto il pagamento) IDE disponibile per il download da Microsoft.
Per i non-lo sviluppo di database, è quasi impossibile distinguere questo non-prodotto dal costo di vendita al dettaglio controparte, “Microsoft Visual C# 2005„.
Io uso spesso entrambi i prodotti, professionale e ricreativo, e non ho ancora notato alcuna differenza pratica tra i prodotti.
3.2 Gazzetta link
Il sito Internet della pagina principale:
La pagina in materia di “Visual C# Express Edition„:
“Download Now„ fare clic sul pulsante sul lato destro della pagina per scegliere una opzione di download.
(Un metodo è quello di avviare un programma di installazione che scarica file da Microsoft nel corso di ogni installazione.
Un secondo metodo è quello di scaricare un pieno CD-ROM “ISO„ immagine, che consente l'installazione in modalità non in linea futuro.
La ISO immagine, “VCS.iso„ (451,837,952 di byte; CRC 55884F2C) per 32 bit x86 inglese, può essere bruciato ad un CD-ROM utilizzando “Nero 7 Ultra„, per esempio. )
4. .NET ( FCL, IL, CLR ) attuazione da parte della Mono Project
4.1 Introduzione
.NET il paradigma ( FCL, IL, CLR ) è stato attuato dai partecipanti in un gruppo conosciuto come il Mono Project.
4.2 Gazzetta link
Visita il sito del progetto:
Pagina di download del software:
4.3 Localmente versione cache
Cache locale versione del programma di installazione (solo per riferimento; potenzialmente obsoleto):
4.4 .NET 2.0 sviluppo con Mono
“mcs„ il compilatore, e la documentazione, come 2006 del mese di novembre, per la maggior parte si riferiscono a C# 1.0 e FCL 1.1.
Tuttavia, la “mcs„ compilatore è in grado di compilare codice C# 2.0 che non contiene generici o generico a base di funzionalità, ma limita la API a 1.0.
Per fare C# 2.0 pieno sviluppo, con FCL 2.0 biblioteche, usa il “gmcs„ compilatore.
Vedere la seguente pagina sul sito Mono:
5. SharpDevelop: un open-source Integrated Development Environment (IDE) programma
5.1 Introduzione
Integrated Development Environment (IDE) un programma permette uno sviluppatore di modificare il codice sorgente ed eseguire vari strumenti (esempi: compilatore, debugger, ...) nel contesto di un unico, unificante programma, pieno di utili indicazioni visive e controlli.
SharpDevelop è un ottimo open-source IDE programma per C# / .NET sviluppo.
Questo IDE somigli al Microsoft Visual C# IDE, e, per alcuni aspetti, della SharpDevelop IDE ha migliorato la Microsoft prodotto.
Tuttavia, Microsoft Visual C# ha alcune caratteristiche (ad esempio: il debug) SharpDevelop che il programma non ha (al momento di questa stesura).
5.2 Gazzetta link
Il semplice sito Internet pagina principale:
La pagina in materia di “The Open Source Development Environment for .NET„:
La pagina di download, che ha le informazioni su 1.1 e 2.0 versioni di SharpDevelop:
5.3 Localmente versione cache
Cache locale versione del programma di installazione (solo per riferimento; potenzialmente obsoleto):
6. Utile C# / .NET / IL strumenti
6.1 SciTech Software “.NET Memory Profiler„
Questo profiler mostra le allocazioni di memoria, e di altre assegnazioni di risorse, che un programma compilato .NET o di montaggio rende durante l'esecuzione.
In tempo reale grafico consente ad una persona di vedere, nel dettaglio, come le azioni del programma (ad esempio, azioni innescati da input o di altri eventi) pregiudicare allocazione della memoria e garbage collection.
In tempo reale tabella consente di visualizzare una persona di apprendere informazioni su allocazioni di memoria.
Questo profiler immediatamente e drasticamente, ha rivelato uno spreco di memoria utilizzare in un tempo reale Direct3D programma avevo sviluppato.
Un modello di rialzo improvviso rampe e gocce (a causa di “garbage collection)„ in memoria grafici trovato perfettamente a periodici, molto breve-pause nel disegno 3D del mio programma.
Il profiler mi ha permesso di scoprire che frequenti assegnazione temporanea di oggetti è stato accumulando un sacco di memoria, che fa scattare garbage collection frequentemente, e tenendo il tempo sufficiente per ogni garbage collection di causare qualche disegno periodi da perdere.
Il profiler in tempo reale tabella di ripartizione delle tipi di oggetto rivelato i tipi di oggetti che la maggior parte consumati memoria, e che le assegnazioni alla memoria a consumato il tasso più elevato (byte al secondo), e che le assegnazioni aveva il più alto tasso di smaltimento.
Studiare in tempo reale grafici, e in tempo reale le tabelle, mi ha permesso di concentrarsi sullo studio del modo in cui alcuni tipi di dati sono stati usati nel mio codice.
Modificando il codice al fine di evitare assegnazioni di frequente temporanea oggetti possono ridurre notevolmente il tasso globale di allocazione della memoria e di smaltimento, e può pertanto ridurre la frequenza di raccolta dei rifiuti di attivazione.
(Credo “Bytes/sec„ è una statistica molto per rivelare in tempo reale la memoria in uso, oltre a “Live instances„.
) Vedendo tutte queste in fase di aggiornamento molto rapidamente in una tavola formato, ed essere in grado di scegliere come righe sono in ordine, e cambiando il parametro di ordinamento in qualsiasi momento, rende l'esperienza di studiare in tempo reale programma molto accattivante e informative.
Allocazione della memoria utente risposte a interazione con un programma in esecuzione può essere studiato, e la sperimentazione in grado di adattarsi rapidamente a feedback per restringere il più interessante aspetto.
(Per esempio, la versione 2006 July aveva i seguenti attributi: versione 2.6.89; 4.3 MB; USA $127.00; Download di 14 giorni-limite di versione, senza alcun costo, per la valutazione.)
6.2 FxCop: .NET analizzatore di codice / critico
FxCop analizza una compilato .NET programma (o compilate il montaggio) e genera una relazione lista possibili problemi con il codice sorgente originale.
Possibili problemi di prestazioni e di sicurezza siano individuati problemi.
Possibile codifica convenzione violazioni sono identificati.
FxCop non richiede l'accesso al codice sorgente originale per eseguire l'analisi.
Solo .NET compilato il programma (che contiene IL) è obbligatorio.
Tuttavia, la relazione FxCop offre collegamenti ipertestuali a specifici numeri di riga nel codice sorgente originale.
Se il Microsoft Visual C# 2005 IDE è attivo, cliccando sul collegamento ipertestuale in relazione FxCop farà sì che il IDE a curvatura alle pertinenti file sorgente e numero di riga.
FxCop ha, a mio parere, un po 'goffo modo di integrare con la Microsoft Visual C# 2005 IDE.
Tuttavia, una volta istituito, FxCop produce uno molto interessante e potenzialmente preziosa relazione.
La relazione contiene consigli dettagliati su come migliorare il codice sorgente originale.
Credo che valga la pena di analizzare un programma con FxCop su base periodica.
Non sarei sorpreso se alcuni progetti di sviluppo software o le imprese richiesto tutto il codice scritto da sviluppatori di resa non avvertenze o critiche da FxCop.
Norme possono essere aggiunti o rimossi dal FxCop banca dati, in base alle esigenze.
FxCop è un open-source, programma libero.
6.3 “Reflector for .NET„: decompiler / Analyzer
Lutz Roeder's dal sito Internet:
"Reflector is the class browser, explorer, analyzer and documentation viewer for .NET. Reflector allows to easily view, navigate, search, decompile and analyze .NET assemblies in C#, Visual Basic and IL."
“Reflector„ può aiutare una persona come studio di terze parti sono scritte le biblioteche.
A volte sarebbe molto utile sapere esattamente come un metodo in un insieme di applicazione.
Se un metodo si comporta in un inatteso o modo misterioso, poi “Reflector„ può essere usato per visualizzare l'attuazione.
Di vedere l'attuazione, il programmatore può evitare problemi causati da implementazioni specifiche della biblioteca metodi.
Un amico mi ha detto che lo aiutarono “Reflector„ ulteriori informazioni sul comportamento di poco documentati i metodi di attuazione del Microsoft la Framework Class Libraries (FCL).
“Reflector„ potrebbe essere utile nel caso in cui la documentazione per una biblioteca metodo consiste di poche parole, come la “definisce il valore„ o “gestore di eventi.„
Se una libreria funzione invocazione sta fallendo per un motivo sconosciuto (quando tutti i parametri sembra valido), poi usando “Reflector„ di esaminare l'attuazione della biblioteca funzione potrebbe rivelare il motivo del fallimento.
“Reflector„ esegue alcuni “reverse engineering„ .NET di un programma o di montaggio.
Altri servizi di pubblica utilità, forse anche “Reflector„ stessa, può produrre codice sorgente per i programmi o assemblee costruito sulla base di codice sorgente offuscato.
Si tratta ovviamente di una fonte di preoccupazione per alcuni sviluppatori ed i loro investitori.
(2006 July: Reflector.zip versione è stata 4.2.45.0)
7. Internet forum di discussione
Google ricerca è il modo migliore per trovare le risposte alle domande specifiche su qualsiasi argomento, ma i siti qui di seguito appaiono ripetutamente nei risultati di ricerca per C# e .NET domande.
I siti sono sotto awesome per esplorare le molte cose hanno fatto con C# e .NET.
“The Code Project„ sito ha migliaia di utili e interessanti articoli, per C#, C++, e gli altri linguaggi di programmazione e paradigmi.
“MSDN Code Gallery„ il sito ha molti articoli interessanti e gli esempi di codice relative al Microsoft tecnologie.
Altri siti Internet relativi al C# e .NET:
8. NOTE GENERALI
8.1 Indipendenza dalla piattaforma
La Intermediate Language (IL), come Java “codice di byte,„ è indipendente dalla piattaforma.
Qualsiasi .NET compatibile compilatore genererà indipendente dalla piattaforma Intermediate Language (IL) sotto forma di codice a programmi o assemblee.
Confezionati come programmi eseguibili (“*.exe„ file) deve avere alcuni dipendenti dalla piattaforma di codice specifico per un sistema operativo, al fine di essere correttamente interpretate e lanciato come eseguibile del software nel contesto del particolare sistema operativo.
Tuttavia, il nativo eseguibile del software di file serve solo per richiamare la .NET CLR motore, la presentazione della IL codice contenuto nel file del software per l'esecuzione di CLR il motore.
Microsoft offre un attuazione dei programmi di utilità .NET (compilatore, ...), e una implementazione del Framework Class Library (FCL), solo per il Windows sistema operativo.
Mono Project offre le implementazioni dei servizi di pubblica utilità .NET (compilatore, ...), e le implementazioni di Framework Class Library (FCL), per i seguenti sistemi operativi: Windows, Linux, MacOS X, e BSD.
8.2 Velocità rispetto a non-CLR C / C++
La Common Language Runtime (CLR) aspetto della .NET è il contesto in cui un programma viene eseguito C#.
CLR esegue la “garbage collection„ e consente di avviare programmi di funzioni “non gestito„ librerie (tutte le biblioteche non sono eseguiti in Intermediate Language (IL)).
Qualsiasi funzione la fa più di matematica pura, pura manipolazione stringa, o pura memoria copia, invoca funzioni “non gestito„ biblioteche.
Tutte le operazioni sui file, le operazioni di presa di corrente, le operazioni di disegno, le operazioni di input (mouse, tastiera), le operazioni di output (console), piattaforma thread operazioni, la precisione delle operazioni del timer, le operazioni di finestre, ecc, invoca funzioni “non gestito biblioteche.„
Purtroppo, il meccanismo di invocare funzioni “non gestito„ dal CLR richiede una quantità significativa di tempo.
Pertanto, la velocità di un programma di esecuzione nel contesto dei CLR è noticably più lento di un programma che può invocare funzioni “non gestito„ direttamente.
Per alcuni tipi di software, velocità può essere importante.
Per alcuni tipi di software, la velocità può dare un importante differenza nella soggettiva o psicologica esperienza per una persona che utilizza il software.
Per alcuni tipi di software, la velocità può fare la differenza tra il raggiungimento di un obiettivo e fallimento.
Multithreading, aumentando CPU velocità, e il miglioramento della CLR impianto di generazione di codice, contribuirà software di esecuzione nel contesto dei CLR eseguire più velocemente.
Tuttavia, qualsiasi codice che viene eseguito al di fuori del CLR, e invoca piattaforma biblioteche direttamente, inevitabilmente eseguire significativamente più veloce che il software che viene eseguito nel contesto del CLR.
Le assicurazioni fatte dalla CLR a C# del software, ad esempio in sicurezza colmare il divario tra il codice gestito e non gestito codice, giunge in un costo che è improbabile che possa essere ridotto.
Pertanto, qualsiasi programma che è molto intensa piattaforma (esempi: 3D o un gioco di simulazione, file di processore, server di rete, ecc) è probabile che l'esecuzione di un ordine di grandezza più veloce al di fuori del CLR rispetto a quando eseguito entro i CLR.
La differenza è enorme.
Inoltre, qualsiasi programma che esegue una quantità significativa di basso livello di manipolazione dei dati verrà eseguito significativamente più veloce al di fuori del CLR rispetto ai CLR.
Programmi di esecuzione nel contesto dei CLR eseguire rapidamente abbastanza per essere utile per molti scopi pratici.
CPU come aumentare la velocità e, come codice ha una migliore vantaggio di più CPUs, i programmi di esecuzione nel contesto dei CLR potrà essere utilizzato per ulteriori compiti che richiedono un alto tasso di calcolo.
Tuttavia, in mezzo a 2008 la CLR non è ancora adeguato per i giochi 3D di qualsiasi sofisticazione, a meno che una molto aggressiva profusione di sforzi volti a ridurre il numero di chiamate di funzione di libreria 3D (OpenGL o Direct3D), eventualmente utilizzando concetti come ad esempio “shader programmi„ e “visualizzare elenchi;„ nulla per ridurre il numero di chiamate di funzione.