-.net-deep-dive--clr-&-il--seminardan-notlar

".NET deep dive: CLR & IL"-Seminardan notlar

3 may 2019-cu il tarixində CodeAcademy-də “.NET Deep Dive: CLR & IL” mövzusunda seminarım baş tutdu. Seminarda .NET frameworkün daxili strukturu, CLR-ın və Assembly fayllarının daxili quruluşu və İL dilini nəzərdə keçirdik, sonda İL dilində bir neçə kod nümunəsi yazdıq. Seminarın gedişatı və danışılan məsələri ardıcıl olaraq qeyd etmişəm. Buradan seminar slide-ı ilə tanış ola bilərsiniz.  Başlayaq....


 Seminar .NET framework-ün əsas building blockları olan CLR , CTS və CLS ilə başladı.

Əsas məqsəd təbii ki CLR İL-ə yönəlmişdi. CLR(Common Language Runtime) .NET üçün icra mühiti rolu oynayır. Bir sıra yuxarı səvviyəli dilləri dəstəkləyir və Assembly faylları( .dll və .exe) üçün “Nanny”(dayə) rolunu oynayır. CLR olmasa bizim kodlarımız runtime-da icra oluna bilməz. CLR bizimçün səhvlərin emalı(exception handling), yaddaşın idarəsi (memory management) , Thread sync (patokların sinxronizasiyası) və.s işləri yerinə yetirir. Seminarda CLR-ın bütün vəzifə öhdəlikləri detallı izah olundu. CLR həmçinin bizim proqramlar üçün İL dilini icra edən mühitdir. Bunun yanı sıra, Əməliyyat sistemi CLR-I necə qaldırır, necə işə salır kimi məsələlərə aydınlıq gətirdim.  İştirakçılarla birlikdə mscoree.dlli disassemble edib daxili quruluşuna baxdıq, detallı şəkildə CLR lifecycle prosesini müşayiət etdik.

Ardınca təbiiki sıra JİT compiler-a gəldi. Jitter(Just in time) kompilyatoru CLR daxilində yerləşərək İL kodlarımızı native code-a(maşın dili)-ə çevirməyə imkan verir. Seminar JİTterlə bağlı olmadığına görə, JİT compiler-ın növləri, optimizasiya qaydalarına toxunmadıq.

   Növbəti saatımızda Assembly fayllarının daxili strukturuna baxdıq.

Əməliyyat sistemi Assembly fayllarının necə olurki .NET üçün nəzərdə tutulduğunu müəyyən edir, CLR header, WIN header anlayışları nədir kimi sualları cavablandırdım.

 Assembly faylları .dll və .exe fayllarıdır. Onlar informasiyanın .NET platformasında ən kiçik share formasıdır. Assembly faylları daxili strukturuna görə 6 hissədən ibarətdir. .NET tool-lar vasitəsilə bu hissələrin hər birini nəzərdən keçirtdik. Assembly fayllarının ən maraqlı hissələrindən biri isə təbii ki Metaverilənlərdir(metadata). Metaverilənlərin platformada rolu, atributlar və refleksiya məsələlərinin işləmə qaydasını müzakirə etdik. Bir neçə real nümunədə metadataları analiz etdik, təhlükəsiz kod yazma qaydalarını göstərdim.

 .NET platforması haqda tam təəssüratın olması üçün CİL,CTS, CLS, FCL və BCL anlayışlarına detallı şəkildə baxdıq. CİL spesifikasiyasının .NET üçün oynadığı rol əvəzolunmazdır. Məhz bu spesifikasiya əsasında .NET platforması ortaya çıxıb. CTS bizdə .NET tipləri və onlar üzərində aparılan əməliyyatları müəyyən edir. CLR vasitəsilə dillərarası integrasiya prosesi təmin olunur. BCL .Net-in əsas assembly toplusunu təyin edir, FCL isə yuxarısəviyəli assembly fayllarını təmin edir. Əlbəttəki dediklərimiz sadəcə  şifahidə qalmadı. CLS spesifikasiyasını real praktikada tətbiq etdik. C# dilində CLS spesifikasiyasına uyğun app yazdıq.

               Seminarımız IL dilində yazılmış 2 proqram ilə başa çatdı. IL dilində kiçik proqramların yazılmasını müzakirə etdik.

Buradan seminar slide-ı ilə tanış ola bilərsiniz.

 

Tural

Tural Süleymani

Süleymani Tural Microsoft-un MCSD statuslu mütəxəssisidir, 2008-ci ildən bu yana proqramlaşdırma üzrə tədris aparır

Müəllifin bu dildə ən son postları

Bu yazıları da bəyənə bilərsiniz