
Node Js Uygulaması
Javascript ile yazılmış yazılım kodları, modülleri ve Node Js yerleşik modülleri uygulamayı oluşturarmak üzere, yazılan kodlar V8 motorunda derlenir.
Node Js API ve Node Js Binding
Node.js API, yerleşik kitaplıklarının arayüz kısmıdır, Node Js Binding ise farklı dillerde yazılmış kodlar arasında köprüdür, farklı dillerde yazılmış kodlar arasında iletişim kurar.
V8 Motoru
v8, Google’ın C++ ile yazılmış açık kaynaklı yüksek performanslı JavaScript ve WebAssembly motorudur. Chrome’da ve Node.js’de kullanılmaktadır.
Yazılım kodları, Binding ile düşük seviye Node Js bileşenleri iletişim kurar. Yazılan tüm kodlar Node JS’e kaydedilir.
Diğer Düşük Seviye Node Js Bileşenleri;
C/C++ ile yazılmış c-ares, http parser, OpenSSL, zlib gibi bileşenler yer alır.
Libuv Katmanı
Libuv, asenkron işlemler yapmayı sağlayan açık kaynaklı bir kütüphanedir. Olay döngüsü (event loop), asenkron dosya sistemi okuma/yazma, asenkron TCP ve UDP soketleri vb. işlemleri asenkron olarak I/O sağlamak için geliştirilmiştir.
v8 üzerinde call stack işlerken, libuv katmanında I/O (giriş/çıkış) işlemleri ve olay döngüsü (event loop) işler. (Libuv Katmanı Nedir?)
Event Loop
Olaylar tetiklendikten sonra, tetiklendikleri sıraya göre olay kuyruğunda (event queue) sıraya alınırlar. Olay kuyruğunda devam eden olaylar olduğu sürece, olay döngüsü bu olayları almaya, callback fonksiyonu çağırmaya ve işlenmek üzere çalışan iş parçacıklarına göndermeye devam eder. Callback fonskiyonu yürütüldüğünde, bu callback fonksiyonu bir kez daha olay kuyruğuna (event queue’e) gönderilir ve olay döngüsü (event loop) tarafından tekrar sıraya alınır.
Bu konuyu daha iyi anlamak için Node Js ile Asenkron Programlama Nedir? yazısına göz atabilirsiniz.