Microsoftin verkkoalustan ominaisuuksien ja komponenttien tarkoitus. Yleiskatsaus NET Framework -teknologiaan. Mikä on Common Language Specification CLS:n tarkoitus?

Hyvää päivää. Aleksei Gulynin on yhteydessä. Viimeisessä artikkelissa opimme tavoista välittää argumentteja menetelmälle C#:ssa. Tässä artikkelissa haluaisin kertoa sinulle uudelleen (yksinkertaisemmilla sanoilla), mikä se on .Net Framework ja Visual Studio. Tämä artikkeli on jatkoa Visual Studion kuvaukselle ja .Net Framework -artikkeleille .Net Framework on CLR (Common Language Runtime) -ympäristö. .Net Frameworkin ydinkomponentti), joka varmistaa hallitun koodin suorittamisen. CLR hallitsee tätä koodia. Mikä on hallittu koodi? .NET Frameworkille kirjoitettua koodia ei käännetä lopulliseksi konekoodiksi, vaan välikieleksi (ns. IL - Intermediate Language). Sitten tämä kokoonpano lähetetään käyttäjälle (koneeseen on asennettava .Net Framework), ladataan muistiin ja käännetään IL-komennot suoritettaviksi toimiksi.

Mitä järkeä on välikielen IL:llä?

Ensinnäkin se on alustariippumaton, ei sidottu tiettyyn prosessoriin.

Toiseksi, sen läsnäolo antaa CLR:lle mahdollisuuden ohjata ohjelmasi toimintaa, ts. älä anna hänen tehdä mitään ei-hyväksyttävää (esimerkiksi muistin manipulointia).

Toinen tärkeä komponentti CLR:n jälkeen Luokan kirjasto. .NET Framework sisältää suuren määrän luokkia, jotka on jaettu nimiavaruuksiin ja jotka tarjoavat kaikki perustoiminnot. Tämä on toiminto, jota ohjelmasi saattaa vaatia esimerkiksi tiedostojen, verkon, prosessien ja grafiikkaalijärjestelmän kanssa työskentelemiseen.

Kolmas komponentti ovat kehityskehykset (toisin sanoen kehityskirjastot). Tämä sisältää kirjastot, kuten WPF (Windows Presentation Foundation), ASP.NET, Entity Framework, WCF (Windows Communication Foundation), Windows Store jne. Itse asiassa nämä ovat myös luokkia. Erona on, että nämä luokat on suunniteltu ratkaisemaan tiettyjä ongelmia:

  • WPF - graafisten sovellusten kanssa työskentelemiseen
  • ASP.NET - web-sovellusten kanssa työskentelyyn
  • WCF - verkon kanssa työskentelemiseen ja hajautettujen (asiakas-palvelin) sovellusten luomiseen
  • Entity Framework - tietokannan kanssa työskentelemiseen.

Tätä artikkelia kirjoitettaessa uusin versio on .Net Framework 4.6

Pääasiallinen Microsoftin suosittelema kehitysympäristö on Visual Studio. Microsoftilla on yleensä tämä tilanne: kun uusi versio .NET Frameworkista julkaistaan, jonkin ajan kuluttua julkaistaan ​​uusi versio Visual Studiosta. Mitä Visual Studio (perus) sisältää:

  1. Tekstieditori syntaksikoodin korostuksella
  2. IntelliSence-apujärjestelmä (voidaan kutsua automaattisesti tai pikanäppäimellä Ctrl + Space (välilyönti))
  3. Kääntäjät eri kieliltä
  4. Rapid Application Development (RAD)
  5. Käyttöliittymien visuaalinen suunnittelija, kaaviot
  6. Komponentti palvelimien ja tietokantojen kanssa työskentelemiseen
  7. IIS-verkkopalvelin ja SQL-palvelin Express -vaihtoehto
  8. Debuggerit, profiloijat, komponentit, joiden avulla voit käsitellä virheitä
  9. MSDN-apujärjestelmä

Tätä kirjoitettaessa uusin versio on Visual Studio 2015.

Miten ohjelmien käsite toimii Visual Studiossa. Studiossa on käsitteet "Projekti" ja "Ratkaisu". Projekti on kokoamisyksikkö. Se koostuu tiedostojoukosta. Koko projekti kootaan yleensä kokoonpanoksi (exe-tiedosto tai dll-tiedosto). Projektit voidaan ryhmitellä ratkaisuiksi. Ratkaisu on yksinkertaisesti kokoelma projekteja, jotka voivat liittyä toisiinsa tai eivät liity toisiinsa (yleensä ne ovat).

