.NET
Colin Fahey
1. Määritelmä .NET
Termi ".NET" viittaa seuraaviin kokoelma tekniikoita:
(1) Framework Class Library (FCL)
(2) Intermediate Language (IL)
(3) Common Language Runtime (CLR)
1.1 Framework Class Library (FCL)
The Framework Class Library (FCL) on laaja joukko luokkia, joilla tuetaan:
* Kontit (Array, String, List, ...)
* Multithreading (lankaa, lanka-altaat)
* Verkottumista (pistorasiat, pöytäkirjojen, asiakkaat ja palvelimet)
* Tiedoston operaatiot
* Tietojen virrat
* Jäsennys (säännöllisiä lausekkeita, XML käsittely)
* Math operaatiot
* Poikkeus
* Kielen piirteitä (harkinta, stack trace, dynaamista koodia)
The Framework Class Library (FCL) on toteutettu monille eri alustoille ( Windows, Linux, MacOS, ... ).
Näin ollen ainoa ohjelma, joka käyttää Framework Class Library (FCL) voidaan kehittää ilman merkittävää tietoa väliset erot kohdistaa alustoilla.
The Framework Class Library (FCL) sisältää hyödyllisiä malleja perustavanlaatuisia käsitteitä tietojenkäsittelyopin (kuten "thread, pistorasia, stream," etc).
Tavallaan, Framework Class Library (FCL) antaa jokaiselle tuettu käyttöjärjestelmä nykyaikaisen, korkean tason, johdonmukainen ohjelma-liitäntä.
The Framework Class Library (FCL) on yksi pisimmälle edennyttä, kattavia yhtenäisesti suunniteltu, hyvin dokumentoitu kokoelmiin tehtävien ja tietotyypit käytettävissä ohjelmoijia.
Valitettavasti seuraavat multimedia näkökohdat eivät kuulu Framework Class Library (FCL): äänite, audio-toisto, videonauhoitus, videoiden toistoa, 3D-mallinnus, joystick input, laite valvonta ( CD/DVD, ... ) jne.
Microsoft on .NET versio, DirectX kirjastoja niiden Windows käyttöjärjestelmä.
On C# päällyskääreitä for OpenGL, OpenAL, GLUT, SDL jne., mutta tämä ei ole aivan niin kätevä kuin ottaa tällaisen multimedia-toiminnot on sisällytetty keskeiset Framework Class Library (FCL) ja sisällyttää loppukäyttäjän "run-time" kirjastoissa.
Yksi ongelmista on kehittää ohjelmia, jotka käyttävät erityisesti kirjastojen on, että tarkoitus asettaa loppukäyttäjät edellyttävät tukea valitun kirjastoissa.
Jos se ei ole kätevä ladata ja asentaa tarvittavat kirjastot, loppu-käyttäjä voi valita, ei käytä ohjelman vaatimalla kirjastoissa.
Loppukäyttäjän saattavat myös olla haluttomia odottaa kirjastosta ladata osoitteesta online location.
Jos ohjelman kehittäjä edellyttää loppukäyttäjän löytää, hankkia ja asentaa kirjastoja, kaikki ilman apua tiettyä ohjelmaa, niin loppu-käyttäjä voi valita, ei käytä ohjelmaa.
Esimerkiksi monet avoimen lähdekoodin projekteista vaativat loppukäyttäjät voivat löytää, ladata ja asentaa, monet eri kirjastojen muista avoimen lähdekoodin projekteihin (esimerkkejä: openssl, zlib, libpng, libjpg, glut, ...), joka on aika kuluttavien, monimutkainen, turhauttavaa, ja se saattaisi myös johtaa loppukäyttäjille valitsemalla etsimään vaihtoehtoisia ohjelmia tai tuotteita.
The "Windows Update" palvelun ilmeisesti auttaa sijoittamaan versio 1.1, .NET run-time kirjastojen Windows käyttäjille.
Nämä run-time kirjastot ovat mukana Windows XP käyttöjärjestelmä.
Näin ollen luoda Windows ohjelmia, jotka vaativat .NET 1.1 vaikuttaa täysin järkevältä.
Also, the run-time kirjastoista Microsoft's toteutusten, .NET Framework Class Library (FCL) voidaan vapaasti jakaa uudelleen, jotta kehittäjät voivat toimittaa nämä kirjastot loppukäyttäjille jotka eivät jo kirjastoissa.
The Windows Vista käyttöjärjestelmä alusten kanssa .NET 3.0 run-time kirjastot (näiden .NET Framework Class Libraries ja useita uusia kirjastoja, kuten "Windows Presentation Foundation" (WPF)).
Siksi käyttöönottokustannukset .NET 2.0 ja .NET 3.0 ohjelmia Windows Vista ei edellytä asentajat varten .NET run-time kirjastoissa.
1.2 Intermediate Language (IL)
The Intermediate Language (IL) on pieni joukko yksinkertaisia, prosessori-riippumattomia, toiminta-järjestelmän riippumattomia ohjeita, jotka ovat riittävät täysin ilmaista tietoja rakenteiden ja toimintojen monien eri korkean tason ohjelmointi-kielellä ( C++, C#, F#, Visual Basic, Java, Ocaml, ... ).
Lähdekoodi on kirjoitettu korkean tason kieli voidaan laatia alas vastaava "Intermediate Language" muodossa.
Koodi on "Intermediate Language" muodossa voidaan helposti yhdistää muihin koodi on "Intermediate Language" muodossa.
Tietokoneohjelma (joita nimitetään myös "ohjelmistot)" voivat sisältää lähdekoodi on kirjoitettu useita eri korkean tason kielellä (esim. C#, C++, ja Visual Basic).
Kaikki lähdekoodi voidaan yhdistää (muunnetaan), joka "Intermediate Language" formaatti mahdollistaa helpon yhdistetään muihin käännetty koodi.
Ohjelmat on "Intermediate Language" muoto on yleensä muuntaa koneellisesti tarkempia ohjeita (esim. CPU ohjeet) hyvin vähän ennen toteutusta (esim. "Just-In-Time" (JIT) muuntaminen IL, CPU ohjeet).
Mutta ohjelma voidaan myös panna täytäntöön siinä yhteydessä, Virtual Machine (VM) tarkoitus tulkita Intermediate Language (IL) ohjeita.
Koodi on kirjoitettu eri korkean tason kielellä ( C#, F#, Ocaml, C++, Visual Basic, ... ), voidaan laatia, Intermediate Language (IL) muodossa käyttäen asianmukaista kerätä kaikista tukenut alusta ( Windows, Linux, MacOS X, ... ), ja tuloksena tiedoston, sulautetut Intermediate Language (IL) koodi on alustasta riippumaton ja voi suorittaa millä tahansa alustalla, jonka täytäntöönpanoa, .NET Common Language Runtime (CLR).
The Intermediate Language (IL) koodia, jonka kääntäjä on pohjimmiltaan riippumaton alustan, jonka kääntäjä oli teloitettu.
1.3 Common Language Runtime (CLR)
The Common Language Runtime (CLR) on mekanismi vastaa täytäntöönpanovaltio koodi jätetään siihen Intermediate Language (IL) muodossa.
The Common Language Runtime (CLR) tarjoaa erilaisia palveluja.
The Common Language Runtime (CLR) toukokuu muuntaa Intermediate Language (IL) koodi ohjeita, jotka ovat syntyperäisiä-alustan (esim. CPU ohjeet).
Muuntamisen alkaen Intermediate Language (IL)-platform-(esim. CPU-) ohjeita voi tapahtua etukäteen suorittamisesta (eli, "Ahead-Of-Time" (AOT) muuntaminen), tai se voi tapahtua vähitellen, sillä ohjelman toteuttaja (eli "Just-In-Time" (JIT) muuntaminen) .
The Just-In-Time (JIT) muuntaminen voi käyttää kehittyvä tilastoja ohjelman suoritus dynaamisesti optimoida muunnetaan koodi (esimerkki: tunnistaa usein käytetyt silmukoita ja sivukonttoreiden ja optimoimalla niiden mukaan havaittu käyttäytyminen (joka itse riippuu nykyisten tietojen ja tapahtumien)).
The Common Language Runtime (CLR) hallinnoi jaettu muisti puolesta ohjelmaa.
Näin ollen CLR varmistetaan, että ohjelma ei ole jättänyt pääsy jaettu muisti samalla viittauksia niihin muistin jatkuu, ja varmistaa, että muistin määrärahat ovat peruuntuneet, ja että muisti on saatavilla jälleen tulevista määrärahoista jälkeen ohjelma hävittää kaikki viittaukset näihin määrärahoihin .
The Common Language Runtime (CLR) havaitsee, kun ohjelma ei enää ole viittausta muisti jakamista, ja muistin jakaminen on merkitty deallocation.
The Common Language Runtime (CLR) käyttää mitä tahansa eri "jätteiden keräys-algoritmit" (esimerkki: "mark-and-sweep") kartoittaa ja takaisin muistin lohkojen enää saatavilla ohjelma.
The Common Language Runtime (CLR) käsittelee ohjelman poikkeuksia.
The Common Language Runtime (CLR) toimeenpanee turvallisuusjärjestelyjä.
The Common Language Runtime (CLR) käyttää "P/Invoke" mekanismi Kuormalavan-kirjastot ja vedota (call) toimii näissä kirjastoissa.
2. .NET ( FCL, IL, CLR ) täytäntöönpanosäädöksissä Microsoft
2.1 Johdanto
The .NET paradigman ( FCL, IL, CLR ) on pantu täytäntöön Microsoft.
Uusin versio, "3.0", julkaistiin 2006.10.
.NET 3.0 muodostuu .NET 2.0 Framework Class Libraries ja useita uusia kirjastoja, kuten "Windows Presentation Foundation" (WPF) kanssa assosioituneet "Silverlight" (entinen WPF/E, entinen Sparkle, ...)-selaimen ampua ajaksi Firefox ja Internet Explorer.
Microsoft jakaa .NET 2.0 ohjelmiston kahteen eri paketteja:
(1) .NET Framework Version 2.0 Redistributable Package
The Redistributable Package on vaadittu loppukäyttäjät voivat suorittaa ohjelmia rakennettu varten .NET paradigman. Tämä paketti on myös asennettu kehittäjät ennen asentamista ja käyttämällä .NET Software Development Kit (SDK) mainittu alla.
(2) .NET Framework Version 2.0 Software Development Kit
The Software Development Kit (SDK) vaaditaan kehittäjät voivat koota C# lähdekoodi on Intermediate Language (IL) program files.
Tämä paketti sisältää erilaisia kehittämisen työkaluja ja dokumentaatiota.
2.2 .NET Framework Version 2.0 Redistributable Package
The Redistributable Package on vaadittu loppukäyttäjät voivat suorittaa ohjelmia rakennettu varten .NET paradigman.
Tämä paketti on myös asennettu kehittäjät ennen asentamista ja käyttämällä .NET Software Development Kit (SDK) mainittu alla.
Seuraavat Internet-sivulla on tärkein .NET Lataussivu:
Osio nimeltä ".NET Framework Version 2.0 Redistributable Package" on linkkejä kolme laitteistoalustoilla: "Download x86 version", "Download x64 version", "Download IA64 version".
Esimerkiksi seuraavan linkin "Download x86 version", johtaa sivulle, joka on oikeutettu "Microsoft .NET Framework Version 2.0 Redistributable Package (x86)"
(Tiedoston nimi: dotnetfx.exe; Version: RC1; Julkaisupäivämäärä: 3/22/2006; Kieli: Englanti; Lataa Koko: 22.4 MB)
Paikallinen versio välimuistissa (vain viittaus; mahdollisesti vanhentunut):
(Tiedoston nimi on muuttunut tässä alkuperäisen tiedoston nimi "dotnetfx.exe" välttämään sekaannusta sen version 1.1 asennin myös nimetty "dotnetfx.exe".)
2.3 .NET Framework Version 2.0 Software Development Kit (SDK)
The Software Development Kit (SDK) vaaditaan kehittäjät voivat koota C# lähdekoodi on Intermediate Language (IL) program files.
Tämä paketti sisältää erilaisia kehittämisen työkaluja ja dokumentaatiota.
Seuraavat Internet-sivulla on tärkein .NET Lataussivu:
Osio nimeltä ".NET Framework Version 2.0 Software Development Kit" on linkkejä kolme laitteistoalustoilla: "Download x86 version", "Download x64 version", "Download IA64 version".
Esimerkiksi seuraavan linkin "Download x86 version", johtaa sivulle, joka on oikeutettu ".NET Framework 2.0 Software Development Kit (SDK) (x86)"
(Tiedoston nimi: setup.exe; Version: 2.0; Julkaisupäivämäärä: 11/7/2005; Kieli: Englanti; Lataa Koko: 354.0 MB)
Paikallinen versio välimuistissa (vain viittaus; mahdollisesti vanhentunut):
(Tiedoston nimi on muuttunut tässä alkuperäisen tiedoston nimi "setup.exe" välttämään sekaannusta se kaikkien muiden asennuksen tiedostoista nimeltä "setup.exe".)
3. Microsoft Visual C#: Integrated Development Environment (IDE) ohjelma
3.1 Johdanto
An Integrated Development Environment (IDE) ohjelman avulla kehittäjä muokata lähdekoodia ja suorittaa erilaisia työkaluja (esimerkkejä: kääntäjä, debuggeri, ...) yhtenäisen, yhdistävä ohjelma, täynnä hyödyllisiä visuaalisia merkkejä ja valvontaa.
"Microsoft Visual C# 2005 Express Edition" on no-kustannukset (ei maksua vaaditaan) IDE ladattavissa osoitteesta Microsoft.
Ei-tietokannan kehittämiseen, se on lähes mahdotonta erottaa tämä ei ole kustannus-tuotteen vähittäiskaupan vastineelle, "Microsoft Visual C# 2005".
Olen usein käyttää molempia tuotteita, ammattimaisesti ja recreationally, ja en ole vielä huomannut mitään käytännön ero tuotteita.
3.2 Virallinen linkit
Internet-sivuston etusivulle:
Sivua koskevat "Visual C# Express Edition":
Napsauta "Download Now" painikkeen oikealla puolella sivun valita latauksia vaihtoehto.
(Yksi tapa on käynnistää asennin ohjelma, joka lataa tiedostot Microsoft aikana kullekin laitokselle.
Toinen tapa on ladata täyden CD-ROM "ISO" kuva, joka mahdollistaa tulevaisuudessa offline-asennus.
The ISO kuva, "VCS.iso" (451,837,952 bytes; CRC 55884F2C) 32-bittinen x86 Englanti, voidaan paloi joka CD-ROM käyttäen "Nero 7 Ultra", esimerkiksi. )
4. .NET ( FCL, IL, CLR ) täytäntöönpanoa, jonka Mono Project
4.1 Johdanto
The .NET paradigman ( FCL, IL, CLR ) on toteutettu osallistujien ryhmä tunnetaan nimellä Mono Project.
4.2 Virallinen linkit
Hankkeen verkkosivut:
Ohjelmistojen lataus sivu:
4.3 Paikallinen versio välimuistissa
Paikallinen versio välimuistissa asentaja (vain viittaus; mahdollisesti vanhentunut):
4.4 .NET 2.0 kehitystä Mono
The "mcs" Compiler, ja asiakirjat, kuten marraskuussa 2006, enimmäkseen liittyvät C# 1.0 ja FCL 1.1.
Kuitenkin "mcs" kääntäjä pystyy kokoamaan C# 2.0 koodi, joka ei sisällä geneeristen tai geneerisiä-pohjaisia ominaisuuksia, mutta rajoitetaan API, 1.0.
Voit tehdä täyden C# 2.0 kehityksen kanssa, FCL 2.0 kirjastot, käytä "gmcs" kääntäjään.
Katso seuraavalta sivulta, Mono site:
5. SharpDevelop: avoimen lähdekoodin Integrated Development Environment (IDE) ohjelma
5.1 Johdanto
An Integrated Development Environment (IDE) ohjelma mahdollistaa kehittäjän muokata lähdekoodia ja suorittaa erilaisia työkaluja (esimerkkejä: kääntäjä, debuggeri, ...) yhtenäisen, yhdistävä ohjelma, täynnä hyödyllisiä visuaalisia merkkejä ja valvontaa.
SharpDevelop on erinomainen, avoimen lähdekoodin IDE ohjelma C# / .NET kehitystä.
Tämä IDE läheisesti muistuttavan Microsoft Visual C# IDE, ja joiltakin osin, SharpDevelop IDE on parantunut, kun Microsoft tuote.
Kuitenkin Microsoft Visual C# on joitakin piirteitä (esimerkki: debugging), että SharpDevelop ohjelma ei ole ajankohtana (tätä kirjoitettaessa).
5.2 Virallinen linkit
Pelkkä Internet-sivuston etusivulle:
Sivua koskevat "The Open Source Development Environment for .NET":
Download-sivulle, jossa on tiedot 1.1 ja 2.0 versiot SharpDevelop:
5.3 Paikallinen versio välimuistissa
Paikallinen versio välimuistissa asentaja (vain viittaus; mahdollisesti vanhentunut):
6. Hyödyllisiä C# / .NET / IL työkalut
6.1 SciTech Software ".NET Memory Profiler"
Tämä profiler osoittaa muistia määrärahojen ja muiden resurssien jakaminen, että kootaan .NET ohjelmaa tai kokoonpano tekee, kun taas täytäntöönpanovaltiossa.
Reaaliaikaisten kaavion avulla henkilö voi nähdä, yksityiskohtaisesti, miten toimia koskevan ohjelman (kuten toimet käynnistyvät käyttäjän syöte-tai muita tapahtumia) vaikuttaa muistin jakamista ja jätteiden keräys.
The reaaliajassa taulukossa luetellaan mieltä mahdollistaa henkilön oppia tarkempia tietoja muistin jakaminen.
Tämä profiler välittömästi ja dramaattisesti esiin tuhlaavan muistin käyttöä reaaliajassa Direct3D ohjelma minulla oli kehitetty.
Rakenteessa ylöspäin luiskat ja yllättäen tippaa (johtuen "jätteiden keräys)" muistin käytön kaaviot vastasivat täysin säännöllisten, hyvin-lyhyitä taukoja, 3D-piirustus minun ohjelmaan.
The profiler antanut minulle havaitessani, että usein jako tilapäisen esineitä oli kasaantua paljon muistia, käynnistä jätteiden keräys usein, ja ottaen riittävästi aikaa kullekin jätteiden keruu aiheuttaa muutaman nosto-kaudet niiden on menetetty.
The profiler n reaaliajassa taulukossa osoitetaan esinettä tyypit kävi ilmi, minkälaisia esineitä, joita kulutetaan eniten muistia, ja joiden päästöoikeuksia kuluttamaan muistia on korkein (bytes per second), ja jonka määrärahat olivat korkeimmat hävittäminen verokantaa.
Opiskelu reaaliaikaisten kaavioita sekä reaaliaikaisten taulukoita, antanut minulle keskittyä tutkii tapaa, jolla tietyt tietotyyppejä oli käytetty minun koodilla.
Muutoksia koodi välttää toistuvia jako tilapäisen esineet voivat huomattavasti alentaa yleistä verokantaa muistin jakamista ja hävittäminen, ja voi näin ollen vähentää taajuus garbage keruu aktivointi.
(Uskon "Bytes/sec" on hyvin paljastava tilastotieto reaaliaikaista ja muistin käyttöä, lisäksi "Live instances".
) Seeing kaikki nämä päivitetään parhaillaan hyvin nopeasti taulukon muodossa, ja että voimme valita, miten rivit lajitellaan ja muuttuvat lajitteluun parametri milloin tahansa, tekee kokemusta opiskelusta reaaliaikainen ohjelma erittäin houkuttelevaa ja informatiivisia.
Muistin jakamista vastauksista käyttäjän vuorovaikutusta, käynnissä ohjelma voidaan tutkittu, ja testaus voidaan nopeasti sopeutua palautetta kaventamaan eniten kiinnostava näkökohta.
(Esimerkiksi, 2006 July versio oli seuraavat ominaisuudet: versio 2.6.89; 4.3 MB; USA $127.00; Lataa 14 päivän raja-versio, ei maksa mitään, arviointia varten.)
6.2 FxCop: .NET koodi analysaattorin / kriitikko
FxCop analysoi yksi koottu .NET-ohjelman (tai käännetty kokoontumisvapaus) ja luo raportin luetellaan mahdollisia ongelmia alkuperäistä lähdekoodia.
Mahdollinen suorituskyvyn ongelmia ja turvallisuuden ongelmat on tunnistettu.
Mahdolliset koodaavan yleissopimuksen rikkomuksia havaitaan.
FxCop ei edellytä pääsyä alkuperäistä lähdekoodia suorittamaan analyysiin.
Ainoastaan koottu .NET ohjelma (joka sisältää IL) on pakollinen.
Siitä huolimatta, FxCop mietintö tarjoaa hyperlinkkejä tiettyihin rivi numeroita alkuperäistä lähdekoodia.
Jos Microsoft Visual C# 2005 IDE on aktiivinen, klikkaamalla hyperlinkkiä, FxCop raportti aiheuttaa IDE, taivuttaa niitä koskeviin Source File ja rivinumero.
FxCop on mielestäni hieman outo tapa integroida kanssa Microsoft Visual C# 2005 IDE.
Kuitenkin sen jälkeen, kun se on perustettu, FxCop tuottaa erittäin mielenkiintoinen ja mahdollisesti arvokkaan mietinnön.
Mietintö sisältää yksityiskohtaisia neuvoja siitä, miten parantaa alkuperäistä lähdekoodia.
Mielestäni on syytä analysoida ohjelman avulla FxCop on säännöllisin välein.
En olisi yllättynyt, jos jotkut ohjelmistokehitystä hankkeita tai yrityksiä vaaditaan kaikkien kirjoittamaa koodia kehittäjille tuottaa mitään varoituksia tai kritiikkiä, jonka FxCop.
Säännöt voidaan lisätä tai poistetaan FxCop tietokanta, tarpeiden mukaan.
FxCop on open-source, vapaa-ohjelmassa.
6.3 "Reflector for .NET": decompiler / analysaattori
From Lutz Roeder's Internet-sivuilta:
"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" voi auttaa henkilöä tutkimaan, miten kolmannen osapuolen kirjastot ovat kirjoitettu.
Joskus se olisi erittäin hyödyllistä tietää tarkalleen, kuinka menetelmää kokoonpanoa, joka on pantu täytäntöön.
Jos menetelmä käyttäytyy odottamattomalla tai salaperäinen tavalla, sitten "Reflector" voidaan nähdä täytäntöönpanoa.
Nähtyämme täytäntöön, ohjelmoija voi kiertää ongelmia, jotka johtuvat erityiset toteutusten Kirjaston menetelmiä.
Ystäväni kertoi minulle, että "Reflector" auttoi häntä oppimaan lisää behavior huonosti dokumentoituja menetelmiä, Microsoft täytäntöönpanoa, Framework Class Libraries (FCL).
"Reflector" saattaisi olla hyödyllistä, kun asiakirjat kirjasto-menetelmä koostuu vain muutaman sanan, kuten "asetetaan arvo" tai "tapahtuman käsittelijät."
Jos kirjaston funktio avuksihuutaminen on epäkuntoon tuntemattomasta syystä (kun kaikki parametrit vaikuttavat voimassa), sitten käyttämällä "Reflector" tarkastella täytäntöönpanon kirjaston funktio voisi paljastaa syyn epäonnistumisesta.
"Reflector" suorittaa joitakin "käänteissuunnittelun" on .NET ohjelman tai elimelle.
Muut palvelut, mukaan lukien mahdollisesti "Reflector" itsessään voi tuottaa lähdekoodin ohjelmia tai edustajakokoukset rakennettu perustuu monimutkainen lähdekoodi.
Tämä on tietysti huolestuttaa joidenkin kehittäjien ja niiden sijoittajille.
(2006 July: Reflector.zip oli toisinto 4.2.45.0)
7. Internet keskustelufoorumit
Google haku on paras tapa löytää vastauksia tiettyihin kysymyksiin mistä tahansa asiasta, mutta sivustojen alla toistuvasti näkyvät hakutulosten C# ja .NET kysymyksiin.
Oheiset sivustot ovat awesome varten tutkitaan monia siistejä asioita ihmiset ovat tehneet C# ja .NET.
"The Code Project" sivustolla on tuhansia mielenkiintoisia ja hyödyllisiä artikkeleita, C#, C++, ja muita kieliä ja ohjelmoinnin muutaman.
The "MSDN Code Gallery" sivusto on monia mielenkiintoisia artikkeleita ja koodi näytteet liittyvät Microsoft teknologiaa.
Muut Internet-sivustoja, jotka liittyvät C# ja .NET:
8. Yleiset huomautukset
8.1 Platform riippumattomuus
The Intermediate Language (IL), kuten Java "byte-koodi," on alustasta riippumaton.
Kaikki .NET-yhteensopiva kääntäjä tuottaa alustasta riippumaton Intermediate Language (IL) koodin muodossa ohjelmia tai kokoonpanoista.
Ohjelmat pakattu suorituskelpoisista ("*.exe" tiedostot) on joitakin alustasta riippuvaisia koodi nimenomaan käyttöjärjestelmä, jonka tarkoituksena on oikein tulkita ja käynnisti suoritettavana ohjelmistojen yhteydessä erityisesti käyttöjärjestelmä.
Kuitenkin natiivi suoritettavan osan ohjelmisto-tiedoston vain palvelee vedota .NET CLR moottori, toimittamalla IL koodiin sisältyvät ohjelmisto-tiedoston suorittamisesta, jonka CLR moottori.
Microsoft tarjoaa täytäntöönpanoa, .NET laitokset (Compiler, ...), ja täytäntöönpanoa, Framework Class Library (FCL), ainoastaan sen Windows käyttöjärjestelmä.
The Mono Project tarjoaa toteutusten, .NET laitokset (Compiler, ...), ja toteutusten, Framework Class Library (FCL), seuraavista käyttöjärjestelmistä: Windows, Linux, MacOS X, ja BSD.
8.2 Speed verrattuna non-CLR C / C++
The Common Language Runtime (CLR) osa .NET on yhteydessä, jossa C# ohjelman toteuttaja.
The CLR suorittaa "jätteiden keräys-ja" mahdollistaa ohjelmien vedota tehtäviä "unmanaged" kirjastot (kaikki kirjastot eivät toteutetaan Intermediate Language (IL)).
Kaikki tehtävässä ei enempää kuin puhdasta matematiikkaa, puhdasta merkkijono manipulointia, tai puhdasta muistin kopiointia, tulee vedota tehtäviä "unmanaged" kirjastoissa.
Kaikki tiedosto, pistorasia, nosto-operaatioihin, input operaatiot (hiiri, näppäimistö), output operaatiot (konsoli), platform thread operaatioita, tarkkuus-ajastin, ikkunointijärjestelmä, etc, vedota tehtäviä "unmanaged kirjastoissa."
Valitettavasti mekanismi vetoamalla "unmanaged" toimintoja, CLR edellyttää huomattavan määrän aikaa.
Näin ollen yleinen nopeus ohjelma täytäntöönpanovaltion olevassa CLR on noticably hitaammin kuin ohjelma, joka voi vedota "unmanaged" toimintoja suoraan.
Tiettyjen erilaisia ohjelmistoja, nopeus voi olla tärkeää.
Tiettyjen erilaisia ohjelmistoja, nopeus voi olla merkittävä ero subjektiivisen tai psykologinen kokemus, jos henkilö käyttää ohjelmistoa.
Tiettyjen erilaisia ohjelmistoja, nopeus voi tehdä ero saavuttaa tavoitteesi ja epäonnistumiseen.
Multithreading, lisäämällä CPU nopeuksilla, ja parannuksia on CLR koodi tuotantolaitos, auttaa ohjelmiston täytäntöönpanovaltion olevassa CLR suorittaa nopeammin.
Kuitenkin jokaista koodia, joka teloitetaan ulkopuolella CLR, ja vetoaa alustan kirjastot suoraan, tulee väistämättä suorittaa huomattavasti nopeammin kuin ohjelmisto, joka teloitetaan kanssa yhteydessä CLR.
Vakuutukset tekemät CLR, C# ohjelmistot, kuten turvallisesti välisen kuilun kaventamiseen hallinnoi koodi ja unmanaged koodia, tulee niin, että kustannukset on epätodennäköistä, on vähennettävä.
Siksi kaikki ohjelma, joka on hyvin alustan intensiivinen (esimerkkejä: 3D-simuloinnin tai peliin, tiedosto-prosessori, verkko-palvelin jne.) on todennäköisesti suorittamaan suuruusluokka nopeammin ulkopuolella CLR kuin silloin, kun toteutetaan kanssa CLR.
Ero on valtava.
Lisäksi kaikki ohjelman, joka tekee huomattavan määrän matalan tason manipuloinnin tiedot suorittaa huomattavasti nopeammin ulkopuolella CLR kuin sen CLR.
Ohjelmat täytäntöönpanovaltion olevassa CLR toteuttamaan tarpeeksi nopeasti, jotta niistä olisi hyötyä monille käytännön tarkoituksiin.
Kuten CPU nopeudet kasvaa, ja kuten koodi otetaan paremmin hyödyntää useita CPUs, ohjelmista täytäntöönpanovaltion olevassa CLR on voitava käyttää enemmän tehtäviä, jotka vaativat korkeaa laskenta.
Kuitenkin keskellä 2008 että CLR ei edelleenkään ole aiheellista 3D-pelit mitään hienostuneisuutta, ellei erittäin aggressiivista pyritään vähentämään toiminto vaatii, että 3D-kirjastossa (OpenGL tai Direct3D), mahdollisesti käyttämällä sellaisia käsitteitä kuin "Shader-ohjelmat" ja "näyttää luettelot;" mitään vähentämään toiminto vaatii.