Madhumuni ya vipengele na vipengele vya jukwaa la wavu la Microsoft. Muhtasari wa teknolojia ya NET Framework. Ni nini madhumuni ya Ainisho ya Lugha ya Kawaida CLS

Siku njema. Alexey Gulynin anawasiliana. Katika nakala iliyopita, tulijifunza juu ya njia za kupitisha hoja kwa njia katika C #. Katika makala hii ningependa kukuambia tena (kwa maneno rahisi) ni nini Mfumo wa Mtandao na Visual Studio. Makala haya ni mwendelezo wa maelezo ya Visual Studio na makala ya .Net Framework Mfumo wa Mtandao ni mazingira ya CLR (Common Language Runtime). sehemu kuu ya .Net Framework), ambayo inahakikisha utekelezaji wa nambari inayosimamiwa. CLR inadhibiti msimbo huu. Msimbo unaodhibitiwa ni nini? Msimbo ulioandikwa kwa Mfumo wa NET haukusanywi katika msimbo wa mwisho wa mashine, lakini katika lugha ya kati (kinachojulikana kama IL - Lugha ya Kati). Kisha mkusanyiko huu hupitishwa kwa mtumiaji (mashine lazima iwe na Mfumo wa .Net uliowekwa), umewekwa kwenye kumbukumbu na kutafsiri amri za IL katika vitendo vinavyotakiwa kufanywa.

Nini maana ya lugha ya kati IL?

Kwanza, ni jukwaa la kujitegemea, sio amefungwa kwa processor maalum.

Pili, uwepo wake unaruhusu CLR kudhibiti uendeshaji wa programu yako, i.e. usimruhusu kufanya mambo yoyote yasiyokubalika (kwa mfano, kudanganywa kwa kumbukumbu).

Sehemu ya pili muhimu baada ya CLR Maktaba ya darasa. Mfumo wa NET unajumuisha idadi kubwa ya madarasa, yaliyogawanywa katika nafasi za majina, ambayo hutoa utendaji wote wa msingi. Huu ndio utendakazi ambao programu yako inaweza kuhitaji, kwa mfano, kufanya kazi na faili, mtandao, michakato, na mfumo mdogo wa michoro.

Sehemu ya tatu ni Mifumo ya Maendeleo (kwa maneno mengine, maktaba za maendeleo). Hii inajumuisha maktaba kama vile WPF (Windows Presentation Foundation), ASP.NET, Entity Framework, WCF (Windows Communication Foundation), Windows Store, n.k. Kwa kweli, haya pia ni madarasa. Tofauti ni kwamba madarasa haya yameundwa kutatua shida maalum:

  • WPF - kwa kufanya kazi na programu za picha
  • ASP.NET - kwa kufanya kazi na programu za wavuti
  • WCF - kwa kufanya kazi na mtandao na kuunda programu zilizosambazwa (mteja-seva).
  • Mfumo wa Taasisi - kwa kufanya kazi na hifadhidata.

Wakati wa kuandika makala hii, toleo jipya zaidi ni .Net Framework 4.6