C#
  • Common Language Runtime) ja luokan kirjasto...
  • .NET Framework ja CTS-määritykset
    C#-kieli ja sen tuki liittyvät tällä hetkellä Microsoftin kehittämään .NET Frameworkiin. Nimetty alusta (katso) sisältää: yhteisen kielen suoritusajan (CLR - Common Language Runtime Framework Class Library). Se pitäisi huomata...
    (OHJELMOINTI. PERUSKURSSI C#)
  • .NET Frameworkin ja Visual Studion asentaminen
    Windows 7:ssä ja 8:ssa .NET-alusta on jo saatavilla, eikä mitään tarvitse asentaa. Jotta voit kehittää sovelluksia .NET-alustalla, sinun on asennettava Visual-kehitysjärjestelmä C# 2012 (tai 2013) Express Edition - ilmainen versio Visual Studio -kehitysympäristöstä (lyhyempi, mutta lähes...
    (Olio-ohjelmointi)
  • C# TYYPIT JA .NET FRAMEWORK TYYPIT
    C#-kieli ja sen tuki liittyvät tällä hetkellä Microsoftin kehittämään .NET Frameworkiin. Nimetty alusta (katso) sisältää: yhteisen kielen suoritusajan (CLR - Common Language Runtime) ja luokan kirjasto...
    (OHJELMOINTI. PERUSKURSSI C#)
  • .NET Framework ja CTS-määritykset
    C#-kieli ja sen tuki liittyvät tällä hetkellä Microsoftin kehittämään .NET Frameworkiin. Nimetty alusta (katso) sisältää: yhteisen kielen suoritusajan (CLR - Common Language Runtime) ja luokkakirjasto (FCL - Framework Class Library). Se pitäisi huomata...
    (OHJELMOINTI. PERUSKURSSI C#)
  • NET Framework toimii ympäristönä komponentteihin (säätimiin) perustuvien hajautettujen sovellusten tukemiseen, kehittämiseen ja suorittamiseen.

    Sovelluksia (ohjelmia) voidaan kehittää eri ohjelmointikielillä, jotka tukevat tätä tekniikkaa.

    NET Framework tarjoaa:

    • eri ohjelmointikielten yhteinen käyttö;
    • ohjelmien turvallisuus ja siirrettävyys;
    • yleinen ohjelmointimalli, joka perustuu Windows-alustalle.

    2. Mitkä ovat .NET Frameworkin pääkomponentit?

    Ohjelmoinnin näkökulmasta .NET Framework koostuu kahdesta pääkomponentista:

    • yhteisen kielen suoritusympäristö CLR (Common Language Runtime);
    • perusluokan kirjasto.

    Common Language Runtime (CLR) ratkaisee ongelmat, jotka liittyvät .NET-tyyppien automaattiseen löytämiseen, niiden lataamiseen ja hallintaan. CLR hoitaa muistinhallinnan, sovellusten ylläpidon, säikeiden käsittelyn ja toteuttaa lukuisia turvallisuuteen liittyviä tarkistuksia.

    Perusluokkien kirjasto sisältää erilaisten primitiivien määritelmät, jotka voivat olla: streamit, graafiset API:t, tietokantatoteutukset, tiedostojen I/O jne.

    3. Mikä on Common Language Runtime (CLR) toimintaperiaate?

    Common Language Runtime (CLR) hallitsee .NET-koodin suorittamista.

    Kun ohjelma on käännetty C#-kielellä (tai muulla kielellä), luodaan tiedosto, joka sisältää erityisen pseudokoodin tai tavukoodin (eikä suoritettavaa tiedostoa, kuten ennen). Tätä pseudokoodia kutsutaan (MSIL) tai Common Intermediate Language (CIL). Tämä pseudokoodi on Microsoft Intermediate Language.

    CLR:n päätarkoitus on muuttaa MSIL-välikoodi suoritettavaksi koodiksi ohjelman suorituksen aikana.

    Mikä tahansa ohjelma, joka on käännetty MSIL-pseudokoodiin, voidaan suorittaa missä tahansa ympäristössä, joka sisältää CLR:n toteutuksen. Tämä mahdollistaa ohjelmien siirrettävyyden .NET Frameworkissa.

    Riisi. 1. Lähdekoodin muuntaminen MSIL-koodiksi (CIL tai IL) ja kokoonpanotiedoston (*.dll tai *.exe) luominen

    Tämän jälkeen pseudokoodi muuttuu suoritettavaksi koodiksi. Tämän tekee JIT-kääntäjä. JIT (Just-in-time) -kokoelma on kokoamista lennossa.

    CLR on vastuussa kokoonpanon sijoituspaikan määrittämisestä.

    Kokoonpanoon sijoitettava pyydetty tyyppi (kuten ArrayList-luokka tai muu tyyppi) määritetään binääritiedostossa (*.dll tai *.exe) lukemalla tiedoston metatiedot.

    CLR sijoittaa sitten kokoonpanosta luetun tyypin muistiin.

    CLR muuttaa sitten CIL-koodin sopiviksi ohjeiksi, jotka on räätälöity tietylle alustalle (riippuen tietokoneesta, käyttöjärjestelmästä jne.). Lisäksi tässä vaiheessa tehdään tarvittavat turvallisuustarkastukset.

    Viimeisenä tehtävänä on suorittaa pyydetty ohjelmakoodi.

    4. Mikä on MSIL-välikieli ( Microsoft Intermediate Language) tai CIL (Common Intermediate Language)?

    Aluksi kutsuttiin pseudokoodin välikieli Microsoft Intermediate Language(MSIL). Myöhemmin (uusimmissa .NET-versioissa) tämä nimi muutettiin Common Intermediate Languageksi (CIL - Common Intermediate Language). Lyhenteet MSIL, CIL ja IL (Intermediate Language) tarkoittavat samaa asiaa.

    Keskitason kieli CIL (tai MSIL) muodostetaan sen jälkeen, kun ohjelma on käännetty jollakin .NET Frameworkia tukevalla ohjelmointikielellä.

    MSIL on pseudokoodi. MSIL määrittelee joukon ohjeita, jotka:

    • voidaan siirtää eri alustoille;
    • eivät ole riippuvaisia ​​tietystä prosessorista.

    Itse asiassa MSIL on kannettava kokoonpanokieli

    5. Mikä on kokoonpano .NET-tekniikan näkökulmasta?

    Kokoonpanot ovat *.dll- tai *.exe-tunnisteita sisältäviä tiedostoja, jotka sisältävät .NET-alustasta riippumattomia Intermediate Language (IL) -käskyjä sekä tyypin metatietoja.

    Kokoonpano luodaan .NET-kääntäjällä. Kokoonpano on suuri binääriobjekti.

    Kokoonpano on suunniteltu säilyttämään nimiavaruudet. Nimiavaruudet sisältävät tyyppejä. Tyypit voivat olla luokkia, delegaatteja, rajapintoja, luetteloita, rakenteita.

    Kokoonpano voi sisältää minkä tahansa määrän nimiavaruuksia. Mikä tahansa nimiavaruus voi sisältää minkä tahansa määrän tyyppejä (luokkia, rajapintoja, rakenteita, luetteloita, delegaatteja).

    6. Mitä kokoonpanot sisältävät?

    Kokoonpanot sisältävät CIL-koodin (MSIL-koodi tai IL-koodi) ja metatiedot.

    CIL-koodi käännetään tietylle alustalle vain, jos sitä käytetään .NET-ajoympäristöstä.

    Metadata kuvaa yksityiskohtaisesti kunkin tietyn .NET-binääriyksikön sisältämän tyypin ominaisuudet.

    Esimerkiksi Kun luot Windows Forms -sovelluksen C#:ssa, Assembly.info-tiedosto luodaan. Tämä tiedosto sijaitsee Ominaisuudet-alikansiossa suhteessa pääohjelmakansioon. Tämä tiedosto sisältää yleistä tietoa kokoonpanosta.

    7. Mikä on manifesti?

    Manifesti on kuvaus itse kokoonpanosta metatietojen avulla.

    Luettelo sisältää seuraavat tiedot:

    • kokoonpanon nykyisestä versiosta;
    • tiedot kulttuurista (linja- ja graafisten resurssien lokalisointi);
    • luettelo linkeistä kaikkiin ulkoisiin kokoonpanoihin, joita tarvitaan asianmukaiseen toimintaan.

    8. Kaavio lähdekoodin, .NET-kääntäjän ja .NET-ajonaikaisen moottorin välisestä vuorovaikutuksesta.

    Ohjelmoija luo sovelluksen lähdekoodin kielellä, joka tukee .NET-tekniikkaa (C#, C++/CLI, Visual Basic .NET jne.). Sovellus on luotu jossain ohjelmointiympäristössä, kuten Microsoft Visual Studiossa. Kääntäjä luo kokoonpanon - tiedoston, joka sisältää CIL-ohjeet, metatiedot ja luettelon.

    Kun tämä sovellus on suoritettu tietyllä tietokoneella (tietyllä alustalla), .NET-ajonaikainen moottori käynnistetään. Ensinnäkin yksi (ainakin) .NET Frameworkin versioista on asennettava tietokoneeseen.

    Jos lähdekoodi käyttää perusluokkakirjastoja (esimerkiksi mscorlib.dll-kokoonpanosta), ne ladataan luokkalataajalla.

    JIT-kääntäjä kokoaa kokoonpanon ottamalla huomioon (linkittäen) sen tietokoneen laitteisto- ja ohjelmistoominaisuudet, jossa sovellus on käynnissä.

    Tämän jälkeen sovellus käynnistyy.

    Kuva 2. Lähdekoodin, kääntäjän ja .NET-ajonaikaisen moottorin välinen suhde

    9. Millaisia ​​kokoonpanoja on olemassa?

    Kokoonpanoja on kahdenlaisia:

    • yhden tiedoston kokoonpanot;
    • usean tiedoston kokoonpanot.

    Yksittäisestä moduulista (*.dll tai *.exe) koostuvaa kokoonpanoa kutsutaan yksittäistiedostoksi. Yksitiedostoiset kokoonpanot sijoittavat kaikki tarvittavat CIL-ohjeet, metatiedot ja manifestit yhteen, tarkasti määriteltyyn pakettiin.

    Useista .NET-binäärikooditiedostoista koostuvaa kokoonpanoa kutsutaan monitiedostoiseksi kokoonpanoksi. Jokaista näistä tiedostoista kutsutaan moduuliksi.

    Monitiedostokokoonpanossa yksi moduuleista on päämoduuli (ensisijainen).

    10. Mikä tiedosto sisältää MS Visual Studio -kirjaston pääkokoonpanon?

    Pääkokoonpano sijaitsee tiedostossa "mscorlib.dll".

    11. Mikä on yleinen CTS-tyyppinen järjestelmä?

    CTS (Common Type System) - tyyppijärjestelmä, joka sisältää täydellisen kuvauksen kaikista mahdollisista tietotyypeistä ja ohjelmarakenteista, joita yhteiskielinen ajonaikainen CLR tukee. Se kuvaa myös, kuinka nämä kokonaisuudet voivat olla vuorovaikutuksessa toistensa kanssa.

    Tyypit voivat olla luokkia, rajapintoja, rakenteita, luetteloita, delegaatteja.

    12. Mikä on Common Language Specification CLS:n tarkoitus?

    Kuten tiedät, kaikki ohjelmointikielet, jotka ovat .NET-yhteensopivia, eivät tue CTS-tyyppisen järjestelmän toimintoja. Tätä tarkoitusta varten käytetään yleistä kielimääritystä CLS (Common Language Specification).

    CLS:n tarkoitus on kuvata vain se osajoukko yleisistä tyypeistä ja ohjelmointirakenteista, jotka hyväksyvät ehdottomasti kaikki .NET:iä tukevat ohjelmointikielet.

    13. Mitkä ohjelmointikielet tukevat .NET-tekniikkaa?

    MS Visual Studio -sovelluskehitysjärjestelmässä .NET-tekniikkaa tukevat seuraavat ohjelmointikielet: C#, Visual Basic .NET, C++/CLI, JScript .NET, F#, J#.

    Jotta voit käyttää .NET-tekniikkaa, sinun on asennettava ohjelmisto tietokoneellesi Microsoft .NET Framework Software Development Kit(SDK) tai Microsoft Visual Studio mistä tahansa versiosta.

    14. Mikä on nimiavaruus?

    Nimiavaruus on tarkoitettu yhdistämään joukko tyyppejä, jotka liittyvät toisiinsa semanttisesta näkökulmasta. Tyypit sijoitetaan kokoonpanoihin (kokoonpano). Tyypit tarkoittavat luokkia, delegaatteja, rajapintoja, rakenteita ja luetteloita.

    Esimerkkejä nimitilan nimistä:

    Järjestelmä System.Data System.IO System.Collections System.Threading.Tasks

    Esimerkiksi System.Data-nimiavaruus sisältää tietokantojen työskentelyn päätyypit ja System.Collections-nimiavaruus kokoelmien työskentelyn päätyypit.

    15. Kuinka näyttää kokoonpanojen, nimiavaruuksien ja tyyppien sisältö MS Visual Studiossa?

    Microsoft Visual Studio -järjestelmässä on Object Browser -apuohjelma, jota kutsutaan Näytä-valikosta (kuva 3).

    Riisi. 3. Object Browser -apuohjelman kutsuminen

    Tämä avaa Object Browser -ikkunan, joka näyttää tietyssä tekniikassa käytetyt kokoonpanot.

    Kuvassa 4 on luettelo kokoonpanoista, jotka näkyvät ".NET Framework 4" -tekniikassa. Kokoonpano nimeltä "mscorlib" on korostettu.

    Riisi. 4. Object Browser -ikkuna, jossa mscorlib.dll-kokoonpano on korostettuna

    Jos laajennat mscorlib-kokoonpanon sisältöä (" + "), näkyviin tulee luettelo tämän kokoonpanon kaikista nimiavaruuksista (kuva 5). Kuten kuvasta näkyy, kokoonpano sisältää nimitilat Microsoft.Win32, System, System.Collections, System.Collections.Concurrent ja monet muut.

    Riisi. 5. mscorlib-kokoonpano ja siihen sisältyvien nimiavaruuksien luettelo

    Mikä tahansa nimiavaruus laajenee samalla tavalla. Nimiavaruudet kuvaavat tyyppejä. Tyypit kuvaavat menetelmiä, ominaisuuksia, vakioita jne.

    Kuvassa 6 näkyy System.IO-nimiavaruuden BinaryReader-luokka. Ilmeisesti luokka toteuttaa menetelmiä nimeltä BinaryReader(), Close(), Dispose(), FillBuffer() ja muita.

    Riisi. 6. BinaryReader-luokan sisältö

    16. Kuinka yhdistää nimiavaruus C#-ohjelmassa?

    Liitä nimiavaruus käyttämällä avainsanaa käyttämällä

    Keinot, joilla ohjelmia kirjoitetaan, korjataan, muunnetaan konekoodeiksi, debuggoidaan ja käynnistetään, on ns. kehitysympäristö tai kuori. Platform.Net tai .Net Framework- se on enemmän kuin vain kehitysympäristö ohjelmat, tämä on uusi vallankumouksellinen yhdistelmä Microsoftin aiemmin erillisiä teknologioita, jonka avulla voit kehittää erilaisia ​​sovelluksia eri ohjelmointikielillä eri käyttöjärjestelmille.

    NET Framework on käyttöjärjestelmän lisäosa, joka voi olla mikä tahansa Windows-, Unix- tai mikä tahansa käyttöjärjestelmä yleensä (kehittäjien mukaan), ja se koostuu useista osista. Joten,. NET Framework sisältää:

    1. Neljä virallista kieltä: C#, VB.NET, Managed C++ ja JScript .NET.
    2. Näiden kielten yhteinen kieli oliosuuntautunut ajonaika (CLR) sovellusten luomiseen.
    3. Sarja toisiinsa yhdistettyjä luokkakirjastoja yleisellä nimellä FCL (Framework Class Library).

    Alustan pääkomponentti. NET Framework on yleinen kieliympäristö CLR-ohjelmille. Ympäristön nimi - "common language runtime" - puhuu puolestaan: se on eri ohjelmointikielille sopiva ajonaikainen ympäristö. CLR-toiminnot sisältävät:

    1. kaksivaiheinen käännös: jollain ohjelmointikielellä kirjoitetun ohjelman muuntaminen hallituksi koodiksi keskitason kieli ( Microsoft Intermediate Language, MSIL tai vain IL) ja sitten IL-koodin muuntaminen konekoodiksi tietylle prosessorille, joka suoritetaan virtuaalikoneen tai Just In Time -kääntäjän avulla (käännetään juuri ajoissa);
    2. koodinhallinta: valmiin IL-koodin lataaminen ja suorittaminen JIT-kääntäjällä;
    3. pääsy metatietoihin vahvistusta varten koodin suojaus;
    4. muistin hallinta sijoitettaessa esineitä roskienkerääjällä (Garbage Collector);
    5. poikkeuksien ja poikkeuksien käsittely, mukaan lukien monikieliset poikkeukset;
    6. toteutetaan vuorovaikutus hallitun koodin (CLR:lle kirjoitettu koodi) ja hallitsemattoman koodin välillä;
    7. tuki palveluille erityyppisten sovellusten kehittämiseen.

    Seuraava komponentti. Net Framework on FCL - Platform Class Library. Tämä kirjasto on jaettu useisiin moduuleihin siten, että sen yhtä tai toista osaa voidaan käyttää halutuista tuloksista riippuen. Joten esimerkiksi yksi moduuleista sisältää "tiilet", joista voit rakentaa Windows-sovelluksia, toinen sisältää "tiilet", joita tarvitaan verkon työn järjestämiseen jne.

    Osa FCL:stä on omistettu perustyyppien kuvaamiselle. Tyyppi on tapa esittää tietoja; perustavimpien tunnistaminen helpottaa ohjelmointikielten jakamista avun avulla. NET Framework. Yhdessä tätä kutsutaan yhteiseksi tyyppijärjestelmäksi (CTS - yhtenäinen tyyppijärjestelmä).

    Lisäksi FCL-kirjasto sisältää Common Language Specification (CLS - Common Language Specification), joka määrittelee: kieliintegraation perussäännöt. CLS-spesifikaatio määrittelee alustakielen vähimmäisvaatimukset. NETTO. Tämän määrityksen täyttävät kääntäjät tuottavat objekteja, jotka voivat olla vuorovaikutuksessa toistensa kanssa. Siksi mikä tahansa CLS-yhteensopiva kieli voi käyttää kaikkia FCL-kirjaston ominaisuuksia.

    Kuten jo todettiin, tärkeimmät alustalle tarkoitetut kielet. NET Framework ovat C#, VB. NET, Managed C++ ja JScript. NETTO. Näille kielille Microsoft tarjoaa omia kääntäjiään, jotka kääntävät ohjelman IL-koodiksi, jonka suorittaa CLR JIT -kääntäjä. Microsoftin lisäksi useat muut yritykset ja akateemiset organisaatiot ovat luoneet omia kääntäjiään, jotka luovat CLR:ssä toimivaa koodia. Tällä hetkellä kääntäjät tunnetaan Pascalista, Cobolista, Lispistä, Perlistä, Prologista jne. Tämä tarkoittaa, että voit kirjoittaa ohjelman esimerkiksi Pascalilla ja sitten luoda sopivaa kääntäjää käyttämällä hallittua koodia, joka toimii CLR:ssä.

    Sovelluksen, hankkeen, ratkaisun käsitteet

    NET Framework ei aseta rajoituksia luotaville sovelluksille. Katsotaanpa kuitenkin joitain yleisimmistä sovellustyypeistä:

    1. Konsolisovellusten avulla voit tulostaa "konsoliin", eli shell-ikkunaan.
    2. Windows-sovellukset, jotka käyttävät Windowsin käyttöliittymäelementtejä, kuten lomakkeita, painikkeita, valintaruutuja jne.
    3. Web-sovellukset ovat web-sivuja, joita voi tarkastella millä tahansa verkkoselaimella.
    4. Verkkopalvelut ovat hajautettuja sovelluksia, joiden avulla voit vaihtaa käytännöllisesti katsoen mitä tahansa dataa Internetissä yhdellä syntaksilla riippumatta siitä, mitä ohjelmointikieltä verkkopalvelun luomiseen käytettiin tai missä järjestelmässä sitä isännöidään.

    Kehiteillä olevaa sovellusta kutsutaan projektiksi. Useita sovelluksia voidaan yhdistää ratkaisuksi.

    Kätevä sovelluskehitysympäristö on Visual Studio .Net.

    Visual Studio .Net -kehitysympäristö

    Tällä kurssilla opimme C#-kieltä. Aloitetaan kieleen tutustuminen kehittämällä konsolisovelluksia. Käytämme kehitysympäristönä Visual Studiota. Netto (VS).

    Voit luoda C#-lähdekooditiedostoja tavallisella tekstieditorilla, kuten Notepadilla, ja kääntää ne siihen hallitut moduulit käyttämällä mukana tulevaa komentorivikääntäjää. NET Framework. On kuitenkin kätevintä käyttää VS:ää näihin tarkoituksiin, koska:

    1. VS suorittaa automaattisesti kaikki lähdekoodin kääntämiseen tarvittavat vaiheet.
    2. VS-tekstieditori on määritetty toimimaan VS:n tukemien kielten, kuten C#, kanssa, joten se voi havaita älykkäästi virheet ja pyytää sinua kirjoittaessasi etsimään tarkalleen, mitä koodia tarvitaan.
    3. VS sisältää ohjelmia, joiden avulla voit luoda Windows- ja Web-sovelluksia käyttämällä yksinkertaisia ​​vedä ja pudota -käyttöliittymäelementtejä.
    4. Monen tyyppisiä projekteja, joita voidaan luoda C#:lla, voidaan kehittää "luuranko"-koodin perusteella, joka sisältyy ohjelmaan etukäteen. Sen sijaan, että aloittaisit joka kerta tyhjästä, VS antaa sinun käyttää olemassa olevia lähdekooditiedostoja, mikä vähentää projektin luomiseen kuluvaa aikaa.

    Ensimmäisen projektin luominen

    Luo projekti käynnistämällä VS ja valitsemalla sitten komento VS-päävalikosta Tiedosto – Uusi – Projekti. Sitten avautuu valintaikkuna Uusi projekti(katso kuva 1.1).


    Riisi. 1.1.

    Kentällä Projektityypit pitäisi valita Visuaalinen C#, kentällä MallitKonsolisovellus.

    Jonossa Nimi syötä sovelluksen nimi Hei. Huomaa, että rivillä näkyy sama nimi Ratkaisun nimi. Poista valinta ruudusta Luo sovellukselle hakemisto(niin kauan kuin luomme yksinkertaista sovellusta, meidän ei tarvitse monimutkaistaa sen rakennetta).

    Linjassa Sijainti määritä sijainti levyllä, johon haluat tallentaa projektisi. Ja paina nappia OK. Likimääräinen näyttökuva on esitetty kuvassa 1.2


    Riisi. 1.2.

    Oikeassa yläkulmassa on projektinhallintaikkuna Solution Explorer Näytä - Solution Explorer. Tässä ikkunassa luetellaan kaikki projektiin sisältyvät resurssit:

    1. AssemblyInfo.cs – tietoa aiheesta kokoonpano.

      Suorituksensa seurauksena kääntäjä luo ns kokoonpano– exe- tai dll-tunnisteella varustettu tiedosto, joka sisältää IL-koodin ja metatiedot.

    2. System, System.Data, System.Xml – linkit vakiokirjastoihin.
    3. Program.cs - ohjelmateksti C#-kielellä.

    Kommentti. Muissa VS-versioissa tämä sisältää myös ico-tunnisteen sisältävän tiedoston, joka vastaa sovelluksen pikakuvakkeen ulkonäöstä.

    Näytön oikeassa alakulmassa on ominaisuusikkuna. Ominaisuudet. Jos se on suljettu, voit ottaa sen käyttöön komennolla Näytä - Ominaisuudet. Tässä ikkunassa näkyvät valitun elementin tärkeimmät ominaisuudet.

    Päänäytön tilaa vie editori-ikkuna, joka sisältää ympäristön automaattisesti luoman ohjelmatekstin. Teksti on kehys, johon ohjelmoija lisää tarvittavan koodin. Tässä tapauksessa varatut sanat näkyvät sinisellä, kommentit vihreällä ja pääteksti mustalla.

    Teksti on jäsenneltyä. Miinusmerkin napsauttaminen piilottaa koodilohkon. Plus-merkin napsauttaminen avaa sen.

    Avataan projektin sisältävä kansio ja katsotaan sen rakennetta (ks. kuva 1.3). Lihavoidut tiedostot näkyvät vasta kääntämisen jälkeen.


    Riisi. 1.3.

    Tässä vaiheessa seuraavat tiedostot kiinnostavat meitä erityisesti:

    1. Hei.sln– koko projektista vastaava päätiedosto. Jos sinun on avattava projekti muokkausta varten, sinun on valittava tämä tiedosto. Loput tiedostot avautuvat automaattisesti.
    2. Program.cs- tiedosto, joka sisältää lähdekoodin - C#:lla kirjoitettu koodi. Tämän tiedoston kanssa työskentelemme suoraan.
    3. Hello.exe– tiedosto, joka sisältää luodun IL-koodin ja projektin metatiedot. Toisin sanoen tämä tiedosto on valmis sovellus, joka voidaan suorittaa millä tahansa tietokoneella, johon .Net-alusta on asennettu.

    Katsotaan nyt itse ohjelman tekstiä.

    järjestelmän avulla on direktiivi, joka sallii nimiavaruuden vakioluokkanimien käytön Järjestelmä suoraan määrittelemättä sen tilan nimeä, jossa ne määritettiin.

    avainsana nimiavaruus luo projektille oman nimiavaruuden, jota kutsutaan oletusarvoisesti projektin nimeksi. Meidän tapauksessamme nimiavaruuden nimi on Hello. Ohjelmoijalla on kuitenkin oikeus määrittää toinen nimi. Nimiavaruus rajoittaa nimen laajuutta ja tekee siitä merkityksellisen vain kyseisessä tilassa. Tämä tehdään, jotta voit antaa nimiä ohjelmaobjekteille ilman huolta siitä, että ne vastaavat muiden sovellusten nimiä. Siten nimiavaruuksien avulla voit välttää ohjelmistoobjektien ristiriitaiset nimet, mikä on erityisen tärkeää sovellusten vuorovaikutuksessa.

    C# on oliokieli, joten sillä kirjoitettu ohjelma on kokoelma luokkia, jotka ovat vuorovaikutuksessa keskenään. Ohjelma-niminen luokka luotiin automaattisesti (muut puitteet voivat luoda luokan nimeltä Class1).

    Tämä luokka sisältää vain yhden menetelmän - Main()-metodin. Main()-metodi on ohjelman sisääntulokohta, ts. Tällä menetelmällä sovellus aloittaa suorittamisen. Jokaisella C#-ohjelmalla on oltava Main()-metodi.

    Kommentti On teknisesti mahdollista, että yhdessä ohjelmassa on useita Main()-menetelmiä, jolloin sinun on käytettävä komentoriviparametria kertomaan C#-kääntäjälle, mikä Main()-metodi on ohjelman sisääntulokohta.

    Debug-Start Debugging Jos ohjelma suoritetaan ilman virheitä, konsoliikkunaan tulee viesti, joka vilkkuu ja sulkeutuu nopeasti. Jos haluat tarkastella viestiä normaalitilassa, paina Ctrl+F5 tai suorita komento Debug-Start ilman virheenkorjausta.Meidän tapauksessamme seuraava konsoli-ikkuna avautuu:

    Jos ohjelmakoodissa on virheitä, esimerkiksi puolipiste puuttuu lähtökomennon jälkeen, niin F5-näppäimen painamisen jälkeen avautuu valintaikkuna, jossa näkyy viesti, että virhe on havaittu ja kysymys jatkaa työskentelyä edelleen. Jos vastaat Joo, niin ohjelman edellinen onnistuneesti käännetty versio suoritetaan. Muussa tapauksessa prosessi pysähtyy ja ohjaus siirtyy virheluetteloikkunaan Virheluettelo.

    Harjoittele. Muuta koodin tekstiä niin, että viesti näkyy näytöllä: Hurraa!!!Tänään tietojenkäsittelytiede!!!

    Johdanto

    PLATFORM on ainakin ohjelman suoritusympäristö ja... jotain muuta, joka määrää ohjelmakoodin kehittämisen ja suorituksen piirteet - ohjelmointiparadigmat, ohjelmointikielet, monet perusluokat.

    Microsoft.NET (.NET Framework) on ohjelmistoalusta. Sisältää seuraavat pääkomponentit: Common Language Runtime (CLR) ja .NET Framework -luokkakirjasto (.NET FCL).

    CLS (Common Language Specification) on ohjelmointikielien yleinen määritys. Se on joukko rakenteita ja rajoitteita, jotka opastavat kirjastojen luojia ja kääntäjiä .NET Frameworkissa. CLS:n mukaan rakennettuja kirjastoja voidaan käyttää millä tahansa ohjelmointikielellä, joka tukee CLS:ää. CLS-yhteensopivat kielet (mukaan lukien Visual C#, Visual Basic, Visual C++) voivat integroitua toisiinsa. CLS on Microsoft.NET-alustan kieltenvälisen viestinnän perusta.

    CLR (Common Language Runtime) – Runtime Environment tai Virtual Machine. Varmistaa, että rakentaminen on valmis. .NET Frameworkin ydinkomponentti. Virtuaalikone on kapseloidun (erillisen) korkean tason hallitun käyttöjärjestelmän abstraktio, joka varmistaa ohjelmakoodin suorittamisen ja sisältää seuraavat tehtävät:

    § koodin hallinta (lataus ja suoritus),

    § muistin hallinta objekteja asetettaessa,

    § sovelluksen muistin eristäminen,

    § koodin turvatarkastus,

    § välikielen muuntaminen konekoodiksi,

    § pääsy metatietoihin (laajennetut tiedot tyypeistä),

    § poikkeusten käsittely, mukaan lukien monikieliset poikkeukset,

    § vuorovaikutus hallitun ja hallitsemattoman koodin välillä (mukaan lukien COM-objektit),

    § tuki kehityspalveluille (profilointi, virheenkorjaus jne.).

    Lyhyesti sanottuna CLR on joukko palveluita, joita tarvitaan rakentamisen suorittamiseen. Tässä tapauksessa kokoonpanoohjelmakoodi voi olla joko hallittua (koodi, suoritettuna CLR, erityisesti aktivoi muistinhallintajärjestelmän) tai hallitsematon ("vanha" ohjelmakoodi).

    Itse CLR koostuu kahdesta pääkomponentista: ytimestä (mscoree.dll) ja perusluokkakirjastosta (mscorlib.dll). Näiden tiedostojen esiintyminen levyllä on varma merkki siitä, että tietokoneelle on ainakin yritetty asentaa .NET-alusta.

    Ajonaikainen ydin on toteutettu mscoree.dll-kirjastona. Kun kokoonpano on linkitetty, siihen rakennetaan erityisiä tietoja, jotka sovelluksen käynnistettäessä (EXE) tai kirjastoa ladattaessa (DLL:n kutsuminen hallitsemattomasta moduulista - LoadLibrary-funktion kutsuminen hallitun kokoonpanon lataamiseksi) johtaa CLR:n lataus ja alustus. Kun CLR on ladattu prosessin osoiteavaruuteen, ajonaikainen ydin suorittaa seuraavat toiminnot:

    § löytää kokoamispaikan,

    § lataa kokoonpanon muistiin,

    § analysoi kokoonpanon sisällön (tunnistaa luokat, rakenteet, rajapinnat),

    § analysoi metatietoja,

    § tarjoaa intermediate language (IL) -koodin kääntämisen alustariippuvaisiin ohjeisiin (kokoonpanokoodi),

    § suorittaa turvatarkastuksia,

    § käyttää pääsovellussäiettä, siirtää ohjauksen prosessorikomennoiksi muunnetulle kokoonpanokoodin fragmentille.

    FCL (.NET Framework Class Library) on CLS-yhteensopiva oliokirjasto luokista, liitännöistä ja tyyppijärjestelmistä (arvotyypeistä), jotka sisältyvät Microsoft .NET -alustaan.

    Tämä kirjasto tarjoaa pääsyn järjestelmän toimintoihin, ja se on tarkoitettu .NET-sovellusten, komponenttien ja ohjaimien kehittämisen perustaksi.

    NET-luokkakirjasto on CLR:n toinen komponentti.

    NET FCL:ää voivat käyttää KAIKKI .NET-sovellukset, ohjelmointikielen kehittämisen tarkoituksesta ja arkkitehtuurista riippumatta. Se sisältää erityisesti:

    § sisäänrakennetut (alkeis)tyypit, jotka esitetään luokkina (.NET-alustalla kaikki on rakennettu rakenteille tai luokille),

    § luokat graafisen käyttöliittymän kehittämiseen (Windows Form),

    § luokat ASP.NET-tekniikkaan (Web Forms) perustuvien web-sovellusten ja -palveluiden kehittämiseen,

    § luokat XML- ja Internet-protokollien kehittämiseen (FTP, HTTP, SMTP, SOAP),

    § luokat tietokantojen kanssa toimivien sovellusten kehittämiseen (ADO.NET),

    § ja paljon enemmän.

    NET-sovellus on sovellus, joka on suunniteltu toimimaan Microsoft.NET-alustalla. Toteutettu ohjelmointikielillä, jotka ovat CLS:n mukaisia.

    MSIL (Microsoft Intermediate Language, joka tunnetaan myös nimellä IL - Intermedia Language) on Microsoft.NET-alustan välikieli. .NET-sovellusten lähdekoodi on kirjoitettu ohjelmointikielillä, jotka noudattavat CLS-spesifikaatiota. Ohjelmointikielille, jotka noudattavat CLS-spesifikaatiota, voidaan rakentaa muuntaja MSIL-muotoon. Siten näiden kielten ohjelmat voidaan kääntää välikoodiksi MSIL:ssä. CLS-yhteensopivuuden ansiosta eri kielillä kirjoitetun ohjelmakoodin kääntäminen johtaa yhteensopivaan IL-koodiin.

    Itse asiassa MSIL on virtuaalinen prosessorikokoonpano.

    METADATA - muunnettaessa ohjelmakoodia MSIL:ksi generoidaan myös METADATA-lohko, joka sisältää tietoa ohjelmassa käytetyistä tiedoista. Itse asiassa nämä ovat taulukkojoukkoja, jotka sisältävät tietoa moduulissa määritellyistä tietotyypeistä, tietotyypeistä, joihin tämä moduuli viittaa. Aiemmin tällaiset tiedot on tallennettu erikseen. Sovellus voi esimerkiksi sisältää tietoja liitännöistä, jotka on kuvattu kohdassa Interface Definition Language (IDL). Metatiedot ovat nyt osa hallittua moduulia.

    Metatietoja käytetään erityisesti:

    § tallentaa tietoja tyypeistä. Käännettäessä otsikko- ja kirjastotiedostoja ei enää tarvita. Kääntäjä lukee kaikki tarvittavat tiedot suoraan hallituista moduuleista,

    § koodin tarkistus moduulin suorituksen aikana,

    § dynaaminen muistinhallinta (muistin vapauttaminen) moduulin suorituksen aikana,

    § kehitettäessä ohjelmaa vakiotyökaluilla (Microsoft Visual Studio.NET)

    § Dynaaminen vihje (IntelliSense) tarjotaan metatietojen perusteella.

    Kielet, joille MSIL-käännös on toteutettu:

    ja monet muut kielet.

    Suoritettava - Kääntäjästä (ja syöttökielestä) riippumatta .NET-sovelluskäännöksen tulos on hallittu suoritettava tiedosto (hallittu moduuli). Tämä on tavallinen Windows kannettava suoritettava tiedosto (PE - Portable Executable).

    Hallitun moduulin elementit on esitetty taulukossa.

    Hallittu moduuli sisältää hallitun koodin.

    Hallittu koodi on koodi, joka toimii CLR:ssä. Koodi on rakennettu lähdemoduulissa ilmoitettujen rakenteiden ja luokkien pohjalta, jotka sisältävät menetelmämäärityksiä. Hallitulla koodilla on oltava tietty taso tietoa (metadata) ajonaikaista ympäristöä varten. C#-, Visual Basic- ja JScript-koodia hallitaan oletusarvoisesti. Visuaalista C++-koodia ei hallita oletuksena, mutta kääntäjä voi tuottaa hallittua koodia määrittämällä komentoriviargumentin (/CLR). Yksi hallitun koodin ominaisuuksista on mekanismit, joiden avulla voit työskennellä MANAGED DATA:n kanssa.

    Hallitut tiedot ovat objekteja, jotka moduulikoodin suorittamisen aikana sijoitetaan hallittuun muistiin (hallittuun kasaan) ja tuhoavat CLR-jätteenkeräimen. C#-, Visual Basic- ja JScript .NET -tietoja hallitaan oletusarvoisesti. C#-tiedot voidaan myös merkitä hallitsemattomiksi.

    Assembly on .NET Frameworkin sovelluksen perusrakennusosa. Hallitut moduulit yhdistetään kokoonpanoiksi. Kokoonpano on yhden tai useamman hallitun moduulin tai resurssitiedoston looginen ryhmittely. Hallitut moduulit kokoonpanoissa suoritetaan Runtime Environment (CLR) -ympäristössä. Kokoonpano voi olla joko suoritettava sovellus (tiedostossa, jonka laajennus on .EXE) tai kirjastomoduuli (tiedostossa, jonka laajennus on .DLL). Samaan aikaan kokoonpanolla ei ole mitään yhteistä tavallisten (vanhan tyylisten!) suoritettavien sovellusten ja kirjastomoduulien kanssa.

    Kokoonpanoilmoitus (Manifest) on olennainen osa kokoonpanoa. Toinen joukko metatietotaulukoita, jotka:

    § tunnistaa kokoonpanon tekstinimen, sen version, kulttuurin ja digitaalisen allekirjoituksen muodossa (jos kokoonpano on jaettu sovellusten kesken),

    § määrittää mukana olevat tiedostot (nimen ja hashin mukaan),

    § osoittaa kokoonpanossa olevat tyypit ja resurssit, mukaan lukien kuvaus niistä, jotka viedään kokoonpanosta,

    § luettelee riippuvuudet muista kokoonpanoista,

    § ilmaisee kokoonpanon moitteettoman toiminnan edellyttämät oikeudet.

    Näitä tietoja käytetään ajon aikana pitämään sovellus toiminnassa oikein.

    Prosessori EI VOI suorittaa IL-koodia. Ja IL-koodin kääntämisen suorittaa JIT-kääntäjä (just in time), jonka CLR aktivoi tarvittaessa ja suorittaa prosessori. Tässä tapauksessa JIT-kääntäjän tulokset tallennetaan RAM-muistiin. Käännetyn IL-koodin fragmentin ja vastaavan muistilohkon välille muodostetaan kartoitus, joka mahdollistaa sen jälkeen CLR:n siirtää ohjauksen tähän muistilohkoon kirjoitetuille prosessorikäskyille ohittaen toistuvan kutsun JIT-kääntäjälle.

    CLR-ympäristö mahdollistaa eri ohjelmointikielillä toteutettujen ohjelmistokomponenttien yhteistyön ja vuorovaikutuksen.

    Aiemmin luotuun metatietolohkoon perustuen CLR varmistaa TEHOKASTA vuorovaikutusta käynnissä olevien .NET-sovellusten välillä.

    CLR:ssä kaikki kokoonpanot ovat samat riippumatta siitä, millä ohjelmointikielillä ne on kirjoitettu. Tärkeintä on, että ne ovat CLS:n mukaisia. Itse asiassa CLR rikkoo ohjelmointikielten rajat (kielten välinen yhteentoimivuus). Näin ollen CLS:n ja CTS:n ansiosta .NET-sovellukset ovat itse asiassa MSIL (IL) -sovelluksia.

    CLR ratkaisee monia ongelmia, jotka ovat perinteisesti olleet sovelluskehittäjien keskipisteenä. CLR:n suorittamia toimintoja ovat:

    § MSIL-koodin varmennus ja dynaaminen (JIT) kokoaminen prosessorin ohjeiksi,

    § muistin, prosessien ja säikeen hallinta,

    § prosessien välisen vuorovaikutuksen järjestäminen,

    § turvallisuusongelmien ratkaiseminen (järjestelmän olemassa olevan turvallisuuspolitiikan puitteissa).

    AppDomain on looginen kokoonpanosäilö, jota käytetään eristämään sovellus prosessin osoiteavaruudesta. Kaikki sovelluksen luomat objektit luodaan tietyn sovellusalueen sisällä. Yhdessä käyttöjärjestelmäprosessissa voi olla useita sovellusalueita. CLR eristää sovellukset hallitsemalla muistia sovellusalueen sisällä.

    CLR-prosessissa (CLR-prosessi) käynnissä oleva koodi on erillinen muista tietokoneessa samanaikaisesti käynnissä olevista prosesseista.

    Järjestelmä käynnistää normaalin prosessin osoiteavaruudessa, joka on erityisesti varattu prosessille. CLR tarjoaa mahdollisuuden ajaa useita hallittuja sovelluksia YHDESSÄ PROSESSINSA. Jokainen hallinnoitu sovellus on liitetty omaan sovellusalueeseensa (lyhennetty AppDomain). Pääverkkotunnuksen lisäksi sovellukseen voidaan luoda useita lisäalueita.

    CLR-ajoajan rakenne näkyy kuvassa.

    Verkkotunnuksen ominaisuudet:

    §-alueet on eristetty toisistaan. Yhdelle toimialueelle luodut objektit eivät ole käytettävissä toisesta toimialueesta.

    § CLR pystyy purkamaan verkkotunnuksia ja kaikkia niihin liittyviä kokoonpanoja,

    § lisämääritykset ja verkkotunnuksen suojaus ovat mahdollisia,

    § Alueiden välistä tiedonvaihtoa varten on toteutettu erityinen suojattu pääsymekanismi (marshaling).

    § .NET Framework on kehittänyt oman komponenttimallinsa, jonka elementit ovat .NET-kokoonpanot (.NET-assembly), ja CLR:ssä on sisäänrakennetut mekanismit (COM Interop) suoraa ja taaksepäin yhteensopivuutta varten COM/COM+-mallin kanssa. ), jotka tarjoavat pääsyn COM-objekteihin .NET-sääntöjen mukaisesti ja .NET-kokoonpanoihin COM-sääntöjen mukaisesti. .NET-sovellukset eivät kuitenkaan vaadi komponenttien rekisteröintiä Windowsin rekisteriin.

    NET-sovelluksen suorittamiseksi riittää, että sijoitat tähän sovellukseen liittyvät kokoonpanot yhteen hakemistoon. Jos kokoonpanoa voidaan käyttää useissa sovelluksissa, se sijoitetaan ja rekisteröidään GAC:n (Global Assembly Cache) -apuohjelman avulla.

    CTS - Common Type System Standard Type System. Tuettu kaikilla alustan kielillä. Koska .NET on OOP:n lapsi, puhumme tässä alkeistyypeistä, luokista, rakenteista, liitännöistä, delegaateista ja luetteloista.

    Common Type System on tärkeä osa ajonaikaista ympäristöä, ja se määrittää syntaktisten rakenteiden rakenteen, tapoja ilmoittaa, käyttää ja soveltaa YLEISTÄ ajonaikatyyppejä. CTS sisältää perustiedot YLEISTÄ ESITTELYN tyyppien järjestelmästä, niiden käytöstä ja hallinnasta (arvomuunnossäännöt). CTS:llä on tärkeä rooli monikielisten hallittujen sovellusten integroinnissa.

    Nimiavaruus on tapa järjestää tyyppijärjestelmä yhdeksi ryhmäksi. Perusluokista on yhteinen kielikirjasto. Ja nimiavaruuskonsepti tarjoaa tehokkaan organisoinnin ja navigoinnin tässä kirjastossa. Ohjelmointikielestä riippumatta pääsy tiettyihin luokkiin on mahdollista ryhmittelemällä ne yhteisiin nimiavaruuksiin.

    Nimiavaruus Tarkoitus
    Järjestelmä
    System.Data Pääsy tietokantoihin
    System.Data.Common
    System.Data.OleDb
    System.Data.SqlClient
    System.Collections Luokat konttiobjektien kanssa työskentelemiseen
    System.Diagnostics Kurssit koodin jäljittämiseen ja virheenkorjaukseen
    System.Drawing Grafiikkatukikurssit
    System.Drawing.Drawing2D
    System.Drawing.Printing
    System.IO I/O-tuki
    System.Net Tuki tiedonsiirrolle verkkojen kautta
    System.Reflection Työskentely mukautettujen tyyppien kanssa Runtimessa
    System.Reflection.Emit
    System.Runtime.InteropServices Tuki vuorovaikutukseen "tavallisen koodin" kanssa – DLL:t, COM-palvelimet, etäkäyttö
    System.Runtime.Remoting
    System.Security Kryptografia, luvat
    System.Threading Työskentely säikeiden kanssa
    System.WEB Työskentely verkkosovellusten kanssa
    System.Windows.Form Työskentely Windows-käyttöliittymäelementtien kanssa
    System.XML XML-datan tuki

    Hallitsemattomien suoritettavien moduulien (tavalliset Windows-sovellukset) suorittamisen tarjoaa suoraan Windows-järjestelmä. Hallitsemattomat moduulit toimivat "yksinkertaisina" prosesseina Windows-ympäristössä. Ainoa vaatimus, joka tällaisten moduulien on täytettävä, on, että ne toimivat oikein Windows-ympäristössä. Niiden on toimittava "oikein" (ei saa kaataa järjestelmää, välttää muistivuotoja, ei estää muita prosesseja ja käyttää itse käyttöjärjestelmää oikein toimiakseen prosessien puolesta). Eli noudata yleisimpiä Windows-työskentelyn sääntöjä.

    Samanaikaisesti suurin osa hallitsemattoman moduulin oikean suorituskyvyn ongelmista (vuorovaikutus-, muistinvaraus- ja vapautusongelmat) ovat sovelluskehittäjien ongelmia. Esimerkiksi hyvin tunnettu COM-tekniikka on tapa organisoida heterogeenisten komponenttien vuorovaikutus sovelluksen sisällä.

    Objekti on laajassa mielessä muistialue (pino tai kasa), joka on varattu ohjelman suorituksen aikana minkä tahansa arvojen tallentamista varten. Sille on tunnusomaista tyyppi (kiinteä ominaisuusjoukko, joka määrää miehitetyn alueen koon, arvon tulkintamenetelmä, arvoalue, objektia manipuloitaessa sallittu toimintosarja) sijainti muistissa (osoite).

    Roskienkeräys on mekanismi, jonka avulla CLR voi määrittää, milloin objekti ei ole enää käytettävissä ohjelman hallitussa muistissa. Roskien keräämisen aikana hallittu muisti vapautetaan. Sovelluskehittäjälle roskienkeräysmekanismi tarkoittaa, että hänen ei enää tarvitse huolehtia muistin vapauttamisesta. Tämä voi kuitenkin vaatia muutoksia ohjelmointityyliin, esimerkiksi järjestelmäresurssien vapauttamismenettelyyn tulee kiinnittää erityistä huomiota. On tarpeen toteuttaa menetelmiä, jotka vapauttavat järjestelmäresurssit sovelluksen hallinnassa.

    Pino on erityisesti järjestetty muistialue, joka on suunniteltu objektiarvojen (muuttujien ja vakioiden) väliaikaiseen tallentamiseen, parametrien välittämiseen menetelmiä kutsuttaessa ja palautusosoitteen tallentamiseen. Pinonhallinta on melko yksinkertaista kasaan verrattuna. Se perustuu pinon päällä olevan vastaavan rekisterin arvon muuttamiseen. Kun pinon kokoa pienennetään, esineet yksinkertaisesti katoavat.

    Ohjelma C#

    Ohjelma on oikein rakennettu (joka ei aiheuta vastalauseita C#-kääntäjältä) lausesarja, jonka perusteella muodostetaan kokoonpano.

    Yleensä ohjelmoija luo luokkamääritykset sisältävän tiedoston, joka syötetään kääntäjälle. Kääntäjä esittää koontituloksen kokoonpanona, ja se määräytyy ohjelmoijan mieltymysten mukaan. Periaatteessa kokoonpano voi olla kahden tyyppistä:

    § Kannettava suoritettava tiedosto (PE-tiedosto .exe-tunnisteella), joka sopii suoritettavaksi suoraan CLR:llä,

    § Dynamic Link Library File (DLL-tiedosto .dll-tunnisteella), tarkoitettu käytettäväksi uudelleen komponenttina minkä tahansa sovelluksen osana.

    Joka tapauksessa kääntäjä rakentaa syöttökoodin perusteella IL-moduulin, manifestin ja luo kokoonpanon. Jatkossa kokoonpano voidaan suorittaa joko JIT-käännöksen jälkeen tai sitä voidaan käyttää osana muita ohjelmia.