.NET
Colin Fahey
1. Definirea .NET
Termenul ".NET" se referă la următoarele colecţie de tehnologii:
(1) Framework Class Library (FCL)
(2) Intermediate Language (IL)
(3) Common Language Runtime (CLR)
1.1 Framework Class Library (FCL)
De Framework Class Library (FCL) este un set de clase pentru a sprijini:
* Recipiente (Array, String, List, ...)
* Multithreading (fire, piscine thread)
* Reţea (prize, protocoale, clienti, servere)
* Operaţiuni fişier
Fluxurile de date *
* Analizarea (expresii regulate, XML manipulare)
* Math operaţiunile de
* Excepţia de manipulare
* Caracteristici de limbă (reflecţie, stack trace, codul dinamic)
De Framework Class Library (FCL) este pus în aplicare pentru diverse platforme ( Windows, Linux, MacOS, ... ).
Astfel, un singur program care utilizează Framework Class Library (FCL) poate fi dezvoltat, fără cunoştinţe semnificative de diferenţele între platformele ţintă.
De Framework Class Library (FCL) utile conţine modele de concepte fundamentale ale informaticii (cum ar fi "thread, soclu, flux," etc.)
Într-un sens, Framework Class Library (FCL) dă fiecare sprijinit de un modern sistem de operare, la nivel înalt, în interfaţa de programare.
De Framework Class Library (FCL) este una dintre cele mai avansate, complete, în mod uniform-proiectat, bine documentate colectii de functii si tipuri de date disponibile pentru programatori.
Din păcate, multimedia, următoarele aspecte nu sunt parte din Framework Class Library (FCL): înregistrare audio, redarea audio, video de înregistrare, redare video, pentru prelucrări 3D, joystick intrare, dispozitiv de control ( CD/DVD, ... ), etc
Microsoft are o .NET versiune a DirectX bibliotecile lor Windows pentru sistemul de operare.
Există C# wrappers pentru OpenGL, OpenAL, GLUT, SDL, etc, dar acest lucru nu este destul de convenabil ca având ca astfel de functii multimedia, să fie incluse în partea centrală Framework Class Library (FCL) şi incluse în utilizatorului final "run-time" biblioteci.
Una dintre probleme în curs de dezvoltare de programe care utilizează special biblioteci este faptul că destinate set de utilizatorii finali, vor solicita sprijin pentru biblioteci selectate.
Dacă nu este convenabil pentru a descărca şi a instala librăriile necesare, un utilizator final ar putea să alegeţi să nu folosiţi un program care necesită aceste biblioteci.
Un utilizator final poate fi, de asemenea, doresc să aşteptaţi pentru o biblioteca pentru a descărca de la o locaţie online.
Dacă un program necesită un dezvoltator de utilizatorul final, pentru a găsi, să achiziţioneze, instaleze şi biblioteci, toate fără asistenţă de la un anumit program, atunci utilizatorul final ar putea să alegeţi să nu folosiţi acest program.
De exemplu, multe proiecte open-source cere utilizatorilor finali de a găsi, descărca, instala şi, de multe biblioteci de la alte proiecte open-source (exemple: openssl, zlib, libpng, libjpg, glut, ...), care este timp consumatoare, complicat, frustrant, şi ar putea duce la utilizatorii finali a alege pentru a căuta alternative de programe sau produse.
"Windows Update" de serviciu aparent 1.1 ajută să implementaţi Versiune de .NET run-time pentru a bibliotecilor Windows utilizatori.
Aceste rula timp de biblioteci sunt incluse Windows XP cu sistem de operare.
Prin urmare, Windows crearea de programe care necesită .NET 1.1 pare rezonabilă în întregime.
De asemenea, de-a alerga timp de biblioteci pentru Microsoft's implementări de .NET Framework Class Library (FCL) liber pot fi redistribuite, pentru ca dezvoltatorii să furnizeze aceste biblioteci pentru utilizatorii finali care nu au deja biblioteci.
Windows Vista de sistem de operare a navelor cu .NET 3.0 run-time biblioteci (o combinaţie de mai multe .NET Framework Class Libraries şi biblioteci noi, cum ar fi "Windows Presentation Foundation" (WPF)).
De aceea, implementarea .NET 2.0 şi .NET 3.0 programe pentru Windows Vista nu are nevoie de instalare pentru a rula .NET-timp biblioteci.
1.2 Intermediate Language (IL)
De Intermediate Language (IL) este un mic set de simplu, independent de procesor, sistem de operare independent de instrucţiuni care sunt suficiente pentru a exprima complet de structuri de date şi multe funcţii de nivel înalt diferite limbaje de programare ( C++, C#, F#, Visual Basic, Java, Ocaml, ... ).
Codul sursă scris într-o limbă de nivel înalt pot fi compilate, la o formă corespunzătoare "Intermediate Language".
Cod "Intermediate Language" într-o formă uşor poate fi combinat cu alte cod într-o formă "Intermediate Language".
Un program de computer (numit de asemenea, "software-ul)" poate să includă codul sursă scrise în diferite limbaje de nivel înalt (de exemplu, C#, C++, şi Visual Basic).
Toate codul sursă pot fi compilate (convertit) pentru a "Intermediate Language" un format uşor pentru a permite combinarea cu alte codul compilat.
Programe "Intermediate Language" într-o formă este, de obicei, convertite în maşină instrucţiuni specifice (de exemplu, CPU de instalare) înainte de executie foarte scurt timp (de exemplu, "Just-In-Time" (JIT) de conversie IL la CPU instrucţiuni).
Dar, un program poate fi executat în contextul unei Virtual Machine (VM) proiectat pentru a interpreta Intermediate Language (IL) instrucţiuni.
Codul scris în diferite limbaje de nivel înalt ( C#, F#, Ocaml, C++, Visual Basic, ... ), pot fi compilate pentru a Intermediate Language (IL) formă corespunzătoare, folosind un compilator pe orice platformă suportată ( Windows, Linux, MacOS X, ... ), şi rezultă fişier, cu embedded Intermediate Language (IL) cod, este independentă de platformă şi poate executa pe orice platformă, având o punerea în aplicare a .NET Common Language Runtime (CLR).
De Intermediate Language (IL) codul generat de compilator este în esenţă, independent de platforma pe care compilatorul a fost executat.
1.3 Common Language Runtime (CLR)
De Common Language Runtime (CLR) mecanism este responsabil pentru executarea de cod prezentate în formă Intermediate Language (IL).
De Common Language Runtime (CLR) ofera diverse servicii.
De Common Language Runtime (CLR) mai conversia Intermediate Language (IL) cod de la instrucţiunile care sunt nativi de a platformei (de exemplu, CPU instrucţiuni).
De conversie de la Intermediate Language (IL) platforma pentru a-specifice (de exemplu, CPU-specifice) instrucţiunile de lucru se poate întâmpla în avans cu privire la orice executie (de exemplu, o "Ahead-Of-Time" (AOT) conversie), sau poate întâmpla treptat, pe măsură ce programul execute (de exemplu, "Just-In-Time" (JIT) de conversie) .
Just-In-Time (JIT) de conversie se poate utiliza în evoluţie statistici despre program dinamic de executie pentru a optimiza convertite cod (de exemplu: de identificare utilizate frecvent buclele şi ramuri, şi de optimizare a acestora în funcţie de observat comportamentul (care în sine, depinde de datele actuale şi evenimente)).
Common Language Runtime (CLR) gestionează de memorie alocată pe numele programului.
Prin urmare, CLR asigură faptul că programul nu eşua pentru a accesa alocate de memorie în timp ce trimiteri la astfel de memorie persistă, şi se asigură că alocările de memorie sunt anulate, şi că este pusă la dispoziţie de memorie din nou pentru viitor alocări după programul dispune de toate trimiteri la astfel de alocări .
De Common Language Runtime (CLR) detectează atunci când programul nu mai are o trimitere la o alocare de memorie, precum şi alocarea de memorie este marcat pentru deallocation.
Common Language Runtime (CLR) foloseşte de orice dintr-o varietate de algoritmi "de colectare a deseurilor" (de exemplu: "mark-and-sweep") pentru a identifica si revendica blocuri de memorie nu mai accesibile printr-un program.
De Common Language Runtime (CLR) gestionează programul de excepţii.
De Common Language Runtime (CLR) enforces politicilor de securitate.
De Common Language Runtime (CLR) foloseste "P/Invoke" mecanism de încărcare platformă pentru a-şi invoca biblioteci specifice (de apel) funcţiile în cadrul acestor biblioteci.
2. .NET ( FCL, IL, CLR ) implementări de Microsoft
2.1 Introducere
.NET de paradigmă ( FCL, IL, CLR ) a fost implementat de către Microsoft.
Cea mai recentă versiune, "3.0", a fost lansată în 2006.10.
.NET 3.0 este compus din mai multe .NET 2.0 Framework Class Libraries şi biblioteci noi, cum ar fi "Windows Presentation Foundation" (WPF) asociate cu "Silverlight" (anterior WPF/E, fost Sparkle, ...) de browser dop pentru Firefox şi Internet Explorer.
Microsoft imparte .NET 2.0 în software-ul pentru a două tipuri de pachete:
(1) .NET Framework Version 2.0 Redistributable Package
The redistributable pachet este necesar de către utilizatorii finali de a executa programele de construit pentru .NET paradigmă. Acest pachet de asemenea, trebuie să fie instalat de către dezvoltatorii înainte de instalarea şi utilizarea .NET Software Development Kit (SDK) menţionate mai jos.
(2) .NET Framework Version 2.0 Software Development Kit
The kit de dezvoltare software (SDK) este cerut de dezvoltatori de a compila C# cod sursă pentru a Intermediate Language (IL) fişierele de program.
Acest pachet conţine diferite instrumente de dezvoltare si documentare.
2.2 .NET Framework Version 2.0 Redistributable Package
The redistributable pachet este necesar de către utilizatorii finali de a executa programele de construit pentru .NET paradigmă.
Acest pachet de asemenea, trebuie să fie instalat de către dezvoltatorii înainte de instalarea şi utilizarea .NET Software Development Kit (SDK) menţionate mai jos.
Următoarele pagini de Internet este principala .NET pagina de download:
Secţiunea a numit ".NET Framework Version 2.0 Redistributable Package" link-uri pentru trei platforme hardware: "Download x86 version", "Download x64 version", "Download IA64 version".
De exemplu, urmând link-ul de "Download x86 version", conduce la o pagină, intitulat "Microsoft .NET Framework Version 2.0 Redistributable Package (x86)"
(Nume fişier: dotnetfx.exe; Version: RC1; Data publicării: 3/22/2006; Limba: Romana; Dimensiunea fişierului de descărcat: 22.4 MB)
Local versiune în cache (numai pentru referinţă; potenţial învechit):
(Nume de fişier a fost schimbat aici original de la numele de fişier "dotnetfx.exe" de confuze, pentru a evita o cu versiunea de instalare 1.1 de asemenea, numit "dotnetfx.exe".)
2.3 .NET Framework Version 2.0 Software Development Kit (SDK)
The kit de dezvoltare software (SDK) este cerut de dezvoltatori de a compila C# cod sursă pentru a Intermediate Language (IL) fişierele de program.
Acest pachet conţine diferite instrumente de dezvoltare si documentare.
Următoarele pagini de Internet este principala .NET pagina de download:
Secţiunea a numit ".NET Framework Version 2.0 Software Development Kit" link-uri pentru trei platforme hardware: "Download x86 version", "Download x64 version", "Download IA64 version".
De exemplu, urmând link-ul de "Download x86 version", conduce la o pagină, intitulat ".NET Framework 2.0 Software Development Kit (SDK) (x86)"
(Nume fişier: setup.exe; Version: 2.0; Data publicării: 11/7/2005; Limba: Romana; Dimensiunea fişierului de descărcat: 354.0 MB)
Local versiune în cache (numai pentru referinţă; potenţial învechit):
(Nume de fişier a fost schimbat aici original de la numele de fişier "setup.exe" de confuze, pentru a evita o cu toate celelalte fişiere de instalare cu numele "setup.exe".)
3. Microsoft Visual C#: un program de Integrated Development Environment (IDE)
3.1 Introducere
Un Integrated Development Environment (IDE) programul permite ca un dezvoltator pentru a edita codul sursă şi executa diverse instrumente (exemple: compilator, depanator, ...) în contextul unui singur, unificatoare program, completat cu indicaţii utile vizuale şi controalele.
"Microsoft Visual C# 2005 Express Edition" este un nu-cost (nu de plată solicitate) IDE disponibile pentru descărcare de la Microsoft.
Pentru non-dezvoltare de baze de date, este aproape imposibil de a distinge acest produs nu-cost de la vânzare cu amănuntul de referinţă, "Microsoft Visual C# 2005".
Eu sunt folosite frecvent de ambele produse, profesional şi recreationally, iar eu încă nu au observat nici o diferenţă practică între produse.
3.2 Jurnalul link-uri
Site-ul de internet al paginii principale:
Pagina "Visual C# Express Edition" cu privire la:
Faceţi clic pe butonul "Download Now" pe partea dreapta a paginii pentru a alege o opţiune de descărcare.
(O metodă este de a lansa un program de instalare care va descărca fişiere în timpul Microsoft de la fiecare instalare.
O a doua metodă este de a descărca o imagine completa CD-ROM "ISO", care permite instalarea viitor offline.
ISO de imagine, "VCS.iso" (451,837,952 octeţi; CRC 55884F2C) pentru 32 de biţi x86 engleză, pot fi arse la o CD-ROM folosind "Nero 7 Ultra", de exemplu. )
4. .NET ( FCL, IL, CLR ) Punerea în aplicare de către Mono Project
4.1 Introducere
.NET de paradigmă ( FCL, IL, CLR ) a fost pus în aplicare de către participanţi într-un grup cunoscut sub denumirea de Mono Project.
4.2 Jurnalul link-uri
Proiect site-ul:
Produse de plastic descărca pagina:
4.3 Local versiune în cache
Local cache versiune de instalare (numai pentru referinţă; potenţial învechit):
4.4 .NET 2.0 dezvoltare cu Mono
"mcs" de compilator, şi documentaţia, ca de noi 2006, in cea mai mare parte se referă la C# 1.0 şi FCL 1.1.
Cu toate acestea, "mcs" compilator este capabil de a compila codul C# 2.0 care nu conţine generics sau generice pe bază de funcţionalităţi, dar limitele de API la 1.0.
Pentru a face complet C# 2.0 dezvoltare, cu FCL 2.0 biblioteci, utilizează "gmcs" compilator.
Vezi urmatoarea pagina de pe site-ul Mono:
5. SharpDevelop: un open-source Integrated Development Environment (IDE) program
5.1 Introducere
Un Integrated Development Environment (IDE) permite un program de dezvoltator pentru a edita codul sursă şi executa diverse instrumente (exemple: compilator, depanator, ...) în contextul unui singur, unificatoare program, completate cu indicaţii utile vizuale şi controalele.
SharpDevelop este un excelent, open-source IDE program pentru C# / .NET dezvoltare.
Acest IDE strâns seamănă cu Microsoft Visual C# IDE, şi, în unele privinţe, SharpDevelop IDE-a îmbunătăţit asupra Microsoft produs.
Cu toate acestea, Microsoft Visual C# are anumite caracteristici (de exemplu: pentru depanare) SharpDevelop că programul nu are (în momentul de acest scris).
5.2 Jurnalul link-uri
Simplu site-ul de internet pagina principalã:
Pagina "The Open Source Development Environment for .NET" cu privire la:
Pagina de download, care are detalii despre 1.1 şi 2.0 versiuni de SharpDevelop:
5.3 Local versiune în cache
Local cache versiune de instalare (numai pentru referinţă; potenţial învechit):
6. Utile C# / .NET / IL unelte
6.1 SciTech Software ".NET Memory Profiler"
Acest lucru arată profile alocări de memorie, şi alte alocări de resurse, pe care un program sau compilate .NET montaj în timp ce face executarea.
În timp real grafic permite o persoană pentru a vedea, în detaliu, cât de acţiuni ale programului (cum ar fi declanşat acţiunile de date introduse de utilizator sau alte evenimente) afectează alocarea de memorie şi de colectare a deseurilor.
Real-timp cota de masă permite vizualizarea unei persoane, pentru a afla detalii despre alocări de memorie.
Acest profile instantaneu, si dramatic, a arătat risipei de memorie utilizare într-un timp real Direct3D am dezvoltat programul.
Un model de rampe de sus şi bruscă picaturi (ca urmare a "gunoiului de colectare a)" în memorie grafice potrivite perfect cu periodice, de foarte scurtă pauză în desen 3D de programul meu.
De profiler-mi activat pentru a descoperi că frecvente alocarea de obiecte temporare a fost acumularea, o mulţime de memorie, vor pune în mişcare în mod frecvent de colectare a gunoiului, şi de a lua suficient timp pentru fiecare colectare a gunoiului de a cauza o câteva perioade de tragere de a fi ratat.
De profiler's tabel în timp real a dezvăluit alocate obiect tipuri de tipuri de obiecte care consumă cea mai de memorie, şi care consumă alocări de memorie la rata cea mai mare (octeţi pe secundă), şi alocări care au avut cea mai mare rata de eliminare.
Studiu de timp real, grafice, şi în timp real, tabele, mi-a permis să se concentreze asupra a studia modul în care anumite tipuri de date au fost folosite în codul meu.
Modificare cod pentru a evita alocarea de frecvente temporare de obiecte poate reduce foarte mult rata globală de alocare a memoriei şi de eliminare, şi, prin urmare, poate reduce frecvenţa de colectare a gunoiului de declanşare.
("Bytes/sec" cred că este un foarte statistici pentru descoperirea în timp real, memorie de utilizare, în plus faţă de "Live instances".
) Demonstraţie toate acestea fiind actualizate foarte rapid într-un format de tabel, şi posibilitatea de a alege modul în rânduri sunt sortate, iar schimbarea de sortare parametru în orice moment, face ca experienţa de a studia în timp real, un program foarte interesant şi informativ.
Memorie alocarea de răspunsuri la interacţiunea cu utilizatorul execută un program poate fi studiat, de testare şi se pot adapta rapid la feedback-ul pentru a limita cele mai interesante-de aspect.
(De exemplu, 2006 July versiune a avut următoarele atribute: Versiune 2.6.89; 4.3 MB; USA $127.00; Descarca 14-zi-limită de versiune, fără niciun cost, pentru evaluare.)
6.2 FxCop: .NET cod Analizator / critic de
FxCop analizează un program compilat .NET (sau compilate de montaj) şi generează un raport cu listarea posibile probleme cu codul sursă original.
Posibile probleme de performanţă şi de problemele de securitate sunt identificate.
Posibile încălcări ale convenţiei de codificare sunt identificate.
FxCop nu are nevoie de acces la codul sursă original pentru a efectua analiza.
Numai .NET programul compilat (care conţine IL) este obligatorie.
Totuşi, FxCop raport oferă hyperlink-uri specifice la numerele de linie în codul sursă original.
Dacă Microsoft Visual C# 2005 IDE este activ, faceţi clic pe Hyperlink în raport FxCop va cauza IDE la warp relevante pentru fişierul sursă şi linie număr.
FxCop are, în opinia mea, o, mai degrabă awkward mod de a integra cu Microsoft Visual C# 2005 IDE.
Cu toate acestea, după ce este setat, FxCop produce un foarte interesant şi-potenţial valoroase raport.
Raportul conţine sfaturi detaliate cu privire la modul de îmbunătăţire a sursei originale de cod.
Cred că este util să analizăm un program folosind FxCop pe o baza periodice.
Nu as fi surprins dacă unele proiecte de dezvoltare de software sau de afaceri necesare tot codul scris de dezvoltatorii de randament pentru a nu avertismente sau critici de FxCop.
Regulamentul poate fi adaugat sau scos din baza de date FxCop, în funcţie de nevoi.
FxCop este un open-source, free program.
6.3 "Reflector for .NET": decompiler / analyzer
De la Lutz Roeder's site-ul de 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" poate ajuta o persoană de studiu cum terţe biblioteci sunt scrise.
Uneori s-ar fi foarte util pentru a şti exact cum o metodă într-un montaj este pus în aplicare.
Dacă o metodă comportă într-un mod neaşteptat sau misterios, apoi "Reflector" pot fi utilizate pentru a vedea punerea în aplicare.
Prin punerea în aplicare vedeţi, programator poate remedia anumite probleme cauzate de implementări de biblioteci metode.
Un prieten mi-a spus că el a ajutat la "Reflector" afla mai multe despre comportamentul slab documentate metode, în Microsoft punerea în aplicare a Framework Class Libraries (FCL).
"Reflector" ar putea fi de folos atunci când documentaţia pentru o bibliotecă metodă constă în doar câteva cuvinte, cum ar fi "seturi de valoare" sau "eveniment handler."
Dacă o bibliotecă este funcţia în lipsa unui motiv necunoscut (atunci când toate par valabile parametri), apoi folosind "Reflector" de a privi la punerea în aplicare a funcţiei de bibliotecă ar putea să dezvăluie motivul pentru esec.
"Reflector" efectueaza unele "ingineria inversă" a unui program sau .NET montaj.
Alte utilitati, inclusiv, eventual, "Reflector" sine, poate genera cod sursă pentru programe sau ansambluri construite pe baza obfuscated codul sursă.
Aceasta este, evident, o sursă de îngrijorare pentru unii, dezvoltatorii şi investitorii lor.
(2006 July: Reflector.zip a fost Versiune 4.2.45.0)
7. Internet forumuri de discuţii
Google cautare este cel mai bun mod de a găsi răspunsuri la întrebări specifice cu privire la orice subiect, dar site-urile de mai jos în mod repetat apărea în rezultatele de căutare pentru C# şi .NET întrebări.
Site-urile de mai jos sunt minunat pentru explorarea multe lucruri misto de oameni au făcut cu C# şi .NET.
"The Code Project" site-ul a fost mii de articole interesante si utile, pentru C#, C++, şi în alte limbi şi paradigme de programare.
"MSDN Code Gallery" site-ul a fost de multe articole interesante şi mostre de cod referitoare la Microsoft tehnologii.
Alte site-uri de internet legate de C# şi .NET:
8. Note generale
8.1 Platforma de independenţă
De Intermediate Language (IL), ca Java "octet de cod," este independent de platforma.
Orice .NET compatibil compilatorul va genera independent de platforma Intermediate Language (IL) cod pentru a forma sau ansambluri de programe.
Programe împachetate ca executabile ("*.exe" fişiere) trebuie să aibă unele dependente de platformă de cod specific pentru un sistem de operare, în scopul de a fi corect interpretată şi ca execuţie a lansat software-ul în contextul în special a sistemului de operare.
Cu toate acestea, executabil nativ parte din software-ul de fişiere serveşte doar pentru a invoca .NET CLR motor, de a trimite codul de IL conţinute în cadrul software-ului de fişiere pentru executarea de către CLR motor.
Microsoft ofera o punere în aplicare a .NET utilitare (compilator, ...), şi o punere în aplicare a Framework Class Library (FCL), doar pentru Windows sistem de operare.
De Mono Project oferă implementări de .NET utilitare (compilator, ...), şi implementări de Framework Class Library (FCL), pentru următoarele sisteme de operare: Windows, Linux, MacOS X, şi BSD.
8.2 Viteza comparativ cu non-CLR C / C++
De Common Language Runtime (CLR) aspect al .NET este contextul în care un program C# execute.
CLR efectueaza de "colectare a deseurilor" si permite programelor să invoce în funcţii "unmanaged" biblioteci (toate bibliotecile nu a pus în aplicare în Intermediate Language (IL)).
Orice funcţie a face mai mult decât pur matematice, pur aleatoare manipulare, sau pur memorie, copierea, va invoca "unmanaged" funcţii în biblioteci.
Toate operaţiunile de fişier, socket operaţiuni, operaţiunile de desen, operaţiunile de intrare (mouse, tastatură), operaţiunile de ieşire (consolă), platforma fir de operaţiuni, de precizie Timer operaţiuni, operaţiunile de ferestre, etc, va invoca "unmanaged" funcţii în "biblioteci."
Din păcate, mecanismul de a invoca "unmanaged" funcţii de la CLR necesită o cantitate semnificativă de timp.
Prin urmare, viteza de ansamblu a unui program care execută în contextul în CLR este noticably mai lent decât un program care poate invoca "unmanaged" funcţii direct.
Pentru anumite tipuri de software, viteza poate fi important.
Pentru anumite tipuri de software, viteza poate face o diferenţă importantă în experienţa subiectivă sau psihologică pentru o persoană utilizând software-ul.
Pentru anumite tipuri de software, viteza poate face diferenta dintre atingerea unui scop şi de eşec.
Multithreading, creşterea numărului de CPU viteze, îmbunătăţiri şi la facilităţi de generare de cod CLR, va ajuta la executarea software-ului, în contextul unei CLR executa mai repede.
Cu toate acestea, orice cod care execută în afara CLR, şi invocă platformă direct de biblioteci, în mod inevitabil se va executa în mod semnificativ mai repede decât software-ul care execută în cadrul CLR.
Asigurările făcute de către CLR la C# software-ului, cum ar fi în siguranţă de bridge decalajului dintre cod gestionat şi codul unmanaged, vine la un cost nu este susceptibil de a fi redusă.
Prin urmare, orice program care este foarte intensivă platforma (exemple: 3D de simulare sau joc, procesor de fişiere, server de reţea, etc) este posibil pentru a executa un ordin de magnitudine mai rapid decât în afara CLR executat, atunci când în cadrul CLR.
Diferenţa este uriaşă.
De asemenea, orice program care îndeplineşte o importantă sumă de scăzut nivel de manipulare a datelor se va executa în mod semnificativ mai rapid decât în afara CLR în cadrul CLR.
Programe de executarea în contextul în CLR executa ritm suficient de rapid, pentru a fi utile pentru multe scopuri practice.
Ca CPU viteze de creştere, ca şi codul de mai bine avantajul de a lua mai multe CPUs, executarea de programe în contextul în CLR va fi capabil la spre a fi utilizate pentru mai multe sarcini care necesită o rată ridicată de calcul.
Cu toate acestea, în mijlocul 2008 la CLR nu este încă potrivit pentru jocuri 3D de orice sofisticată, cu excepţia cazului în care o foarte agresive, se face un efort pentru a reduce numărul de apeluri de funcţii pentru a 3D biblioteca (OpenGL sau Direct3D), eventual prin utilizarea conceptelor cum ar fi "Shader programe" şi de a "afişa listele;" nimic pentru a reduce numărul de apeluri de funcţii.