Mazingira kuu ya maendeleo yaliyopendekezwa na Microsoft ni Visual Studio. Microsoft kawaida ina hali hii: wakati toleo jipya la NET Framework linatolewa, basi baada ya muda toleo jipya la Visual Studio linatolewa. Ni nini kimejumuishwa katika Visual Studio (msingi):

  1. Kihariri cha maandishi kilicho na mwangaza wa msimbo wa sintaksia
  2. Mfumo wa usaidizi wa IntelliSence (unaweza kuitwa kiotomatiki au kwa njia ya mkato ya kibodi Ctrl + Space (spacebar)
  3. Watunzi kutoka lugha tofauti
  4. Maendeleo ya Maombi ya Haraka (RAD)
  5. Muumbaji wa kuona wa miingiliano, michoro
  6. Sehemu ya kufanya kazi na seva na hifadhidata
  7. Seva ya wavuti ya IIS na chaguo la seva ya SQL Express
  8. Debuggers, profilers, vipengele vinavyokuwezesha kushughulikia makosa
  9. Mfumo wa Usaidizi wa MSDN

Kufikia uandishi huu, toleo la hivi punde ni Visual Studio 2015.

Jinsi dhana ya programu inavyofanya kazi katika Visual Studio. Katika studio kuna dhana ya "Mradi" na "Suluhisho". Mradi ni kitengo cha mkusanyiko. Inajumuisha seti ya faili. Mradi mzima kawaida hukusanywa kuwa mkusanyiko (faili ya exe au faili ya dll). Miradi inaweza kuunganishwa katika Suluhisho. Suluhisho ni mkusanyiko wa miradi ambayo inaweza au isihusiane (kawaida inahusiana).

C#
  • Muda wa Kuendesha Lugha ya Kawaida) na maktaba ya darasa ...
  • Mfumo wa NET na Uainishaji wa CTS
    Lugha ya C# na usaidizi wake kwa sasa inahusishwa na .NET Framework iliyotengenezwa na Microsoft. Jukwaa lililopewa jina (tazama) ni pamoja na: wakati wa utekelezaji wa lugha ya kawaida (CLR - Muda wa Kuendesha Lugha ya Kawaida Maktaba ya Darasa la Mfumo). Ikumbukwe...
    (KUPANGA. KOZI YA MSINGI C#)
  • Inasakinisha .NET Framework na Visual Studio
    Katika Windows 7 na 8, jukwaa la NET tayari linapatikana na hakuna haja ya kufunga chochote. Ili kuendeleza programu katika jukwaa la NET, unahitaji kusakinisha mfumo wa ukuzaji wa Visual C# 2012 (au 2013) Toleo la Express - toleo la bure la mazingira ya ukuzaji ya Visual Studio (fupi, lakini karibu...
    (Upangaji unaolenga kitu)
  • C# AINA NA AINA ZA .NET FRAMEWORK
    Lugha ya C# na usaidizi wake kwa sasa inahusishwa na .NET Framework iliyotengenezwa na Microsoft. Jukwaa lililopewa jina (tazama) ni pamoja na: wakati wa utekelezaji wa lugha ya kawaida (CLR - Muda wa Kuendesha Lugha ya Kawaida) na maktaba ya darasa ...
    (KUPANGA. KOZI YA MSINGI C#)
  • Mfumo wa NET na Uainishaji wa CTS
    Lugha ya C# na usaidizi wake kwa sasa inahusishwa na .NET Framework iliyotengenezwa na Microsoft. Jukwaa lililopewa jina (tazama) ni pamoja na: wakati wa utekelezaji wa lugha ya kawaida (CLR - Muda wa Kuendesha Lugha ya Kawaida) na maktaba ya darasa (FCL - Maktaba ya Darasa la Mfumo). Ikumbukwe...
    (KUPANGA. KOZI YA MSINGI C#)
  • NET Framework hutumika kama mazingira ya kusaidia, kuendeleza, na kuendesha programu zilizosambazwa ambazo zinategemea vipengele (vidhibiti).

    Programu (programu) zinaweza kuendelezwa katika lugha tofauti za programu zinazounga mkono teknolojia hii.

    Mfumo wa NET hutoa:

    • matumizi ya pamoja ya lugha tofauti za programu;
    • usalama na portability ya programu;
    • mfano wa jumla wa programu kulingana na jukwaa la Windows.

    2. Je, ni sehemu gani kuu za .NET Framework?

    Kwa mtazamo wa programu, Mfumo wa NET unajumuisha sehemu kuu mbili:

    • mazingira ya utekelezaji wa lugha ya kawaida CLR (Wakati wa Kuendesha Lugha ya Kawaida);
    • maktaba ya darasa la msingi.

    Muda wa matumizi ya lugha ya kawaida (CLR) hutatua matatizo ya kugundua kiotomatiki aina za NET, kupakia aina hizo na kuzidhibiti. CLR hushughulikia usimamizi wa kumbukumbu, matengenezo ya programu, usindikaji wa nyuzi, na kutekeleza ukaguzi mwingi unaohusiana na usalama.

    Maktaba ya darasa la msingi ni pamoja na ufafanuzi wa primitives mbalimbali, ambayo inaweza kuwa: mitiririko, API za picha, utekelezaji wa hifadhidata, faili I/O, n.k.

    3. Kanuni ya uendeshaji ya Muda wa Kuendesha Lugha ya Kawaida (CLR) ni ipi?

    Muda wa matumizi ya lugha ya kawaida (CLR) hudhibiti utekelezaji wa msimbo wa .NET.

    Baada ya kuandaa programu katika C # (au lugha nyingine), faili inaundwa ambayo ina aina maalum ya pseudocode au bytecode (na sio faili inayoweza kutekelezwa, kama ilivyokuwa hapo awali). Pseudocode hii inaitwa (MSIL) au Lugha ya Kawaida ya Kati (CIL). Msimbo huu wa upendeleo ni Lugha ya Kati ya Microsoft.

    Kusudi kuu la CLR ni kugeuza msimbo wa kati wa MSIL kuwa msimbo unaoweza kutekelezeka wakati wa utekelezaji wa programu.

    Mpango wowote ambao umeundwa kwa pseudocode ya MSIL inaweza kutekelezwa katika mazingira yoyote ambayo yana utekelezaji wa CLR. Hii inaruhusu programu kubebeka ndani ya .NET Framework.

    Mchele. 1. Mchakato wa kubadilisha msimbo wa chanzo kuwa msimbo wa MSIL (CIL au IL) na kuunda faili ya mkusanyiko (*.dll au *.exe)

    Baada ya hayo, pseudocode inageuka kuwa nambari inayoweza kutekelezwa. Hii inafanywa na mkusanyaji wa JIT. Mkusanyiko wa JIT (Kwa wakati tu) ni mkusanyiko wa kuruka.

    CLR ina jukumu la kuamua mahali pa kuweka mkusanyiko.

    Aina iliyoombwa ambayo imewekwa kwenye mkusanyiko (kama vile darasa la ArrayList au aina nyingine) hubainishwa katika faili ya jozi (*.dll au *.exe) kwa kusoma metadata ya faili.

    CLR kisha huweka aina iliyosomwa kutoka kwa mkusanyiko hadi kwenye kumbukumbu.

    CLR kisha hugeuza msimbo wa CIL kuwa maagizo yanayofaa ambayo yanalengwa kwa jukwaa maalum (kulingana na PC, mfumo wa uendeshaji, nk). Kwa kuongeza, hundi muhimu za usalama hufanyika katika hatua hii.

    Kitu cha mwisho cha kufanya ni kutekeleza nambari ya programu iliyoombwa.

    4. Lugha ya kati ya MSIL ni nini ( Lugha ya Kati ya Microsoft) au CIL (Lugha ya Kawaida ya Kati)?

    Mara ya kwanza, lugha ya kati ya pseudocode iliitwa Lugha ya Kati ya Microsoft(MSIL). Baadaye (katika matoleo mapya zaidi ya .NET) jina hili lilibadilishwa hadi Lugha ya Kati ya Kawaida (CIL - Lugha ya Kati ya Kawaida). Vifupisho MSIL, CIL na IL (Lugha ya Kati) vinamaanisha kitu kimoja.

    Lugha ya kati CIL (au MSIL) huundwa baada ya kuandaa programu katika baadhi ya lugha ya programu inayoauni Mfumo wa NET.

    MSIL ni pseudocode. MSIL inafafanua seti ya maagizo ambayo:

    • inaweza kuhamishiwa kwenye majukwaa tofauti;
    • usitegemee processor maalum.

    Kwa kweli, MSIL ni lugha ya kusanyiko inayobebeka

    5. Je, ni mkutano gani kutoka kwa mtazamo wa teknolojia ya NET?

    Mikusanyiko ni faili zilizo na viendelezi vya *.dll au *.exe ambavyo vina maagizo ya Lugha ya Kati inayojitegemea ya NET (IL) pamoja na aina ya metadata.

    Mkutano huundwa kwa kutumia mkusanyaji wa NET. Mkutano ni kitu kikubwa cha binary.

    Mkutano umeundwa ili kuhifadhi nafasi za majina. Nafasi za majina zina aina. Aina inaweza kuwa madarasa, wajumbe, interfaces, enumerations, miundo.

    Mkusanyiko unaweza kuwa na idadi yoyote ya nafasi za majina. Nafasi yoyote ya majina inaweza kuwa na idadi yoyote ya aina (madarasa, violesura, miundo, hesabu, wajumbe).

    6. Ni nini kinachojumuishwa katika makusanyiko?

    Mikusanyiko ina msimbo wa CIL (msimbo wa MSIL au msimbo wa IL) na metadata.

    Msimbo wa CIL unatungwa kwa ajili ya jukwaa mahususi iwapo tu utafikiwa kutoka kwa wakati wa utekelezaji wa .NET.

    Metadata inaeleza kwa kina vipengele vya kila aina ambavyo vipo ndani ya kitengo cha binary cha .NET.

    Kwa mfano Unapounda Maombi ya Fomu za Windows katika C #, faili ya Assembly.info inaundwa. Faili hii iko kwenye folda ndogo ya Sifa inayohusiana na folda kuu ya programu. Faili hii hutoa habari ya jumla kuhusu mkusanyiko.

    7. Dhahiri ni nini?

    Ilani ni maelezo ya kusanyiko lenyewe kwa kutumia metadata.

    Faili ya maelezo ina habari ifuatayo:

    • kuhusu toleo la sasa la mkutano;
    • habari kuhusu utamaduni (ujanibishaji wa rasilimali za mstari na graphic);
    • orodha ya viungo kwa makusanyiko yote ya nje ambayo yanahitajika kwa utendaji mzuri.

    8. Mchoro wa mwingiliano kati ya msimbo wa chanzo, mkusanyaji wa NET, na injini ya wakati wa kukimbia ya NET.

    Kitengeneza programu huunda msimbo wa chanzo wa programu katika lugha inayotumia teknolojia ya NET (C#, C++/CLI, Visual Basic .NET, n.k.). Programu imeundwa katika mazingira fulani ya programu, kama vile Microsoft Visual Studio. Mkusanyaji hutengeneza mkusanyiko - faili iliyo na maagizo ya CIL, metadata na faili ya maelezo.

    Baada ya kuendesha programu tumizi kwenye kompyuta fulani (jukwaa fulani), injini ya wakati wa kukimbia ya NET inazinduliwa. Kwanza, moja ya matoleo (angalau) ya Mfumo wa NET lazima iwe imewekwa kwenye kompyuta.

    Ikiwa msimbo wa chanzo hutumia maktaba za darasa la msingi (kwa mfano, kutoka kwa mkusanyiko wa mscorlib.dll), basi hupakiwa kwa kutumia kipakiaji cha darasa.

    Mkusanyaji wa JIT hukusanya mkusanyiko kwa kuzingatia (kuunganisha) vipengele vya maunzi na programu vya kompyuta ambayo programu inaendesha.

    Baada ya hayo, programu inaendesha.

    Kielelezo 2. Uhusiano kati ya msimbo wa chanzo, mkusanyaji, na injini ya wakati wa kukimbia ya NET

    9. Kuna aina gani za makusanyiko?

    Kuna aina mbili za makusanyiko:

    • makusanyiko ya faili moja;
    • makusanyiko ya faili nyingi.

    Mkusanyiko unaojumuisha moduli moja (*.dll au *.exe) huitwa faili-moja. Mikusanyiko ya faili moja huweka maagizo yote muhimu ya CIL, metadata, na maonyesho katika kifurushi kimoja kilichobainishwa vyema.

    Mkusanyiko unaojumuisha faili nyingi za msimbo wa NET unaitwa mkusanyiko wa faili nyingi. Kila moja ya faili hizi inaitwa moduli.

    Katika mkusanyiko wa faili nyingi, moja ya moduli ni moja kuu (ya msingi).

    10. Ni faili gani iliyo na mkusanyiko mkuu wa maktaba ya MS Visual Studio?

    Mkutano mkuu iko kwenye faili "mscorlib.dll".

    11. Mfumo wa jumla wa aina ya CTS ni nini?

    CTS (Mfumo wa Aina ya Kawaida) - mfumo wa aina ambao una maelezo kamili ya aina zote za data zinazowezekana na miundo ya programu ambayo inaauniwa na wakati wa utekelezaji wa lugha ya kawaida CLR. Pia inaeleza jinsi vyombo hivi vinaweza kuingiliana.

    Aina inaweza kuwa madarasa, interfaces, miundo, enumerations, wajumbe.

    12. Madhumuni ya Ainisho ya Lugha ya Kawaida CLS ni nini?

    Kama unavyojua, sio lugha zote za programu ambazo zinaoana na NET zinaweza kusaidia utendakazi wa mfumo wa aina ya CTS. Kwa kusudi hili, maelezo ya lugha ya kawaida CLS (Uainishaji wa Lugha ya Kawaida) hutumiwa.

    Madhumuni ya CLS ni kuelezea tu sehemu ndogo ya aina za kawaida na miundo ya programu ambayo inakubaliwa na lugha zote za programu zinazotumia .NET.

    13. Ni lugha gani za programu zinazounga mkono teknolojia ya NET?

    Katika mfumo wa maendeleo ya programu ya MS Visual Studio, teknolojia ya NET inasaidiwa na lugha zifuatazo za programu: C #, Visual Basic .NET, C++/CLI, JScript .NET, F#, J#.

    Ili uweze kutumia teknolojia ya .NET, unahitaji kusakinisha programu kwenye kompyuta yako Zana ya Ukuzaji wa Programu ya Microsoft .NET Framework(SDK) au Microsoft Visual Studio ya toleo lolote.

    14. Nafasi ya majina ni nini?

    Nafasi ya majina imekusudiwa kuunganisha kundi la aina ambazo zinahusiana kutoka kwa mtazamo wa kisemantiki. Aina zimewekwa katika makusanyiko (mkusanyiko). Aina za wastani za madarasa, wajumbe, violesura, miundo, na hesabu.

    Mifano ya majina ya nafasi ya majina:

    Mfumo Data.Mfumo Mfumo.IO Mfumo.Makusanyo Kazi.za.Uzi.Mfumo

    Kwa mfano, nafasi ya majina ya System.Data ina aina kuu za kufanya kazi na hifadhidata, na nafasi ya majina ya System.Collections ina aina kuu za kufanya kazi na makusanyo.

    15. Jinsi ya kuonyesha yaliyomo katika makusanyiko, nafasi za majina na aina katika MS Visual Studio?

    Mfumo wa Microsoft Visual Studio una Kivinjari cha Kitu cha matumizi, kinachoitwa kutoka kwa menyu ya Tazama (Mchoro 3).

    Mchele. 3. Kupigia simu matumizi ya Kivinjari cha Kitu

    Hii itafungua dirisha la Kivinjari cha Kitu, ambacho kitaonyesha makusanyiko ambayo hutumiwa katika teknolojia fulani.

    Mchoro wa 4 unaonyesha orodha ya makusanyiko ambayo yanaonyeshwa katika teknolojia ya ".NET Framework 4". Mkutano unaoitwa "mscorlib" umeangaziwa.

    Mchele. 4. Dirisha la Kivinjari la kitu na mkusanyiko wa mscorlib.dll umeangaziwa

    Ikiwa unapanua yaliyomo kwenye mkusanyiko wa mscorlib (" + "), kisha orodha ya nafasi zote za majina ya mkusanyiko huu itaonyeshwa (Mchoro 5). Kama unaweza kuona kutoka kwa takwimu, mkusanyiko unajumuisha nafasi za majina Microsoft.Win32, System, System.Collections, System.Collections.Concurrent, na wengine wengi.

    Mchele. 5. Mkusanyiko wa mscorlib na orodha ya nafasi za majina ambazo zimejumuishwa ndani yake

    Nafasi zozote za majina zimepanuliwa kwa njia ile ile. Nafasi za majina hufafanua aina. Aina zinaelezea mbinu, mali, mara kwa mara, nk.

    Kielelezo cha 6 kinaonyesha darasa la BinaryReader kutoka kwa nafasi ya majina ya System.IO. Inavyoonekana, darasa hutumia njia zinazoitwa BinaryReader(), Funga(), Tupa(), FillBuffer() na zingine.

    Mchele. 6. Yaliyomo katika darasa la BinaryReader

    16. Jinsi ya kuunganisha nafasi ya jina katika programu ya C #?

    Ili kuunganisha nafasi ya majina, tumia neno kuu la kutumia

    Seti ya njia ambazo programu huandikwa, kusahihishwa, kubadilishwa kuwa nambari za mashine, kutatuliwa na kuzinduliwa inaitwa. mazingira ya maendeleo au ganda. Platform.Net au Mfumo wa Mtandao- ni zaidi ya tu mazingira ya maendeleo programu, hii ni mchanganyiko mpya wa mapinduzi ya teknolojia tofauti hapo awali na Microsoft, ambayo hukuruhusu kukuza aina tofauti za programu katika lugha tofauti za programu kwa mifumo tofauti ya uendeshaji.

    NET Framework ni nyongeza kwa mfumo wa uendeshaji, ambayo inaweza kuwa toleo lolote la Windows, Unix, na OS yoyote kwa ujumla (kulingana na watengenezaji), na inajumuisha idadi ya vipengele. Kwa hiyo,. Mfumo wa NET ni pamoja na:

    1. Lugha nne rasmi: C#, VB.NET, Managed C++ na JScript .NET.
    2. Muda wa utekelezaji unaoelekezwa kwa lugha ya kawaida (CLR) unaoshirikiwa na lugha hizi ili kuunda programu.
    3. Msururu wa maktaba za darasa zilizounganishwa chini ya jina la kawaida FCL (Maktaba ya Hatari ya Mfumo).

    Sehemu kuu ya jukwaa. NET Framework ni mazingira ya kawaida ya matumizi ya lugha kwa programu za CLR. Jina la mazingira - "wakati wa kukimbia kwa lugha ya kawaida" - huzungumza yenyewe: ni mazingira ya kukimbia ambayo yanafaa kwa lugha mbalimbali za programu. Kazi za CLR ni pamoja na:

    1. Mkusanyiko wa hatua mbili: kubadilisha programu iliyoandikwa katika moja ya lugha za programu kuwa nambari iliyosimamiwa lugha ya kati ( Lugha ya Kati ya Microsoft, MSIL, au IL tu), na kisha kubadilisha msimbo wa IL kuwa msimbo wa mashine kwa kichakataji mahususi, ambacho hutekelezwa kwa kutumia mashine pepe au mkusanyaji wa Wakati wa Wakati (hukusanya kwa wakati unaofaa);
    2. usimamizi wa kanuni: kupakia na kutekeleza msimbo wa IL uliotengenezwa tayari kwa kutumia mkusanyaji wa JIT;
    3. kufikia metadata kwa madhumuni ya uthibitishaji usalama wa kanuni;
    4. usimamizi wa kumbukumbu wakati wa kuweka vitu kwa kutumia mtoza takataka (Mtoza takataka);
    5. kushughulikia vighairi na hali za kipekee, ikijumuisha vighairi vya lugha mtambuka;
    6. kutekeleza mwingiliano kati ya msimbo unaosimamiwa (msimbo ulioandikwa kwa CLR) na msimbo usiodhibitiwa;
    7. msaada kwa ajili ya huduma kwa ajili ya kuendeleza aina mbalimbali za maombi.

    Sehemu inayofuata. Net Framework ni FCL - Maktaba ya Darasa la Mfumo. Maktaba hii imegawanywa katika moduli kadhaa kwa njia ambayo inawezekana kutumia sehemu moja au nyingine kulingana na matokeo yanayohitajika. Kwa hivyo, kwa mfano, moja ya moduli ina "matofali" ambayo unaweza kuunda programu za Windows, nyingine ina "matofali" muhimu kwa kuandaa kazi kwenye mtandao, nk.

    Sehemu ya FCL imejikita katika kuelezea aina za kimsingi. Aina ni njia ya kuwakilisha data; kutambua zile za msingi hurahisisha kushiriki lugha za programu kwa usaidizi. Mfumo wa NET. Kwa pamoja hii inaitwa Mfumo wa Aina ya Kawaida (CTS - mfumo wa aina ya umoja).

    Kwa kuongeza, maktaba ya FCL inajumuisha Uainishaji wa Lugha ya Kawaida (CLS - maelezo ya lugha ya kawaida), ambayo huanzisha: sheria za msingi za ushirikiano wa lugha. Viainisho vya CLS hufafanua mahitaji ya chini kabisa ya lugha ya mfumo. WAVU. Wakusanyaji wanaokidhi vipimo hivi huzalisha vitu vinavyoweza kuingiliana. Kwa hivyo, lugha yoyote inayotii CLS inaweza kutumia vipengele vyote vya maktaba ya FCL.

    Kama ilivyoelezwa tayari, lugha kuu zilizokusudiwa kwa jukwaa. Mfumo wa NET ni C #, VB. NET, C++ inayosimamiwa na JScript. WAVU. Kwa lugha hizi, Microsoft hutoa watunzi wake ambao hutafsiri programu katika msimbo wa IL, ambayo inatekelezwa na mkusanyaji wa CLR JIT. Kando na Microsoft, makampuni na mashirika mengine kadhaa ya kitaaluma yameunda watunzi wao ambao hutoa msimbo unaoendeshwa katika CLR. Hivi sasa, wakusanyaji wanajulikana kwa Pascal, Cobol, Lisp, Perl, Prolog, nk. Hii ina maana kwamba unaweza kuandika programu, kwa mfano, katika Pascal, na kisha, kwa kutumia mkusanyaji sahihi, unda msimbo uliosimamiwa ambao utaendesha katika CLR.

    Dhana za maombi, mradi, suluhisho

    NET Framework haitoi vikwazo vyovyote kwa aina za programu zinazoweza kuundwa. Hiyo ilisema, wacha tuangalie baadhi ya aina za kawaida za programu:

    1. Maombi ya Console hukuruhusu kutoa kwa "console", ambayo ni, kwa dirisha la ganda.
    2. Programu za Windows zinazotumia vipengele vya kiolesura cha Windows, ikiwa ni pamoja na fomu, vifungo, visanduku vya kuteua, n.k.
    3. Programu za wavuti ni kurasa za wavuti ambazo zinaweza kutazamwa na kivinjari chochote cha wavuti.
    4. Huduma za wavuti ni programu zilizosambazwa ambazo hukuruhusu kubadilishana takriban data yoyote kwenye Mtandao kwa kutumia sintaksia moja, bila kujali ni lugha gani ya programu ilitumika kuunda huduma ya wavuti au kwenye mfumo gani inapangishwa.

    Programu inayoendelezwa inaitwa mradi. Maombi kadhaa yanaweza kuunganishwa kuwa suluhisho.

    Mazingira rahisi ya uundaji wa programu ni Visual Studio .Net.

    Mazingira ya maendeleo ya Visual Studio

    Katika kozi hii tutajifunza lugha ya C#. Wacha tuanze kufahamiana na lugha kwa kukuza programu za kiweko. Tutatumia Visual Studio kama mazingira yetu ya maendeleo. Wavu (VS).

    Unaweza kuunda faili za msimbo wa C# kwa kutumia kihariri cha maandishi cha kawaida kama vile Notepad na kuzikusanya moduli zinazosimamiwa kwa kutumia mkusanyaji wa mstari wa amri ambao umejumuishwa. Mfumo wa NET. Walakini, ni rahisi zaidi kutumia VS kwa madhumuni haya kwa sababu:

    1. VS hufanya kiotomatiki hatua zote zinazohitajika ili kukusanya msimbo wa chanzo.
    2. Kihariri maandishi cha VS kimesanidiwa kufanya kazi na lugha zinazotumika na VS, kama vile C#, kwa hivyo kinaweza kugundua hitilafu kwa akili na kukuarifu unapoandika ili kupata msimbo unaohitajika.
    3. VS inajumuisha programu zinazokuwezesha kuunda programu za Windows na Wavuti kwa kutumia vipengee rahisi vya kuburuta na kudondosha mtumiaji.
    4. Aina nyingi za miradi ambayo inaweza kuundwa katika C # inaweza kuendelezwa kulingana na kanuni ya "mifupa" ambayo imejumuishwa katika programu mapema. Badala ya kuanza kutoka mwanzo kila wakati, VS hukuruhusu kutumia faili za msimbo wa chanzo zilizopo, ambayo inapunguza muda unaohitajika kuunda mradi.

    Kuunda mradi wa kwanza

    Ili kuunda mradi, uzindua VS, na kisha uchague amri kutoka kwa menyu kuu ya VS Faili - Mpya - Mradi. Kisha menyu ya mazungumzo itafungua Mradi Mpya(tazama Mchoro 1.1).


    Mchele. 1.1.

    Katika shamba Aina za mradi inapaswa kuchagua Visual C#, shambani ViolezoMaombi ya Console.

    Katika mstari Jina ingiza jina la programu Habari. Kumbuka kwamba jina moja litaonekana kwenye mstari Jina la Suluhisho. Ondoa uteuzi kwenye kisanduku Unda saraka ya Maombi(kwa sasa tunaunda programu rahisi na hakuna haja ya kuchanganya muundo wake).

    Katika mstari Mahali amua eneo kwenye diski ambapo unataka kuhifadhi mradi wako. Na bonyeza kitufe sawa. Mtazamo wa takriban wa skrini unaonyeshwa kwenye Mchoro 1.2


    Mchele. 1.2.

    Katika sehemu ya juu ya kulia kuna dirisha la usimamizi wa mradi Kichunguzi cha Suluhisho Tazama - Kichunguzi cha Suluhisho. Dirisha hili linaorodhesha rasilimali zote zilizojumuishwa katika mradi:

    1. AssemblyInfo.cs - habari kuhusu mkusanyiko.

      Kama matokeo ya utekelezaji wake, mkusanyaji huunda kinachojulikana mkusanyiko- faili iliyo na kiendelezi cha exe au dll ambacho kina msimbo wa IL na metadata.

    2. Mfumo, System.Data, System.Xml - viungo kwa maktaba ya kawaida.
    3. Program.cs - maandishi ya programu katika lugha ya C#.

    Maoni. Katika matoleo mengine ya VS, hii pia inajumuisha faili yenye ugani wa ico, ambayo inawajibika kwa kuonekana kwa njia ya mkato ya maombi.

    Chini ya kulia ya skrini kuna dirisha la mali. Mali. Ikiwa imefungwa, basi unaweza kuiwezesha kwa amri Tazama - Sifa. Dirisha hili linaonyesha sifa muhimu zaidi za kipengele kilichochaguliwa.

    Nafasi kuu ya skrini inachukuliwa na dirisha la mhariri, ambalo lina maandishi ya programu iliyoundwa moja kwa moja na mazingira. Maandishi ni mfumo ambao programu itaongeza msimbo muhimu. Katika kesi hii, maneno yaliyohifadhiwa yanaonyeshwa kwa bluu, maoni ya kijani, na maandishi kuu ya rangi nyeusi.

    Nakala imeundwa. Kubofya kwenye ishara ya kutoa kutaficha kizuizi cha msimbo; kubofya kwenye ishara ya kuongeza kutafungua.

    Hebu tufungue folda iliyo na mradi na uangalie muundo wake (tazama Mchoro 1.3). Faili zilizo katika herufi nzito zitaonekana tu baada ya kukusanywa.


    Mchele. 1.3.

    Katika hatua hii, faili zifuatazo zitakuwa za kupendeza kwetu:

    1. Habari.sln- faili kuu inayohusika na mradi mzima. Ikiwa unahitaji kufungua mradi wa kuhariri, unahitaji kuchagua faili hii. Faili zilizobaki zitafungua kiotomatiki.
    2. Programu.cs- faili ambayo ina msimbo wa chanzo - msimbo ulioandikwa katika C #. Ni faili hii ambayo tutafanya kazi nayo moja kwa moja.
    3. Habari.exe- faili ambayo ina msimbo wa IL uliozalishwa na metadata ya mradi. Kwa maneno mengine, faili hii ni programu iliyotengenezwa tayari ambayo inaweza kutekelezwa kwenye kompyuta yoyote ambayo jukwaa la .Net limesakinishwa.

    Sasa hebu tuangalie maandishi ya programu yenyewe.

    kwa kutumia System ni maagizo ambayo huruhusu matumizi ya majina ya kawaida ya darasa kutoka kwa nafasi ya majina Mfumo moja kwa moja bila kutaja jina la nafasi ambayo zilifafanuliwa.

    Neno muhimu nafasi ya majina huunda nafasi yake ya jina kwa mradi, ambao kwa chaguo-msingi huitwa jina la mradi. Kwa upande wetu, nafasi ya majina inaitwa Hello. Walakini, mpangaji programu ana haki ya kutaja jina tofauti. Nafasi ya majina huweka mipaka ya upeo wa jina, na kuifanya iwe na maana ndani ya nafasi hiyo pekee. Hii inafanywa ili uweze kutaja vitu vya programu bila kuwa na wasiwasi kwamba vitafanana na majina katika programu zingine. Kwa hivyo, nafasi za majina hukuruhusu kuzuia majina yanayopingana ya vitu vya programu, ambayo ni muhimu sana wakati programu zinaingiliana.

    C # ni lugha inayoelekezwa kwa kitu, kwa hivyo programu iliyoandikwa ndani yake itakuwa mkusanyiko wa madarasa yanayoingiliana. Darasa linaloitwa Program liliundwa kiotomatiki (matoleo mengine ya mfumo yanaweza kuunda darasa linaloitwa Class1 ).

    Darasa hili lina njia moja tu - Main() njia. Njia kuu () ni mahali pa kuingia kwenye programu, i.e. Ni kwa njia hii kwamba programu itaanza kutekelezwa. Kila mpango wa C# lazima uwe na Main() mbinu.

    Maoni Kitaalam inawezekana kuwa na njia nyingi kuu () katika programu moja, kwa hali ambayo utahitaji kutumia parameta ya mstari wa amri kumwambia mkusanyaji wa C # ni njia gani kuu () ndio njia ya kuingia kwenye programu.

    Debug-Start Debugging Ikiwa programu inatekelezwa bila makosa, ujumbe utaonyeshwa kwenye dirisha la console, ambalo litawaka na kufunga haraka. Ili kuona ujumbe katika hali ya kawaida, bonyeza Ctrl+F5 au endesha amri Tatua-Anza Bila Kutatua.Kwa upande wetu, dirisha lifuatalo la kiweko litafunguliwa:

    Ikiwa msimbo wa programu una makosa, kwa mfano, semicolon haipo baada ya amri ya pato, kisha baada ya kushinikiza ufunguo wa F5, sanduku la mazungumzo litafungua ambalo ujumbe utaonyeshwa ukisema kuwa kosa limegunduliwa na swali ikiwa ni lazima. kuendelea kufanya kazi zaidi. Ukijibu Ndiyo, basi toleo la awali lililoundwa kwa ufanisi la programu litatekelezwa. Vinginevyo, mchakato utasimamishwa na udhibiti utahamishiwa kwenye dirisha la orodha ya makosa Orodha ya Makosa.

    Zoezi. Badilisha maandishi ya msimbo ili ujumbe uonyeshwe kwenye skrini: Hurray!!!Leo sayansi ya kompyuta!!!

    Utangulizi

    PLATFORM ni angalau mazingira ya utekelezaji wa programu na... kitu kingine ambacho huamua vipengele vya ukuzaji na utekelezaji wa kanuni za programu - dhana za programu, lugha za programu, madarasa mengi ya msingi.

    Microsoft.NET (.NET Framework) ni jukwaa la programu. Ina vijenzi vikuu vifuatavyo: wakati wa utekelezaji wa lugha ya kawaida (CLR) na maktaba ya darasa la NET Framework (.NET FCL).

    CLS (Ainisho ya Lugha ya Kawaida) ni maelezo ya jumla ya lugha za programu. Ni seti ya miundo na vikwazo vinavyotoa mwongozo kwa waundaji wa maktaba na wakusanyaji katika Mfumo wa NET. Maktaba zilizojengwa kulingana na CLS zinaweza kutumika kutoka kwa lugha yoyote ya programu inayoauni CLS. Lugha zinazotii CLS (ikiwa ni pamoja na Visual C#, Visual Basic, Visual C++) zinaweza kuunganishwa. CLS ndio msingi wa mawasiliano baina ya lugha ndani ya jukwaa la Microsoft.NET.

    CLR (Wakati wa Kukimbia kwa Lugha ya Kawaida) - Mazingira ya Runtime au Mashine ya Mtandaoni. Inahakikisha kuwa ujenzi umekamilika. Sehemu kuu ya .NET Framework. Mashine ya Mtandaoni ni kifupisho cha mfumo wa uendeshaji unaosimamiwa wa kiwango cha juu uliowekwa (tofauti) ambao huhakikisha utekelezaji wa msimbo wa programu na kuhusisha kutatua kazi zifuatazo:

    § usimamizi wa kanuni (upakiaji na utekelezaji),

    § usimamizi wa kumbukumbu wakati wa kuweka vitu,

    § kutengwa kwa kumbukumbu ya maombi,

    § ukaguzi wa usalama wa nambari,

    § ubadilishaji wa lugha ya kati kuwa nambari ya mashine,

    § ufikiaji wa metadata (maelezo yaliyopanuliwa kuhusu aina),

    § kushughulikia ubaguzi, ikijumuisha vighairi vya lugha-mtambuka,

    § mwingiliano kati ya nambari inayodhibitiwa na isiyodhibitiwa (pamoja na vitu vya COM),

    § usaidizi wa huduma za maendeleo (kuchambua maelezo mafupi, kurekebisha hitilafu n.k.).

    Kwa kifupi, CLR ni seti ya huduma zinazohitajika kufanya ujenzi. Katika kesi hii, msimbo wa mpango wa kusanyiko unaweza kusimamiwa (msimbo, wakati wa kutekelezwa, CLR, hasa, inawasha mfumo wa usimamizi wa kumbukumbu) au msimbo wa programu "zamani" usio na udhibiti).

    CLR yenyewe ina vipengele viwili kuu: msingi (mscoree.dll) na maktaba ya darasa la msingi (mscorlib.dll). Uwepo wa faili hizi kwenye diski ni ishara ya uhakika kwamba angalau jaribio lilifanywa ili kufunga jukwaa la NET kwenye kompyuta.

    Msingi wa wakati wa utekelezaji unatekelezwa kama maktaba ya mscoree.dll. Wakati kusanyiko limeunganishwa, habari maalum hujengwa ndani yake, ambayo, wakati programu inazinduliwa (EXE) au wakati maktaba inapopakiwa (kuita DLL kutoka kwa moduli isiyosimamiwa - kuita kazi ya LoadLibrary kupakia mkusanyiko unaosimamiwa) husababisha upakiaji na uanzishaji wa CLR. Mara tu CLR inapopakiwa kwenye nafasi ya anwani ya mchakato, kernel ya wakati wa kukimbia hufanya vitendo vifuatavyo:

    § hupata eneo la kusanyiko,

    § hupakia mkusanyiko kwenye kumbukumbu,

    § kuchambua yaliyomo kwenye kusanyiko (inabainisha madarasa, miundo, miingiliano),

    § kuchambua metadata,

    § hutoa mkusanyiko wa msimbo wa lugha ya kati (IL) katika maagizo yanayotegemea jukwaa (msimbo wa mkusanyiko),

    § hufanya ukaguzi unaohusiana na usalama,

    § kwa kutumia uzi kuu wa programu, huhamisha udhibiti kwa kipande cha msimbo wa kusanyiko unaobadilishwa kuwa amri za kichakataji.

    FCL (.NET Framework Class Library) ni maktaba yenye mwelekeo wa kitu inayotii CLS ya madarasa, violesura, na mifumo ya aina (aina za thamani) ambazo zimejumuishwa kwenye jukwaa la Microsoft .NET.

    Maktaba hii hutoa ufikiaji wa utendakazi wa mfumo na inakusudiwa kama msingi wa kutengeneza programu, vijenzi na vidhibiti vya .NET.

    Maktaba ya darasa la NET ni sehemu ya pili ya CLR.

    NET FCL inaweza kutumika na programu ZOTE za .NET, bila kujali madhumuni, usanifu unaotumiwa kukuza lugha ya programu. Hasa, ina:

    § aina zilizojengewa ndani (za msingi), zinazowasilishwa kama madarasa (kwenye jukwaa la NET kila kitu kimejengwa juu ya miundo au madarasa),

    § madarasa ya kuunda kiolesura cha picha cha mtumiaji (Fomu ya Windows),

    § madarasa ya kutengeneza programu za Wavuti na huduma za Wavuti kulingana na teknolojia ya ASP.NET (Fomu za Wavuti),

    § madarasa ya kuunda itifaki za XML na mtandao (FTP, HTTP, SMTP, SOAP),

    § madarasa ya kutengeneza programu zinazofanya kazi na hifadhidata (ADO.NET),

    § na mengi zaidi.

    NET application ni programu iliyoundwa kufanya kazi kwenye jukwaa la Microsoft.NET. Inatekelezwa katika lugha za programu ambazo zinatii CLS.

    MSIL (Lugha ya Kati ya Microsoft, pia inajulikana kama IL - Lugha ya Kati) ni lugha ya kati ya jukwaa la Microsoft.NET. Msimbo wa chanzo wa programu za NET umeandikwa katika lugha za programu zinazotii vipimo vya CLS. Kwa lugha za programu zinazofuata vipimo vya CLS, kibadilishaji hadi MSIL kinaweza kujengwa. Kwa hivyo, programu katika lugha hizi zinaweza kutafsiriwa katika msimbo wa kati katika MSIL. Shukrani kwa kufuata CLS, kutafsiri msimbo wa programu iliyoandikwa katika lugha tofauti husababisha msimbo unaolingana wa IL.

    Kwa kweli, MSIL ni mkusanyiko wa processor ya kawaida.

    METADATA - wakati wa kubadilisha msimbo wa programu kwa MSIL, kizuizi cha METADATA pia kinazalishwa, kilicho na taarifa kuhusu data iliyotumiwa katika programu. Kwa hakika, hizi ni seti za majedwali zilizo na taarifa kuhusu aina za data zilizofafanuliwa kwenye moduli, kuhusu aina za data zilizorejelewa na moduli hii. Hapo awali, habari kama hizo zilihifadhiwa kando. Kwa mfano, programu inaweza kujumuisha maelezo kuhusu violesura ambavyo vimefafanuliwa katika Lugha ya Ufafanuzi wa Kiolesura (IDL). Metadata sasa ni sehemu ya moduli inayodhibitiwa.

    Hasa, metadata hutumiwa:

    § kuhifadhi habari kuhusu aina. Wakati wa kukusanya, faili za kichwa na maktaba hazihitajiki tena. Mkusanyaji husoma habari zote muhimu moja kwa moja kutoka kwa moduli zilizosimamiwa,

    § uthibitishaji wa nambari wakati wa utekelezaji wa moduli,

    § Usimamizi wa kumbukumbu wenye nguvu (kufungua kumbukumbu) wakati wa utekelezaji wa moduli,

    § wakati wa kuunda programu kwa kutumia zana za kawaida (Microsoft Visual Studio.NET)

    § Kidokezo chenye Nguvu (IntelliSense) kimetolewa kulingana na metadata.

    Lugha ambazo tafsiri yake katika MSIL imetekelezwa:

    na lugha nyingine nyingi.

    Inaweza kutekelezwa - Bila kujali mkusanyaji (na lugha ya ingizo), towe la tafsiri ya programu tumizi ya .NET ni inayoweza kutekelezwa (moduli inayodhibitiwa). Hii ni faili ya kawaida ya Windows inayoweza kutekelezwa (PE - Portable Executable).

    Mambo ya moduli iliyosimamiwa yanawasilishwa kwenye meza.

    Sehemu inayodhibitiwa ina msimbo unaodhibitiwa.

    Msimbo unaodhibitiwa ni msimbo unaotumika katika CLR. Msimbo umejengwa kwa misingi ya miundo na madarasa yaliyotangazwa katika moduli ya chanzo ambayo ina matamko ya mbinu. Msimbo unaodhibitiwa lazima uwe na kiwango fulani cha maelezo (metadata) kwa mazingira ya wakati wa utekelezaji. C #, Visual Basic, na nambari ya JScript inadhibitiwa kwa chaguo-msingi. Nambari inayoonekana ya C++ haidhibitiwi na chaguo-msingi, lakini mkusanyaji anaweza kutoa msimbo unaosimamiwa kwa kubainisha hoja ya mstari wa amri (/CLR). Moja ya vipengele vya msimbo unaosimamiwa ni kuwepo kwa taratibu zinazokuwezesha kufanya kazi na DATA INAYOSIMAMIA.

    Data inayodhibitiwa ni vitu ambavyo, wakati wa utekelezaji wa msimbo wa moduli, huwekwa kwenye kumbukumbu iliyosimamiwa (kwenye lundo linalosimamiwa) na kuharibiwa na mtoza takataka wa CLR. Data ya C#, Visual Basic, na JScript .NET inadhibitiwa kwa chaguomsingi. Data ya C# pia inaweza kutiwa alama kuwa haijadhibitiwa.

    Kusanyiko ndio msingi wa ujenzi wa programu katika Mfumo wa NET. Moduli zilizosimamiwa zimeunganishwa katika makusanyiko. Mkutano ni kikundi cha kimantiki cha moduli moja au zaidi zinazosimamiwa au faili za rasilimali. Moduli zinazodhibitiwa ndani ya makusanyiko hutekelezwa katika Mazingira ya Muda wa Kuendesha (CLR). Mkusanyiko unaweza kuwa programu tumizi inayoweza kutekelezwa (katika faili iliyo na kiendelezi cha .EXE) au moduli ya maktaba (katika faili iliyo na kiendelezi cha .DLL). Wakati huo huo, mkusanyiko hauna kitu sawa na kawaida (mtindo wa zamani!) Programu zinazoweza kutekelezwa na moduli za maktaba.

    Tamko la mkusanyiko (Dhihirisho) ni sehemu muhimu ya mkusanyiko. Seti nyingine ya majedwali ya metadata ambayo:

    § hubainisha mkusanyiko katika mfumo wa jina la maandishi, toleo lake, utamaduni na sahihi ya dijiti (ikiwa mkusanyiko unashirikiwa kati ya programu);

    § huamua faili zilizojumuishwa (kwa jina na hashi),

    § inaonyesha aina na rasilimali zilizopo kwenye mkutano, pamoja na maelezo ya zile zinazosafirishwa kutoka kwa mkutano,

    § kuorodhesha utegemezi kwenye makusanyiko mengine,

    § inaonyesha seti ya haki zinazohitajika kwa mkutano kufanya kazi kwa usahihi.

    Taarifa hii inatumika wakati wa utekelezaji ili kuweka programu iendelee ipasavyo.

    Kichakataji HAWEZI kutekeleza msimbo wa IL. Na tafsiri ya msimbo wa IL inafanywa na mkusanyaji wa JIT (kwa wakati tu), ambayo imeamilishwa na CLR inavyohitajika na kutekelezwa na processor. Katika kesi hii, matokeo ya mkusanyaji wa JIT yanahifadhiwa kwenye RAM. Uchoraji wa ramani umeanzishwa kati ya kipande cha msimbo wa IL uliotafsiriwa na kizuizi cha kumbukumbu kinacholingana, ambacho huruhusu CLR kuhamisha udhibiti kwa maagizo ya kichakataji yaliyoandikwa katika kizuizi hiki cha kumbukumbu, kwa kupita simu inayorudiwa kwa mkusanyaji wa JIT.

    Mazingira ya CLR huruhusu ushirikiano na mwingiliano wa vipengele vya programu vinavyotekelezwa katika lugha tofauti za programu.

    Kulingana na kizuizi cha metadata kilichoundwa awali, CLR inahakikisha mwingiliano EFFICIENT kati ya kuendesha programu za .NET.

    Kwa CLR, makusanyiko yote ni sawa, bila kujali ni lugha gani za programu ziliandikwa. Jambo kuu ni kwamba wanazingatia CLS. Kwa kweli, CLR huvunja mipaka ya lugha za programu (ushirikiano wa lugha-mtambuka). Kwa hivyo, shukrani kwa CLS na CTS, programu tumizi za NET ni programu tumizi za MSIL (IL).

    CLR inachukua matatizo mengi ambayo kwa kawaida yamekuwa lengo la wasanidi programu. Kazi zinazofanywa na CLR ni pamoja na:

    § uthibitishaji na mkusanyiko wa nguvu (JIT) wa msimbo wa MSIL kuwa maagizo ya kichakataji,

    § kumbukumbu, mchakato na usimamizi wa nyuzi,

    § shirika la mwingiliano kati ya michakato,

    § kutatua matatizo ya usalama (ndani ya mfumo wa sera ya usalama iliyopo kwenye mfumo).

    AppDomain ni chombo cha kimantiki cha kuunganisha ambacho hutumika kutenga programu ndani ya nafasi ya anwani ya mchakato. Vitu vyote vilivyoundwa na programu huundwa ndani ya kikoa maalum cha programu. Vikoa vingi vya programu vinaweza kuwepo ndani ya mchakato mmoja wa mfumo wa uendeshaji. CLR hutenga programu kwa kudhibiti kumbukumbu ndani ya kikoa cha programu.

    Msimbo unaoendeshwa katika mchakato wa CLR (CLR) ni tofauti na michakato mingine inayoendeshwa kwenye kompyuta kwa wakati mmoja.

    Mchakato wa kawaida unazinduliwa na mfumo ndani ya nafasi ya anwani iliyotengwa mahsusi kwa mchakato. CLR hutoa uwezo wa kuendesha programu nyingi zinazodhibitiwa katika MCHAKATO MMOJA. Kila programu inayodhibitiwa inahusishwa na kikoa chake cha programu (kifupi AppDomain). Mbali na kikoa kikuu, vikoa kadhaa vya ziada vinaweza kuundwa katika programu.

    Muundo wa wakati wa utekelezaji wa CLR unaonyeshwa kwenye picha.

    Sifa za kikoa:

    § vikoa vimetengwa kutoka kwa kila mmoja. Vipengee vilivyoundwa ndani ya kikoa kimoja haviwezi kufikiwa kutoka kwa kikoa kingine.

    § CLR ina uwezo wa kupakua vikoa pamoja na makusanyiko yote yanayohusiana na vikoa hivyo,

    § usanidi wa ziada na ulinzi wa kikoa inawezekana,

    § Utaratibu maalum wa kufikia salama (marshaling) unatekelezwa kwa kubadilishana data kati ya vikoa.

    § Mfumo wa NET umeunda muundo wake wa kijenzi, vipengele vyake ni .NET assembly (.NET-assembly), na kwa upatanifu wa moja kwa moja na wa nyuma na modeli ya COM/COM+, CLR ina mitambo iliyojengewa ndani (COM Interop ) ambayo hutoa ufikiaji wa vitu vya COM kulingana na sheria za .NET na kwa makusanyiko ya NET kulingana na sheria za COM. Hata hivyo, programu za NET hazihitaji vipengele kusajiliwa katika sajili ya Windows.

    Ili kuendesha programu ya NET, inatosha kuweka makusanyiko yanayohusiana na programu tumizi hii kwenye saraka moja. Ikiwa mkusanyiko unaweza kutumika katika maombi kadhaa, basi huwekwa na kusajiliwa kwa kutumia matumizi maalum katika GAC ​​(Cache ya Mkutano wa Global).

    CTS - Mfumo wa Aina ya Kawaida Mfumo wa Aina ya Kawaida. Inatumika katika lugha zote za jukwaa. Kutokana na ukweli kwamba .NET ni mtoto wa OOP, tunazungumza hapa kuhusu aina za msingi, madarasa, miundo, miingiliano, wajumbe na hesabu.

    Mfumo wa Aina ya Kawaida ni sehemu muhimu ya mazingira ya wakati wa utekelezaji, inayofafanua muundo wa miundo ya kisintaksia, njia za kutangaza, kutumia, na kutumia aina za COMMON za muda wa utekelezaji. CTS ina taarifa za msingi kuhusu mfumo wa aina ILIYOFANIKIWA KWA JUMLA, matumizi na usimamizi wao (sheria za ubadilishaji wa thamani). CTS ina jukumu muhimu katika kuunganisha programu zinazosimamiwa kwa lugha nyingi.

    Nafasi ya majina ni njia ya kupanga mfumo wa aina katika kikundi kimoja. Kuna maktaba ya lugha ya kawaida ya madarasa ya msingi. Na dhana ya nafasi ya majina hutoa mpangilio bora na urambazaji ndani ya maktaba hii. Bila kujali lugha ya programu, ufikiaji wa madarasa fulani hutolewa kwa kuwaweka katika vikundi vya majina ya kawaida.

    Nafasi ya majina Kusudi
    Mfumo
    Data.Mfumo Ili kupata hifadhidata
    Data.Mfumo.Kawaida
    Data.System.OleDb
    System.Data.SqlClient
    Mfumo.Makusanyo Madarasa ya kufanya kazi na vitu vya chombo
    Uchunguzi.Mfumo Madarasa ya kufuatilia na kutatua msimbo
    Mfumo.Kuchora Madarasa ya usaidizi wa michoro
    Mfumo.Kuchora.Kuchora2D
    Kuchora.Mfumo.Uchapishaji
    Mfumo.IO Msaada wa I/O
    Mfumo.Net Usaidizi wa kuhamisha data kupitia mitandao
    Tafakari.ya Mfumo Kufanya kazi na Aina Maalum kwenye Runtime
    Tafakari.ya.Mfumo.Emit
    System.Runtime.InteropServices Msaada wa mwingiliano na "msimbo wa kawaida" - DLL, seva za COM, ufikiaji wa mbali
    Uhamishaji wa mbali wa Mfumo.Wakati wa Kuendesha
    Mfumo.Usalama Cryptography, ruhusa
    Mfumo.Uzi Kufanya kazi na Threads
    Mfumo.WEB Kufanya kazi na programu za wavuti
    Mfumo.Windows.Fomu Kufanya kazi na Vipengele vya Kiolesura cha Windows
    Mfumo.XML Usaidizi wa data ya XML

    Utekelezaji wa moduli zisizoweza kutekelezwa (programu za kawaida za Windows) hutolewa moja kwa moja na mfumo wa Windows. Moduli ambazo hazijasimamiwa huendesha kama michakato "rahisi" katika mazingira ya Windows. Sharti pekee ambalo moduli kama hizo lazima zifikie ni kwamba zinafanya kazi kwa usahihi katika mazingira ya Windows. Wanapaswa kufanya kazi "kwa usahihi" (sio kuharibu mfumo, kuepuka uvujaji wa kumbukumbu, si kuzuia michakato mingine, na kwa usahihi kutumia OS yenyewe kufanya kazi kwa niaba ya taratibu). Hiyo ni, kufuata sheria za jumla za kufanya kazi chini ya Windows.

    Wakati huo huo, matatizo mengi ya utekelezaji sahihi wa moduli isiyosimamiwa (matatizo ya mwingiliano, ugawaji wa kumbukumbu na uhuru) ni matatizo ya watengenezaji wa maombi. Kwa mfano, teknolojia inayojulikana ya COM ni njia ya kupanga mwingiliano wa vipengele tofauti ndani ya programu.

    Kitu ni, kwa maana pana, eneo la kumbukumbu (rundo au lundo) lililotengwa wakati wa utekelezaji wa programu kwa ajili ya kurekodi maadili yoyote. Inajulikana na aina (seti ya kudumu ya mali ambayo huamua ukubwa wa eneo lililochukuliwa, njia ya kutafsiri thamani, anuwai ya maadili, seti ya vitendo vinavyoruhusiwa wakati wa kudanganya kitu) eneo kwenye kumbukumbu (anwani).

    Ukusanyaji wa takataka ni utaratibu unaoruhusu CLR kubainisha wakati kitu hakipatikani tena kwenye kumbukumbu inayodhibitiwa ya programu. Wakati wa ukusanyaji wa takataka, kumbukumbu inayodhibitiwa huachiliwa. Kwa msanidi programu, kuwa na utaratibu wa kukusanya takataka inamaanisha kuwa hana tena wasiwasi juu ya kuachilia kumbukumbu. Hata hivyo, hii inaweza kuhitaji mabadiliko katika mtindo wa programu, kwa mfano, tahadhari maalum inapaswa kulipwa kwa utaratibu wa kufungia rasilimali za mfumo. Inahitajika kutekeleza njia zinazotoa rasilimali za mfumo chini ya udhibiti wa programu.

    Stack ni eneo la kumbukumbu lililopangwa maalum iliyoundwa kwa uhifadhi wa muda wa maadili ya kitu (vigezo na vidhibiti), kwa kupitisha vigezo wakati wa kupiga simu, na kuhifadhi anwani ya kurudi. Usimamizi wa rafu ni rahisi sana ikilinganishwa na lundo. Inategemea kubadilisha thamani ya rejista inayolingana iliyo juu ya rafu. Wakati ukubwa wa stack umepunguzwa, vitu vinapotea tu.

    Programu katika C#

    Mpango ni muundo ulioundwa kwa usahihi (ambao hautoi pingamizi kutoka kwa mkusanyaji wa C #) mlolongo wa sentensi, kwa msingi ambao mkusanyiko huundwa.

    Kwa ujumla, programu huunda faili iliyo na matamko ya darasa, ambayo hutolewa kama pembejeo kwa mkusanyaji. Matokeo ya mkusanyiko yanawasilishwa na mfasiri kama mkusanyiko na huamuliwa na matakwa ya mtayarishaji programu. Kimsingi, mkusanyiko unaweza kuwa wa aina mbili:

    § Faili Inayoweza Kutekelezwa (faili ya PE iliyo na kiendelezi cha .exe), inayofaa kwa utekelezaji wa moja kwa moja na CLR,

    § Faili ya Maktaba ya Kiungo Kinachobadilika (faili ya DLL iliyo na kiendelezi cha .dll), inayokusudiwa kutumika tena kama kijenzi kama sehemu ya programu yoyote.

    Kwa hali yoyote, kulingana na msimbo wa ingizo, mfasiri huunda moduli ya IL, faili ya maelezo, na hutoa mkusanyiko. Katika siku zijazo, mkusanyiko unaweza kufanywa baada ya ujumuishaji wa JIT, au unaweza kutumika kama sehemu ya programu zingine.