.NET
Colin Fahey
1. Definitie van .NET
„.NET“ De term verwijst naar de volgende verzameling van technologieën:
(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) is een uitgebreide set van klassen voor de ondersteuning van:
* Containers (Array, String, List, ...)
* Multithreading (threads, thread pools)
* Networking (sockets, protocollen, clients, servers)
* Bestand operaties
* Data streams
* Parsing (reguliere expressies, XML behandeling)
* Wiskunde activiteiten
* Exception handling
* Taal kenmerken (reflectie, stack trace, dynamische code)
De Framework Class Library (FCL) wordt uitgevoerd voor verschillende platforms ( Windows, Linux, MacOS, ... ).
Zo is een programma dat gebruik maakt van de Framework Class Library (FCL) kan worden ontwikkeld zonder noemenswaardige kennis van de verschillen tussen de doel platformen.
De Framework Class Library (FCL) bevat bruikbare modellen van de fundamentele concepten van de informatica (zoals „draad, stopcontact, stroom,“ etc).
In zekere zin is de Framework Class Library (FCL) geeft elk ondersteund besturingssysteem een moderne, op hoog niveau, die in overeenstemming zijn programmeer-interface.
De Framework Class Library (FCL) is een van de meest geavanceerde, uitgebreide, op uniforme wijze ontworpen, goed gedocumenteerde collecties van functies en data types beschikbaar voor programmeurs.
Helaas is de volgende multimedia aspecten maken geen deel uit van de Framework Class Library (FCL): audio-opname, het afspelen van audio-, video-opname, video, 3D-rendering, joystick input, controle-apparaat ( CD/DVD, ... ), enz.
Microsoft heeft een .NET versie van de DirectX bibliotheken voor hun Windows besturingssysteem.
Er zijn C# wrappers voor OpenGL, OpenAL, GLUT, SDL, etc, maar dat is niet zo handig als die een dergelijke multimedia-functies worden opgenomen in de kern Framework Class Library (FCL) en opgenomen in de eindgebruiker „run-time“ bibliotheken.
Een van de problemen van de ontwikkeling van programma's die gebruik maken name bibliotheken is de bedoeling dat de set van de eindgebruikers zal de steun voor de geselecteerde bibliotheken.
Als het niet handig om te downloaden en te installeren die nodig zijn bibliotheken, een eind-gebruiker kan ervoor kiezen om geen gebruik maken van een programma waarbij deze bibliotheken.
Een eindgebruiker kan ook niet geneigd om te wachten op een bibliotheek voor het downloaden van een online locatie.
Als een programma ontwikkelaar vereist een eindgebruiker te vinden, te verkrijgen, te installeren en bibliotheken, allen zonder hulp van een bepaald programma, dan is de eindgebruiker kunnen kiezen om geen gebruik van het programma.
Zo zijn veel open-source projecten vereisen eindgebruikers te zoeken, downloaden en installeren, veel verschillende bibliotheken van andere open source-projecten (voorbeelden: openssl, zlib, libpng, libjpg, glut, ...), die tijd in beslag, ingewikkeld, frustrerend, en kan resulteren in de keuze van de eindgebruikers om te zoeken naar alternatieve programma's of producten.
De „Windows Update“ service blijkbaar helpt inzetten versie 1.1 van de .NET run-time bibliotheken te Windows gebruikers.
Deze run-time bibliotheken zijn opgenomen met de Windows XP besturingssysteem.
Daarom is het creëren van Windows programma's die .NET 1.1 is zeer zinvol.
Ook de run-time bibliotheken voor Microsoft's implementaties van de .NET Framework Class Library (FCL) vrij moeten kunnen worden herverdeeld, zodat de ontwikkelaars van deze bibliotheken kunnen leveren aan eindgebruikers die nog niet beschikken over de bibliotheken.
De Windows Vista besturingssysteem wordt geleverd met de .NET 3.0 run-time bibliotheken (een combinatie van de .NET Framework Class Libraries en verschillende nieuwe bibliotheek zoals de „Windows Presentation Foundation“ (WPF)).
Daarom is het inzetten van .NET 2.0 en .NET 3.0 programma's voor Windows Vista niet vereist dat de installateurs voor de .NET run-time bibliotheken.
1.2 Intermediate Language (IL)
De Intermediate Language (IL) is een kleine set van eenvoudige, processor-onafhankelijk, de exploitatie-systeem-onafhankelijke instructies die toereikend zijn voor volledig uitdrukkelijk de data structuren en functies van verschillende hoog niveau programmeertalen ( C++, C#, F#, Visual Basic, Java, Ocaml, ... ).
Bron code geschreven in een hoog-niveau taal kan worden samengesteld tot een overeenkomstige „Intermediate Language“ vorm.
Code in een „Intermediate Language“ vorm kunnen gecombineerd worden met andere code in een „Intermediate Language“ vorm.
Een computerprogramma (ook wel „software)“ kan ook de broncode geschreven in verschillende talen op hoog niveau (bijvoorbeeld C#, C++, en Visual Basic).
Alle broncode kan worden vergaard (omgerekend) „Intermediate Language“ naar een formaat dat het makkelijk te combineren met andere gecompileerde code.
Programma's in een „Intermediate Language“ vorm is meestal omgezet naar machine-specifieke instructies (bijvoorbeeld CPU instructies) zeer kort voor uitvoering (bijvoorbeeld „Just-In-Time“ (JIT) omschakeling van IL te CPU instructies).
Maar een programma kan ook worden uitgevoerd in het kader van een Virtual Machine (VM) bedoeld als interpretatie Intermediate Language (IL) instructies.
Code geschreven in verschillende talen op hoog niveau ( C#, F#, Ocaml, C++, Visual Basic, ... ), kan worden opgesteld om Intermediate Language (IL) vorm met behulp van een geschikte compiler op elk platform ondersteund ( Windows, Linux, MacOS X, ... ), en de resulterende bestand, met geïntegreerde Intermediate Language (IL) code, is platform-onafhankelijk en kan uitvoeren op ieder platform met een uitvoering van de .NET Common Language Runtime (CLR).
De Intermediate Language (IL) code wordt gegenereerd door de compiler is in essentie onafhankelijk van het platform waarop de compiler is uitgevoerd.
1.3 Common Language Runtime (CLR)
De Common Language Runtime (CLR) het mechanisme is verantwoordelijk voor het uitvoeren van code die in de Intermediate Language (IL) vorm.
De Common Language Runtime (CLR) biedt verschillende diensten.
De Common Language Runtime (CLR) mei converteren Intermediate Language (IL) code naar instructies die zijn vaderland aan het platform (bijvoorbeeld, CPU instructies).
De omzetting van de Intermediate Language (IL) tot platform-specifieke (bijvoorbeeld CPU-specifieke) voorschriften kan gebeuren in kennis van de uitvoering (dat wil zeggen, een „Ahead-Of-Time“ (AOT) conversie), of kan geleidelijk gebeuren, zoals het programma uitvoert (dat wil zeggen, „Just-In-Time“ (JIT) conversie) .
De Just-In-Time (JIT) conversie kunt gebruiken evoluerende statistieken over de programma uitvoering dynamisch te optimaliseren het omgerekende code (bijvoorbeeld: het identificeren van vaak gebruikte loops en vestigingen, en het optimaliseren van hen volgens de waargenomen gedrag (die zelf afhankelijk is van de huidige gegevens en evenementen)).
De Common Language Runtime (CLR) beheert toegewezen geheugen voor rekening van het programma.
Daarom is de CLR zorgt ervoor dat het programma niet nalaten om toegang te krijgen tot het geheugen toegewezen, terwijl verwijzingen naar dergelijke geheugen blijft bestaan, en zorgt ervoor dat het geheugen toegewezen worden geannuleerd, en dat het geheugen weer beschikbaar worden gesteld voor toekomstige toewijzingen na het programma beschikt over alle verwijzingen naar dergelijke toewijzingen .
De Common Language Runtime (CLR) detecteert wanneer het programma niet langer een verwijzing naar een geheugen van toewijzing, en het geheugen van de toewijzing is gemarkeerd voor deallocation.
De Common Language Runtime (CLR) gebruik van een verscheidenheid van „afval inzamelen“ algoritmen (bijvoorbeeld: „mark-and-sweep“) op te sporen en te recupereren, geheugen blokken niet meer toegankelijk zijn met een programma.
De Common Language Runtime (CLR) handvatten programma uitzonderingen.
De Common Language Runtime (CLR) afdwingt veiligheidsbeleid.
De Common Language Runtime (CLR) maakt gebruik van de „P/Invoke“ mechanisme te laden platform-specifieke bibliotheken en beroepen (call) functies binnen de bibliotheken.
2. .NET ( FCL, IL, CLR ) implementaties door Microsoft
2.1 Inleiding
De .NET paradigma ( FCL, IL, CLR ) is uitgevoerd door Microsoft.
De nieuwste versie, „3.0“, werd uitgebracht in 2006.10.
.NET 3.0 is samengesteld uit de .NET 2.0 Framework Class Libraries en verschillende nieuwe bibliotheken, zoals de „Windows Presentation Foundation“ (WPF) in verband met de „Silverlight“ (voorheen WPF/E, voorheen Sparkle, ...) browser plugin voor Firefox en Internet Explorer.
Microsoft verdeelt de .NET 2.0 software in twee verschillende pakketten:
(1) .NET Framework Version 2.0 Redistributable Package
De herdistributiepakket pakket is vereist door de eindgebruikers uit te voeren programma's gebouwd voor de .NET paradigma. Dit pakket moet ook worden geïnstalleerd door de opdrachtgever vóór de installatie en het gebruik van de .NET Software Development Kit (SDK) hieronder vermeld.
(2) .NET Framework Version 2.0 Software Development Kit
De Software Development Kit (SDK) vereist is door de ontwikkelaars om te compileren C# broncode te Intermediate Language (IL) program files.
Dit pakket bevat verschillende ontwikkeltools en documentatie.
2.2 .NET Framework Version 2.0 Redistributable Package
De herdistributiepakket pakket is vereist door de eindgebruikers uit te voeren programma's gebouwd voor de .NET paradigma.
Dit pakket moet ook worden geïnstalleerd door de opdrachtgever vóór de installatie en het gebruik van de .NET Software Development Kit (SDK) hieronder vermeld.
De volgende Internet-pagina is het belangrijkste .NET download pagina:
De afdeling heeft de naam „.NET Framework Version 2.0 Redistributable Package“ links voor drie hardwareplatformen: „Download x86 version“, „Download x64 version“, „Download IA64 version“.
Bijvoorbeeld, de volgende link „Download x86 version“, leidt naar een pagina getiteld „Microsoft .NET Framework Version 2.0 Redistributable Package (x86)“
(File Name: dotnetfx.exe; Versie: RC1; Publicatiedatum: 3/22/2006; Taal: Engels; Download Grootte: 22.4 MB)
Lokaal versie in het cachegeheugen (alleen voor referentie; potentieel verouderde):
(De naam is veranderd hier uit de oorspronkelijke naam van „dotnetfx.exe“ te voorkomen dat verwarring met de versie 1.1 installateur ook de naam „dotnetfx.exe“.)
2.3 .NET Framework Version 2.0 Software Development Kit (SDK)
De Software Development Kit (SDK) vereist is door de ontwikkelaars om te compileren C# broncode te Intermediate Language (IL) program files.
Dit pakket bevat verschillende ontwikkeltools en documentatie.
De volgende Internet-pagina is het belangrijkste .NET download pagina:
De afdeling heeft de naam „.NET Framework Version 2.0 Software Development Kit“ links voor drie hardwareplatformen: „Download x86 version“, „Download x64 version“, „Download IA64 version“.
Bijvoorbeeld, de volgende link „Download x86 version“, leidt naar een pagina getiteld „.NET Framework 2.0 Software Development Kit (SDK) (x86)“
(File Name: setup.exe; Versie: 2.0; Publicatiedatum: 11/7/2005; Taal: Engels; Download Grootte: 354.0 MB)
Lokaal versie in het cachegeheugen (alleen voor referentie; potentieel verouderde):
(De naam is veranderd hier uit de oorspronkelijke naam van „setup.exe“ te voorkomen dat verwarring met alle andere installatie bestanden genaamd „setup.exe“.)
3. Microsoft Visual C#: een Integrated Development Environment (IDE) programma
3.1 Inleiding
Een Integrated Development Environment (IDE) programma kan een ontwikkelaar voor het bewerken van de source code en voer de verschillende instrumenten (voorbeelden: compiler, debugger, ...) binnen de context van een enkele, eenmakende programma, vol met nuttige visuele aanduidingen en controles.
„Microsoft Visual C# 2005 Express Edition“ is een no-kosten (geen betaling vereist) IDE beschikbaar voor download op de Microsoft.
Voor niet-database ontwikkeling, is het bijna onmogelijk een onderscheid te maken tussen deze niet-cost product uit de retail tegenhanger, „Microsoft Visual C# 2005“.
Ik vaak gebruik maken van beide producten, professionele en recreatieve doeleinden, en ik heb nog niet gemerkt geen praktisch verschil tussen de producten.
3.2 Officiële links
De internetsite van de belangrijkste pagina:
De pagina met betrekking tot „Visual C# Express Edition“:
Klik op de knop „Download Now“ aan de rechterkant van de pagina te kiezen voor een download-optie.
(Een methode is om te beginnen met een installer programma met downloaden van bestanden van Microsoft tijdens elke installatie.
Een tweede methode is voor het downloaden van een volledige CD-ROM „ISO“ beeld, die het mogelijk maakt toekomstige offline installatie.
De ISO beeld, „VCS.iso“ (451,837,952 bytes; CRC 55884F2C) voor 32-bit x86 Engels, kan worden gebrand op een CD-ROM met behulp van „Nero 7 Ultra“, bijvoorbeeld. )
4. .NET ( FCL, IL, CLR ) uitvoering door de Mono Project
4.1 Inleiding
De .NET paradigma ( FCL, IL, CLR ) is uitgevoerd door de deelnemers in een groep bekend als de Mono Project.
4.2 Officiële links
Project site:
Software download pagina:
4.3 Lokaal versie in het cachegeheugen
Lokaal in het cachegeheugen opgeslagen versie van het installatieprogramma (alleen voor referentie; potentieel verouderde):
4.4 .NET 2.0 ontwikkeling met Mono
De „mcs“ compiler, en de documentatie, met ingang van november 2006, voornamelijk betrekking hebben op C# 1.0 en FCL 1.1.
Echter, de „mcs“ compiler is in staat om te compileren C# 2.0 code die geen generieke geneesmiddelen, op basis van generieke functies, maar beperkt de API te 1.0.
Om de volledige C# 2.0 ontwikkeling, met FCL 2.0 bibliotheken, het gebruik van de „gmcs“ compiler.
Zie de volgende pagina op de site Mono:
5. SharpDevelop: een open-source programma Integrated Development Environment (IDE)
5.1 Inleiding
Een Integrated Development Environment (IDE) programma biedt een ontwikkelaar voor het bewerken van de source code en voer de verschillende instrumenten (voorbeelden: compiler, debugger, ...) binnen de context van een enkele, eenmakende programma, vol met nuttige visuele aanduidingen en controles.
SharpDevelop is een uitstekende, open-source IDE programma voor C# / .NET ontwikkeling.
Dit IDE lijkt op het Microsoft Visual C# IDE, en in sommige opzichten de SharpDevelop IDE is verbeterd na de Microsoft product.
Maar Microsoft Visual C# heeft een aantal functies (bijvoorbeeld: het opsporen van fouten) dat de SharpDevelop programma niet hebben (op het moment van schrijven).
5.2 Officiële links
De eenvoudige website hoofdpagina:
De pagina met betrekking tot „The Open Source Development Environment for .NET“:
De download pagina, die details over de 1.1 en 2.0 versies van SharpDevelop:
5.3 Lokaal versie in het cachegeheugen
Lokaal in het cachegeheugen opgeslagen versie van het installatieprogramma (alleen voor referentie; potentieel verouderde):
6. Nuttige C# / .NET / IL tools
6.1 SciTech Software „.NET Memory Profiler“
Dit blijkt profiler geheugen toegewezen, en andere toewijzing van de middelen, dat een samengesteld .NET programma of de montage maakt bij het uitvoeren.
De real-time grafiek maakt het mogelijk om een persoon te zien, in detail, hoe de acties van het programma (zoals de acties naar aanleiding van input van de gebruiker of andere evenementen) van invloed op het geheugen toewijzing en afval inzamelen.
De real-time tabel met het oog maakt het mogelijk om een persoon te leren informatie over het geheugen van de toewijzingen.
Dit profiler direct en drastisch, bleek verspillende geheugen gebruik in een real-time Direct3D programma Ik had ontwikkeld.
Een patroon van stijgende vlonders en plotseling daalt (als gevolg van de „inzameling restafval)“ in het geheugengebruik grafieken gevonden die perfect met periodieke, met zeer korte pauzes in de 3D-tekening van mijn programma.
De profiler me in staat om te ontdekken dat veelvuldig toewijzing van tijdelijke voorwerpen was de accumulatie van veel geheugen, triggering garbage collectie vaak, en met voldoende tijd voor elke vuilnis collectie te veroorzaken een paar tekening perioden te missen.
De profiler is real-time overzicht van de toegewezen object types bleek de aard van de voorwerpen die het meest wordt verbruikt geheugen, en die toewijzingen verbruikt geheugen op het hoogste tarief (bytes per seconde), en die toewijzingen had het hoogste percentage ter beschikking.
Het bestuderen van de real-time grafieken, en de real-time tafels, me in staat om zich te concentreren op de studie van de manier waarop bepaalde soorten gegevens werden gebruikt in mijn code.
Het aanpassen van code te voorkomen dat frequente toewijzingen van tijdelijke voorwerpen sterk kan beperken de algemene koers van het geheugen toewijzing en verwijdering, en kan dus vermindering van de frequentie van de inzameling restafval op gang brengen.
(Ik denk „Bytes/sec“ is een zeer onthullend statistiek voor real-time geheugen gebruik, in aanvulling op „Live instances“.
) Het zien van al deze zeer snel worden bijgewerkt in een tabel-formaat, en de mogelijkheid om te kiezen hoe de rijen worden gesorteerd, en het wijzigen van de sortering parameter op elk moment, maakt de ervaring van de studie van een real-time programma zeer aantrekkelijke en informatief.
Memory toewijzing reacties op de interactie van de gebruiker met een lopend programma kan worden bestudeerd, en het testen kan snel aanpassen aan de feedback te beperken-de meest interessante aspect.
(Bijvoorbeeld de 2006 July versie hadden de volgende kenmerken: versie 2.6.89; 4.3 MB; USA $127.00; Download 14 dagen-limiet versie, zonder kosten, voor de evaluatie.)
6.2 FxCop: .NET code analyzer / criticus
FxCop analyseert een samengesteld .NET programma (of verzameld montage) en genereert een rapport aanbieden van mogelijke problemen met de originele broncode.
Mogelijke problemen met de prestaties en de veiligheid problemen worden vastgesteld.
Mogelijke codering conventie overtredingen worden geconstateerd.
FxCop geen toegang tot de originele broncode voor het uitvoeren van de analyse.
Alleen de .NET gecompileerde programma (dat IL) is vereist.
Toch zijn de FxCop verslag biedt hyperlinks naar specifieke nummers in de originele broncode.
Als de Microsoft Visual C# 2005 IDE actief is, te klikken op de hyperlink in de FxCop verslag zal ertoe leiden dat de IDE te warp naar de relevante bron-bestand en regelnummer.
FxCop heeft, naar mijn mening een nogal ongemakkelijke manier van integreren met de Microsoft Visual C# 2005 IDE.
Echter, zodra het is opgericht, FxCop produceert een zeer interessante en potentieel waardevolle verslag.
Het rapport bevat gedetailleerde adviezen over de manier waarop het verbeteren van de originele broncode.
Ik denk dat het de moeite waard te analyseren met behulp van een programma FxCop op periodieke basis.
Ik zou niet verbaasd zijn als sommige software-ontwikkeling projecten of bedrijven verplicht alle code geschreven door ontwikkelaars aan opbrengst geen waarschuwingen of kritiek door FxCop.
Regels kunnen worden toegevoegd of verwijderd uit de database FxCop, volgens de behoeften.
FxCop is een open-source, gratis programma.
6.3 „Reflector for .NET“: decompiler / Analyzer
Van Lutz Roeder's Internet site:
"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“ kunnen helpen een persoon onderzoeken hoe een derde partij bibliotheken zijn geschreven.
Soms zou het erg nuttig om te weten precies hoe een methode in een samenstel is uitgevoerd.
Als een methode gedraagt zich op een onverwachte of mysterieuze wijze, dan „Reflector“ kan worden gebruikt om de uitvoering ervan.
Bij het zien van de uitvoering, de programmeur kan werken rond problemen als gevolg van specifieke toepassingen van de bibliotheek.
Een vriend vertelde me dat „Reflector“ hielp hem meer te weten komen over het gedrag van slecht gedocumenteerde methoden in de Microsoft uitvoering van de Framework Class Libraries (FCL).
„Reflector“ nuttig kan zijn bij de documentatie voor een bibliotheek-methode bestaat uit slechts een paar woorden, zoals „wordt de waarde“ of het „evenement af te handelen.“
Als een functie uit de bibliotheek is niet inroepen om een onbekende reden (wanneer alle parameters lijken geldig), dan wordt met behulp van „Reflector“ te kijken naar de uitvoering van de bibliotheek functie kan opmaken van de reden voor de mislukking.
„Reflector“ voert een aantal „reverse engineering“ van een .NET programma of de montage.
Andere nutsbedrijven, eventueel met inbegrip van „Reflector“ zelf, kan de opbrengst broncode van programma's of samenstellen gebouwd op basis van obfuscated source code.
Dat is natuurlijk een bron van zorg voor een aantal ontwikkelaars en hun investeerders.
(2006 July: Reflector.zip was 4.2.45.0 versie)
7. Internet discussiefora
Google zoeken is de beste manier om antwoorden te vinden op specifieke vragen over elk onderwerp, maar de sites hieronder herhaaldelijk verschijnt in de zoekresultaten voor C# en .NET vragen.
De onderstaande sites zijn fantastisch voor het verkennen van de vele leuke dingen die de mensen hebben gedaan met C# en .NET.
„The Code Project“ site heeft duizenden interessante en nuttige artikelen, voor C#, C++ en andere talen en programmeren paradigma.
De „MSDN Code Gallery“ site heeft veel interessante artikelen en codevoorbeelden die verband houden met Microsoft technologieën.
Andere Internet sites met betrekking tot C# en .NET:
8. Algemeen
8.1 Platform onafhankelijkheid
De Intermediate Language (IL), zoals Java „byte code,“ is platform onafhankelijk.
Elke .NET-conforme compiler genereert platform onafhankelijk Intermediate Language (IL) code om programma's of samenstellen.
Programma's verpakt zoals uitvoerbare bestanden („*.exe“-bestanden) moet beschikken over een aantal platform-afhankelijke code die specifiek zijn voor een besturingssysteem, met het oog op de juiste wijze wordt geïnterpreteerd en gelanceerd als uitvoerbare software in het kader van het besturingssysteem.
Maar de inheemse uitvoerbare gedeelte van de software-bestand dient slechts te beroepen op de .NET CLR motor, het indienen van de IL code die zijn vervat in de software-bestand voor de uitvoering van de CLR motor.
Microsoft biedt een implementatie van de .NET nutsbedrijven (compiler, ...), en een implementatie van de Framework Class Library (FCL), alleen voor de Windows besturingssysteem.
De Mono Project biedt implementaties van de .NET nutsbedrijven (compiler, ...), en implementaties van de Framework Class Library (FCL), voor de volgende besturingssystemen: Windows, Linux, MacOS X, en BSD.
8.2 Snelheid ten opzichte van non-CLR C / C++
De Common Language Runtime (CLR) aspect van .NET is de context waarin een C# programma uitvoert.
De CLR presteert „vuilnis verzamelen“ en programma's in staat stelt zich te beroepen op functies in „onbeheerde“ bibliotheken (alle van de bibliotheken niet geïmplementeerd in Intermediate Language (IL)).
Elke functie heeft meer dan de zuivere wiskunde, zuivere string manipulatie, of pure geheugen kopiëren, zal een beroep functies in „onbeheerde“ bibliotheken.
Alle bestand, socket, tekening, input operaties (muis, toetsenbord), output-operaties (console), platform draad, precisie-timer, vensters, etc, zal een beroep functies in „onbeheerde bibliotheken.“
Helaas, het mechanisme van het inroepen van „onbeheerde“ functies van de CLR vergt een aanzienlijke hoeveelheid tijd.
Daarom is de algehele snelheid van de uitvoering van een programma in het kader van de CLR is noticably trager dan een programma dat kan beroepen op „onbeheerde“ functies direct.
Voor bepaalde soorten software, snelheid belangrijk kan zijn.
Voor bepaalde soorten software, snelheid kan maken een belangrijk verschil in de subjectieve of psychische ervaring van een persoon die gebruik maakt van de software.
Voor bepaalde soorten software, de snelheid kan het verschil maken tussen het bereiken van een doel en mislukking.
Multithreading, het verhogen van CPU snelheden, en verbeteringen van de code te genereren CLR faciliteit, zal bijdragen tot het uitvoeren van software in het kader van de CLR sneller uitvoeren.
Echter, alle code die wordt uitgevoerd buiten de CLR, en beroept zich platform bibliotheken direct, zal onvermijdelijk voeren aanzienlijk sneller dan de software die wordt uitgevoerd binnen het kader van de CLR.
De toezeggingen die door de CLR te C# software, zoals veilig overbruggen van de kloof tussen beheerde code en onbeheerde code, komt op een kost dat waarschijnlijk niet zal worden verminderd.
Daarom is een programma dat is heel intensief platform (voorbeelden: 3D-simulatie of game bestand processor, netwerk-server, etc) is waarschijnlijk het uitvoeren van een orde van grootte sneller buiten de CLR dan wanneer uitgevoerd binnen de CLR.
Het verschil is enorm.
Ook is een programma waarmee een aanzienlijk bedrag van low-level manipulatie van de gegevens zal uitvoeren aanzienlijk sneller buiten de CLR dan binnen de CLR.
Programma's uitvoert in het kader van de CLR uitvoeren snel genoeg om bruikbaar te zijn voor vele praktische doeleinden.
Zoals CPU snelheden toenemen, en als code houdt meer voordeel van meerdere CPUs, programma's uitvoert in het kader van de CLR zal kunnen worden gebruikt voor meer taken die een hoog percentage van berekeningen.
Echter, in het midden van 2008 de CLR is nog niet geschikt zijn voor 3D-spellen van alle raffinement, tenzij een zeer agressieve inspanningen worden geleverd om het aantal oproepen naar de functie 3D-bibliotheek (OpenGL of Direct3D), mogelijk door gebruik te maken van begrippen als „Shader programma's“ en „lijsten met elkaar,“ wat tot vermindering van het aantal functie aanroepen.