Кіріспе

CLI ерекшеліктерінде анықталған аралық өрнек Common Intermediate Language (CIL), бұрын Microsoft Intermediate Language (MSIL) немесе Intermediate Language (IL) деп аталған, Common Language Infrastructure (CLI) ерекшеліктерінде анықталған аралық тілдің екілік нұсқаулар жиынтығы болып табылады. CIL нұсқаулары CIL-ге үйлесімді орындалу ортасында, мысалы Common Language Runtime-та орындалады. CLI-ге бағытталған тілдер CIL-ге компиляцияланады. CIL – объектіге бағытталған, стекке негізделген байт-код. Орындалу уақыты CIL нұсқауларын әдетте жергілікті кодқа компиляциялайды. CIL бастапқыда .NET тілдерінің бета нұсқалары кезінде Microsoft Intermediate Language (MSIL) деп белгілі болды. C# және CLI стандартталуының нәтижесінде байт-код енді ресми түрде CIL деп аталады. Windows Defender вирустық анықтамалары одан құрастырылған бинарлық файлдарды әлі де MSIL деп атайды.

Метадеректер

Жалпы тілдік инфрақұрылым (CLI) компиляцияланған кластар туралы ақпаратты метадеректер түрінде сақтайды. Компоненттік объект моделіндегі типтік кітапхана сияқты, бұл қосымшаларға құрастырудағы интерфейстерді, сыныптарды, типтерді, әдістерді және өрістерді қолдауға және анықтауға мүмкіндік береді. Мұндай метадеректерді оқу процесі "рефлексия" деп аталады. Метадеректер "атрибуттар" түріндегі деректер болып табылады. Атрибуттарды Attribute класын кеңейту арқылы өзгертуге болады. Бұл қуатты мүмкіндік. Ол сыныпты жасаушыға оны қосымша ақпаратпен толықтыруға мүмкіндік береді, оны сыныпты пайдаланушылар қолдану саласына байланысты әртүрлі мағыналы тәсілдермен пайдалана алады.

Ұрпақ

CIL құрастыруы мен нұсқауларын компилятор немесе орындау ортасымен бірге келетін IL Assembler (ILAsm) деп аталатын қосымша құрал жасайды. Құрастырылған CIL кодын IL-дизассемблер (ILDASM) арқылы қайтадан кодқа айналдыруға болады. CIL кодын жоғары деңгейлі тілге (мысалы, C# немесе Visual Basic) түрлендіре алатын NET Reflector сияқты басқа да құралдар бар. Бұл CIL-ді кері инженерия үшін өте қолайлы нысанаға айналдырады. Бұл қасиет Java байт-кодымен ортақ. Дегенмен, кодты жасыра алатын, оны оқуды қиындататын, бірақ орындауға мүмкіндік беретін құралдар да бар.

Уақытша жинақтау

Тек уақытында компиляция (JIT) байт-кодты CPU тікелей орындай алатын кодқа түрлендіруді қамтиды. Түрлендіру бағдарлама жұмыс істеп тұрғанда кезең-кезеңімен жүзеге асырылады. JIT компиляциясы ортаға қатысты оптимизацияны, орындалу кезіндегі типтік қауіпсіздікті және құрастырудың дұрыстығын тексеруді қамтамасыз етеді. Осы мақсатта JIT компиляторы құрастыру метадеректерін заңсыз қолжетімділіктерге тексеріп, олардың бұзылуын тиісті түрде өңдейді.

Уақытша жинақтау

CLI-мен үйлесімді орындау орталары құрастырудың алдын ала компиляциясын (AOT) жасау мүмкіндігімен де келеді, бұл JIT процесін орындау кезінде жою арқылы орындалу жылдамдығын арттырады. .NET Framework-те AOT-ны жүзеге асыратын Native Image Generator (NGEN) деп аталатын арнайы құрал бар. CoreRT – AOT-қа қатысты тағы бір тәсіл, ол Net Core кодын орындау уақытына тәуелділіксіз, жалғыз орындалатын файлға компиляциялауға мүмкіндік береді. Mono-да AOT жасау опциясы бар.