.NET
Colin Fahey
1. Definicja .NET
Termin ".NET" odnosi się do następujących zbiór technologii:
(1) Framework Class Library (FCL)
(2) Intermediate Language (IL)
(3) Common Language Runtime (CLR)
1.1 Framework Class Library (FCL)
W Framework Class Library (FCL) jest obszerny zestaw klas do wsparcia:
* Pojemniki (Array, String, List, ...)
* Wielowątkowość (wątki, wątek baseny)
* Sieciowych (gniazda, protokoły z klientami, serwerami)
* Operacje na plikach
* Strumienie danych
* Parsowania (wyrażenia regularne, obsługa XML)
* Operacje matematyczne
* Wyjątkiem obsługi
* Język funkcje (refleksji, stóg ślad, kod dynamiczny)
W Framework Class Library (FCL) jest realizowana na wiele różnych platform ( Windows, Linux, MacOS, ... ).
Tak więc, pojedynczy program, który korzysta z Framework Class Library (FCL) może być realizowana bez istotnej wiedzy na temat różnic między docelowych platform.
W Framework Class Library (FCL) zawiera przydatne wzory podstawowych pojęć z zakresu informatyki (np. "wątek, gniazda, strumień," itp).
W pewnym sensie, Framework Class Library (FCL) daje każdego obsługiwanego systemu operacyjnego nowoczesną, na wysokim szczeblu, spójnego interfejsu programowania.
W Framework Class Library (FCL) jest jednym z najbardziej zaawansowanych, kompleksowych, jednolicie zaprojektowanych, dobrze udokumentowanych zbiorów funkcji i typów danych dostępnych dla programistów.
Niestety, następujące aspekty multimedialne nie są częścią tego Framework Class Library (FCL): nagrania audio, odtwarzanie audio, wideo nagrywania, odtwarzania wideo, 3D, joystick wejściowe, urządzenia kontroli ( CD/DVD, ... ), itp.
Microsoft ma .NET wersji z bibliotek DirectX ich Windows system operacyjny.
Istnieją C# obwolut do OpenGL, OpenAL, GLUT, SDL, itp, ale nie jest to dość wygodne, jak za takie funkcje multimedialne są ujęte w podstawowych Framework Class Library (FCL) i uwzględnione w końcowych użytkowników biblioteki "run-time."
Jednym z problemów opracowywania programów, które korzystają z bibliotek szczególności polega na tym, że zestaw przeznaczony użytkowników końcowych będzie wymagała wsparcia dla wybranych bibliotek.
Jeśli nie jest to wygodne, aby pobrać i zainstalować biblioteki niezbędne, użytkownik końcowy może zdecydować się na wykorzystanie programu nie wymagająca tych bibliotek.
Końcowego użytkownika może być również niechętnie czekać na bibliotekę do pobrania z lokalizacji w Internecie.
Jeśli program wymaga deweloper użytkowników końcowych, aby znaleźć, zdobyć, zainstalować i bibliotek, bez pomocy z danego programu, a następnie przez użytkownika końcowego nie może zdecydować się na korzystanie z programu.
Na przykład, wiele projektów open-source wymagają użytkowników końcowych, aby znaleźć, pobrać i zainstalować z wielu różnych bibliotek z innymi projektami open-source (przykłady: openssl, zlib, libpng, libjpg, glut, ...), który jest czas - konsumentami, skomplikowane, frustrujące, i może doprowadzić do końca użytkownikami wybierając się do poszukiwania alternatywnych programów lub produktów.
W "Windows Update" usługi najwyraźniej pomaga wdrożyć wersję 1.1 z .NET biblioteki run-time do Windows użytkowników.
Te biblioteki run-time są zawarte z Windows XP system operacyjny.
Dlatego, tworząc Windows programy, które wymagają .NET 1.1 wydaje się całkowicie uzasadnione.
Ponadto, biblioteki run-time dla Microsoft's implementacje w .NET Framework Class Library (FCL) mogą być swobodnie ponownie, aby deweloperzy mogą dostaw tych bibliotek do użytkowników końcowych, którzy nie mają już bibliotek.
W Windows Vista system operacyjny statków z .NET 3.0 biblioteki run-time (połączenie z .NET Framework Class Libraries i kilka nowych bibliotek, takich jak "Windows Presentation Foundation" (WPF)).
Dlatego, .NET 2.0 i wdrażania programów .NET 3.0 dla Windows Vista nie wymagają dla instalatorów .NET biblioteki run-time.
1.2 Intermediate Language (IL)
W Intermediate Language (IL) to mały zestaw prostych, niezależne od procesora, systemu operacyjnego niezależnych instrukcji, które są całkowicie wystarczające, aby wyrazić struktur danych i funkcji różnych wysokiego poziomu języków programowania ( C++, C#, F#, Visual Basic, Java, Ocaml, ... ).
Kod źródłowy napisany w języku wysokiego poziomu mogą być tworzone w dół do odpowiedniej formie "Intermediate Language".
Kod w formie "Intermediate Language" można łatwo łączyć z innymi kod w postaci "Intermediate Language".
A program komputerowy (także o nazwie "oprogramowania)" może zawierać kod źródłowy napisany w różnych językach wysokiego poziomu (np. C#, C++ i Visual Basic).
Wszystkie kod źródłowy może być skompilowany (w przeliczeniu) na "Intermediate Language" format, aby umożliwić łatwe łączenie z innymi skompilowany kod.
Programy w formie "Intermediate Language" jest zazwyczaj konwertowany do urządzeń szczegółowych instrukcji (np. instrukcji CPU) bardzo krótko przed realizacją (np. "Just-In-Time" (JIT) konwersji IL do CPU instrukcji).
Jednak programu mogą również być wykonywane w ramach Virtual Machine (VM) zaprojektowane do interpretowania Intermediate Language (IL) instrukcji.
Kod napisany w różnych językach wysokiego poziomu ( C#, F#, Ocaml, C++, Visual Basic, ... ), mogą być sporządzone na formularzu Intermediate Language (IL) za pomocą odpowiedniego kompilatora na dowolnej obsługiwanej platformie ( Windows, Linux, MacOS X, ... ), a plik wynikowy z Intermediate Language (IL) kod osadzony, jest niezależne od platformy i mogą być wykonywane na dowolnej platformie o wprowadzenia w życie .NET Common Language Runtime (CLR).
W Intermediate Language (IL) kod generowany przez kompilator jest zasadniczo niezależne od platformy, na której kompilator został wykonany.
1.3 Common Language Runtime (CLR)
W Common Language Runtime (CLR) mechanizm jest odpowiedzialny za wykonanie kodu złożone w formie Intermediate Language (IL).
W Common Language Runtime (CLR) oferuje różne usługi.
W Common Language Runtime (CLR) mogły zostać zamienione Intermediate Language (IL) kod do instrukcji, które są rodzime dla platformy (np. CPU instrukcji).
Konwersja z Intermediate Language (IL) do konkretnych platform (np. CPU specyficzne) instrukcje mogą się zdarzyć z wyprzedzeniem o wszelkich egzekucji (tzn., "Ahead-Of-Time" (AOT) konwersji), lub może się zdarzyć, stopniowo, jako program wykonywany (tzn. "Just-In-Time" (JIT) konwersji) .
W Just-In-Time (JIT) konwersji można użyć zmieniających się statystyki dotyczące realizacji programu w celu optymalizacji przeliczane dynamicznie kod (np.: określenie często stosowane pętle i oddziałów, zgodnie z ich optymalizacji obserwowane zachowanie (co zależy od bieżących danych i zdarzeń)).
W Common Language Runtime (CLR) zarządza pamięcią przyznane na rzecz programu.
W związku z tym, CLR zapewnia, że program nie jest nie do dostępu przyznane pamięci podczas takich odniesień do pamięci nie zniknie, i zapewnia, że pamięć przydziały są anulowane, i że pamięć jest ponownie udostępnione dla przyszłych przydziałów po program usuwa wszystkie odniesienia do takich przydziałów .
W Common Language Runtime (CLR) program wykrywa, kiedy nie ma już odniesienia do alokacji pamięci, przydział pamięci i jest oznaczona na deallocation.
W Common Language Runtime (CLR) używa żadnej z różnych algorytmów "zbierania śmieci" (np.: "mark-and-sweep") w celu zidentyfikowania i odzyskać pamięć nie blokuje już dostępne przez program.
W Common Language Runtime (CLR) program obsługuje wyjątki.
W Common Language Runtime (CLR) egzekwuje zasady bezpieczeństwa.
W Common Language Runtime (CLR) używa mechanizmu "P/Invoke" ładunkowej specyficznych bibliotek i powołać (call) funkcji tych bibliotek.
2. .NET ( FCL, IL, CLR ) implementacji przez Microsoft
2.1 Wstęp
W .NET paradygmatu ( FCL, IL, CLR ) został wdrożony przez Microsoft.
Najnowsza wersja, "3.0", została wydana w 2006.10.
.NET 3.0 składa się z .NET 2.0 Framework Class Libraries i kilka nowych bibliotek, takich jak "Windows Presentation Foundation" (WPF) związane z "Silverlight" (dawniej WPF/E, dawniej Sparkle, ...) wtyczki do przeglądarki Firefox i Internet Explorer.
Microsoft dzieli .NET 2.0 oprogramowania w dwóch różnych pakietów:
(1) .NET Framework Version 2.0 Redistributable Package
Na pakiet redystrybucyjny jest wymagane przez użytkowników końcowych, aby wykonać programy zbudowane na .NET paradygmatu. Pakiet ten musi być również zainstalowany przez deweloperów przed zainstalowaniem i przy użyciu .NET Software Development Kit (SDK) wymienionych poniżej.
(2) .NET Framework Version 2.0 Software Development Kit
The Software Development Kit (SDK) jest wymagane przez programistów do kompilacji kodu źródłowego C# do Intermediate Language (IL) program files.
Pakiet ten zawiera różne rozwoju narzędzi i dokumentacji.
2.2 .NET Framework Version 2.0 Redistributable Package
Na pakiet redystrybucyjny jest wymagane przez użytkowników końcowych, aby wykonać programy zbudowane na .NET paradygmatu.
Pakiet ten musi być również zainstalowany przez deweloperów przed zainstalowaniem i przy użyciu .NET Software Development Kit (SDK) wymienionych poniżej.
W poniższej stronie internetowej jest głównym .NET pobrać stronę:
W sekcji o nazwie ".NET Framework Version 2.0 Redistributable Package" ma powiązania trzech platformach sprzętowych: "Download x86 version", "Download x64 version", "Download IA64 version".
Na przykład, po "Download x86 version" link prowadzi do strony uprawnione "Microsoft .NET Framework Version 2.0 Redistributable Package (x86)"
(Nazwa pliku: dotnetfx.exe; Wersja: RC1; Data wydania: 3/22/2006; Język: Angielski; Pobierz Rozmiar: 22.4 MB)
Lokalnie buforowana wersja (tylko dla odniesienia; potencjalnie przestarzałe):
(Nazwa pliku została zmieniona tutaj z oryginalnego pliku nazwa "dotnetfx.exe" mylące, aby uniknąć jej wersję instalatora 1.1 również o nazwie "dotnetfx.exe".)
2.3 .NET Framework Version 2.0 Software Development Kit (SDK)
The Software Development Kit (SDK) jest wymagane przez programistów do kompilacji kodu źródłowego C# do Intermediate Language (IL) program files.
Pakiet ten zawiera różne rozwoju narzędzi i dokumentacji.
W poniższej stronie internetowej jest głównym .NET pobrać stronę:
W sekcji o nazwie ".NET Framework Version 2.0 Software Development Kit" ma powiązania trzech platformach sprzętowych: "Download x86 version", "Download x64 version", "Download IA64 version".
Na przykład, po "Download x86 version" link prowadzi do strony uprawnione ".NET Framework 2.0 Software Development Kit (SDK) (x86)"
(Nazwa pliku: setup.exe; Wersja: 2.0; Data wydania: 11/7/2005; Język: Angielski; Pobierz Rozmiar: 354.0 MB)
Lokalnie buforowana wersja (tylko dla odniesienia; potencjalnie przestarzałe):
(Nazwa pliku została zmieniona tutaj z oryginalnego pliku nazwa "setup.exe" mylące, aby uniknąć jej wszystkie inne pliki instalacyjne o nazwie "setup.exe".)
3. Microsoft Visual C#: Integrated Development Environment (IDE) program
3.1 Wstęp
W Integrated Development Environment (IDE) program pozwala programiście edycji kodu źródłowego i wykonanie różnych narzędzi (np.: kompilator, debuger, ...) w kontekście jednego, jednoczącej program, wypełniony przydatnych wskazówek wizualnych i kontroli.
"Microsoft Visual C# 2005 Express Edition" jest bez ponoszenia żadnych kosztów (nie wymaga zapłaty) IDE dostępny do pobrania z Microsoft.
W przypadku braku rozwoju bazy danych, jest niemal niemożliwe do odróżnienia tego produktu nie kosztów z detalicznej odpowiednik, "Microsoft Visual C# 2005".
I często, jak używać produktów, profesjonalnie i recreationally, a ja jeszcze nie zauważyłem żadnych praktycznych różnicy między produktami.
3.2 Dziennik Urzędowy linki
Na stronie internetowej strony głównej:
Strona "Visual C# Express Edition" dotyczące:
Kliknij przycisk "Download Now" z prawej strony ekranu, aby wybrać opcję pobrania.
(Jedną z metod jest rozpoczęcie program instalacyjny, który ściąga pliki z Microsoft podczas każdej instalacji.
Druga metoda jest do pobrania CD-ROM "ISO" pełnego obrazu, co pozwala w przyszłości instalacji w trybie offline.
W ISO obraz, "VCS.iso" (451,837,952 bajtów; CRC 55884F2C) dla 32-bitowych x86 Angielski, mogą być spalane na CD-ROM użyciu "Nero 7 Ultra", na przykład. )
4. .NET ( FCL, IL, CLR ) wykonania przez Mono Project
4.1 Wstęp
W .NET paradygmatu ( FCL, IL, CLR ) został wdrożony przez uczestników w grupie znany jako Mono Project.
4.2 Dziennik Urzędowy linki
Projekt witryny:
Oprogramowanie do pobrania:
4.3 Lokalnie buforowanych wersji
Lokalnie buforowana wersja instalatora (tylko dla odniesienia; potencjalnie przestarzałe):
4.4 .NET 2.0 rozwoju z Mono
W "mcs" kompilator, i dokumentacji, jak w listopadzie 2006, w większości odnoszą się do C# 1.0 i FCL 1.1.
Jednakże, "mcs" kompilator jest w stanie skompilować C# 2.0 kod, który nie zawiera ani uniwersalne oparte na funkcji, lecz ogranicza API do 1.0.
W tym pełnym C# 2.0 rozwoju, z FCL 2.0 bibliotekach, korzystania z "gmcs" kompilatora.
Zobacz następującą stronę Mono na stronie:
5. SharpDevelop: open-source Integrated Development Environment (IDE) program
5.1 Wstęp
W Integrated Development Environment (IDE) program pozwala programiście edycji kodu źródłowego i wykonanie różnych narzędzi (np.: kompilator, debuger, ...) w kontekście jednego, jednoczącej program, wypełniony przydatnych wskazówek wizualnych i kontroli.
SharpDevelop jest dobre, open-source IDE program dla C# / .NET rozwoju.
Tę IDE ściśle podobny do Microsoft Visual C# IDE, aw niektórych aspektach, SharpDevelop IDE uległa poprawie po Microsoft produktu.
Jednakże, Microsoft Visual C# ma kilka cech (przykład: debugowanie) SharpDevelop, że program nie ma (w momencie pisania tego tekstu).
5.2 Dziennik Urzędowy linki
W prosty stronie internetowej strony głównej:
Strona "The Open Source Development Environment for .NET" dotyczące:
W pobrać stronę, która ma informacji na temat 1.1 i 2.0 wersji SharpDevelop:
5.3 Lokalnie buforowanych wersji
Lokalnie buforowana wersja instalatora (tylko dla odniesienia; potencjalnie przestarzałe):
6. Przydatne C# / .NET / IL narzędzia
6.1 SciTech Software ".NET Memory Profiler"
To pokazuje, profiler alokacji pamięci i innych zasobów, przydziały, że program skompilowany .NET lub montaż sprawia, że podczas gdy wykonanie.
W czasie rzeczywistym wykres pozwala osobie, aby zobaczyć, szczegółowo, w jaki sposób działania programu (takich jak działania wywoływane przez użytkownika lub innych zdarzeń) wpływa na przydział pamięci i zbierania śmieci.
W czasie rzeczywistym pozwala wyświetlić tabelę w wykazie osoby, aby dowiedzieć się szczegółów na temat alokacji pamięci.
Tę profiler natychmiast, i dramatycznie, ujawniła marnotrawstwa wykorzystania pamięci w czasie rzeczywistym Direct3D program miałem rozwiniętych.
W strukturze górę rampy i nagłe spada (ze względu na "zbieranie śmieci)" w pamięci wykresów doskonale dopasowane okresowych, bardzo krótki, przerw w 3D rysunek mojego programu.
Profiler pozwoliło mi odkryć, że częste przydziału tymczasowych obiektów zostało nagromadzone dużo pamięci, uruchamiający Garbage collection często, i biorąc wystarczająco dużo czasu dla każdego Garbage collection spowodować rysunku kilka okresów, które mają być pominięte.
Profiler w czasie rzeczywistym tabeli przyznanych typów obiektów ujawniło rodzajów obiektów, które spożywane w większości pamięci, a które spożywane alokacji pamięci przy zastosowaniu najwyższej stawki (w bajtach na sekundę), który miał najwyższy przydziały usuwania stawki.
Studia w czasie rzeczywistym, wykresy i tabele w czasie rzeczywistym, pozwoliło mi skupić się na studiach, w jaki sposób niektóre typy danych są wykorzystywane w mój kod.
Modyfikowanie kodu w celu uniknięcia częstych przydziału tymczasowych obiektów może znacznie zmniejszyć ogólny poziom alokacji pamięci i unieszkodliwiania, a zatem może zmniejszyć częstotliwość zbierania śmieci uruchamiający.
(Wierzę "Bytes/sec" jest bardzo ujawniających statystyki w czasie rzeczywistym użycia pamięci, w uzupełnieniu do "Live instances".
) Widząc wszystkie te są aktualizowane bardzo szybko w formacie tabeli i są w stanie wybrać jak wiersze są posortowane, sortowania i zmiany parametrów w każdej chwili, sprawia, że doświadczenie studiowania w czasie rzeczywistym program bardzo angażują i informacyjną.
Alokacji pamięci odpowiedzi na interakcji użytkownika z uruchomionych programów może być badany, a badania można szybko przystosować się do opinii, aby zawęzić najbardziej interesujący aspekt.
(Na przykład, 2006 July wersja miała następujące atrybuty: wersja 2.6.89; 4.3 MB; USA $127.00; Pobierz 14-dniowy limit wersji, bez żadnych kosztów, do oceny.)
6.2 FxCop: .NET Kod analizator / krytyk
FxCop analizuje .NET skompilowany program (skompilowany lub montaż) oraz generuje raport aukcji możliwe problemy z oryginalnego kodu źródłowego.
Możliwe problemy wydajności i problemów bezpieczeństwa są identyfikowane.
Ewentualne naruszenia konwencji kodowania są identyfikowane.
FxCop nie wymaga dostępu do oryginalnego kodu źródłowego do przeprowadzenia analizy.
Tylko .NET skompilowany program (który zawiera IL) jest wymagane.
Niemniej jednak, raport FxCop oferuje linki do konkretnych numerów linii w oryginalnym kodzie źródłowym.
Jeśli Microsoft Visual C# 2005 IDE jest aktywny, klikając na odsyłacz w FxCop raportu spowoduje IDE do osnowy do odpowiedniego pliku źródłowego oraz numer wiersza.
FxCop ma, moim zdaniem, dość nietypowej drodze do integracji z Microsoft Visual C# 2005 IDE.
Jednakże, po jego utworzeniu, FxCop produkuje bardzo ciekawe i potencjalnie cenne-raport.
Raport zawiera szczegółowe wskazówki na temat sposobów poprawy oryginalnego kodu źródłowego.
Myślę, że warto analizować program przy użyciu FxCop na podstawie okresowych.
I nie zdziw się, jeśli niektóre programy lub projekty rozwoju przedsiębiorstw wszystkie wymagane kodu napisanego przez programistów do plon nie ostrzeżenia lub przez krytykę FxCop.
Zasady mogą być dodawane lub usuwane z bazy danych FxCop, stosownie do potrzeb.
FxCop jest open-source, bezpłatny program.
6.3 "Reflector for .NET": decompiler / analizator
Od Lutz Roeder's stronie internetowej:
"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" może pomóc osobie zbadania, w jaki sposób strony trzeciej biblioteki są zapisywane.
Czasami byłoby bardzo przydatne wiedzieć dokładnie, jak metoda w zestawie jest realizowany.
Jeżeli zachowuje się w sposób nieoczekiwany lub tajemniczy sposób, "Reflector" następnie mogą zostać wykorzystane do wykonania zobaczyć.
Do zobaczenia w realizacji, programista może obejść problemy wynikające ze szczególnych metod implementacji biblioteki.
Znajomy powiedział mi, że pomógł mu "Reflector" dowiedzieć się więcej o zachowanie słabo udokumentowanych metod w realizacji Microsoft z Framework Class Libraries (FCL).
"Reflector" mogą być pomocne przy dokumentacji biblioteki metoda polega tylko kilka słów, takich jak "ustawia wartość" lub "obsługi zdarzeń."
Jeśli wywołania funkcji biblioteki jest nie do nieznanego powodu (w przypadku gdy wszystkie parametry wydają się ważne), a następnie za pomocą "Reflector" spojrzeć na realizacji funkcji biblioteki może ujawnić przyczyny niepowodzenia.
"Reflector" wykonuje niektóre "reverse engineering" na .NET program lub montażu.
Inne narzędzia, ewentualnie w tym samym "Reflector", mogą przynieść kodu źródłowego programów lub zespołów zbudowana w oparciu o kod źródłowy ukrywane.
Jest to oczywiście źródłem niepokoju dla niektórych deweloperów i inwestorów.
(2006 July: Reflector.zip była wersja 4.2.45.0)
7. Internet fora dyskusyjne
Google wyszukiwanie jest najlepszym sposobem znalezienia odpowiedzi na konkretne pytania na każdy temat, ale poniżej witryn wielokrotnie pojawiają się w wynikach wyszukiwania dla C# i .NET pytania.
W witrynach poniżej are awesome na odkrywanie wielu fajne rzeczy ludzie mają zrobić z C# i .NET.
"The Code Project" witryna ma tysiące ciekawych i użytecznych artykułów, C#, C++, a także innych języków i paradygmatów programowania.
W "MSDN Code Gallery" witryna ma wiele interesujących artykułów i kodu związane z Microsoft technologii.
Inne strony internetowe związane z C# i .NET:
8. Uwagi ogólne
8.1 Platforma niezależności
W Intermediate Language (IL), jak Java "bajt kodu," jest niezależna od platformy.
Wszelkie .NET zgodnych kompilator wygeneruje niezależna od platformy Intermediate Language (IL) kod do postaci programów lub zespołów.
Programy pakowane jako pliki wykonywalne (pliki "*.exe") musi posiadać pewne zależne od platformy kod specyficzne dla systemu operacyjnego, w celu są właściwie interpretowane i rozpoczęła jako plik wykonywalny oprogramowania w kontekście danego systemu operacyjnego.
Jednakże, native wykonywalny część oprogramowania pliku służy jedynie do powołania się na .NET CLR silnika, składaniu IL kodu zawartego w pliku oprogramowania do realizacji przez CLR silnika.
Microsoft oferuje wdrożenia w .NET użyteczności publicznej (kompilator, ...), i wprowadzenia w życie Framework Class Library (FCL), tylko dla Windows system operacyjny.
W Mono Project oferuje implementacje w .NET użyteczności publicznej (kompilator, ...), i implementacje w Framework Class Library (FCL), dla następujących systemów operacyjnych: Windows, Linux, MacOS X i BSD.
8.2 Prędkość w porównaniu z non-CLR C / C++
W Common Language Runtime (CLR) aspekt .NET jest kontekst, w którym realizuje program C#.
W CLR wykonuje "Garbage collection" i umożliwia programy do powoływania funkcji "niezarządzanych" bibliotek (wszystkich bibliotek nie wdrożone w Intermediate Language (IL)).
Każda funkcja w nie więcej niż czystej matematyki, czystego ciąg manipulacji, kopiowanie lub czystej pamięci, będzie powoływać funkcji "niezarządzanych" bibliotek.
Wszystkie operacje na plikach, operacje gniazda, rysunek operacje, operacje wejściowe (mysz, klawiatura), wyjście operacji (konsola), platforma wątek operacji, precyzji działania czasomierza, windowing operacji, itp, będzie powoływać funkcji "niezarządzanych bibliotek."
Niestety, mechanizm wywołania funkcji "niezarządzanych" z CLR wymaga znacznej ilości czasu.
W związku z tym, ogólna szybkość programu wykonującego w ramach CLR jest noticably wolniej niż program, który może powołać się bezpośrednio funkcji "niezarządzanych."
Dla niektórych rodzajów oprogramowania, prędkość może być ważne.
Dla niektórych rodzajów oprogramowania, prędkości może stanowić istotną różnicę w subiektywne doświadczenie psychologiczne lub za osobę za pomocą oprogramowania.
Dla niektórych rodzajów oprogramowania, prędkość może różnica między celem osiągnięcia i porażki.
Wielowątkowa, CPU zwiększenie prędkości i poprawę CLR do generowania kodu obiektu, pomoże oprogramowanie wykonujące w ramach CLR wykonać szybciej.
Niemniej jednak, każdy kod, który jest wykonywany poza CLR, biblioteki i powołuje platformy bezpośrednio z pewnością będzie wykonywać znacznie szybciej niż oprogramowanie, które wykonuje w ramach CLR.
Gwarancje złożone przez CLR do C# oprogramowania, takich jak bezpiecznie pomost pomiędzy zarządzanych i niezarządzanych kod kod, jest w cenie, że jest mało prawdopodobne, aby zostać zmniejszona.
Dlatego, że każdy program jest bardzo intensywny platformy (przykłady: 3D symulacji lub gra, procesor plików, serwer sieciowy, itp.) może wywołać rząd wielkości szybciej niż poza CLR gdy wykonywane w ramach CLR.
Różnica jest ogromna.
Ponadto, każdy program, który wykonuje znaczną kwotę niskiego poziomu manipulacji danymi będą wykonywać znacznie szybciej niż na zewnątrz CLR w CLR.
Programy wykonujące w ramach wykonania CLR wystarczająco szybko, aby być przydatne do wielu praktycznych celów.
W CPU zwiększenie prędkości, jak i kod staje się lepiej korzystać z wielu CPUs, programy wykonujące w ramach CLR będą mogły być używane na więcej zadań, które wymagają wysokiej stopy obliczeń.
Jednakże, w środku 2008 w CLR nadal nie jest odpowiedni dla gier 3D wszelkich wyrafinowanie, bardzo agresywne, chyba że podejmowane są wysiłki w celu zmniejszenia liczby funkcja zwraca się do biblioteki 3D (OpenGL lub Direct3D), ewentualnie za pomocą pojęć, takich jak "programów shaderowych" i "wyświetlania listy;" nic do zmniejszenia liczby funkcji.