ETİKETLER
web-programlama
İstemci - Sunucu (Client - Server) Mimarisi
İstemci - sunucu mimarisi, ağ içindeki her bilgisayar ya da işlemin (process); ya istemci (client) ya da sunucu (server) olduğu mimaridir.
İstemci - sunucu mimarisinde 3 önemli bileşen mevcuttur:
Node.js İçinde Modül Tanımlama ve Kullanma
Node.js içinde de diğer dillerde olduğu gibi başka bir dosya içinde tanımlanmış olan fonksiyonları başka bir dosyadan çağırmak mümkündür. Şimdi basit bir örnekle bunun nasıl gerçekleştirilebileceğini anlatacağız.
node_modules/test yolunu oluşturun. Bunu gerçekleştirmek için node.js'in yüklenmiş olduğu bin dizininin altında önce node_modules dizinini onun altında da test dizinini oluşturun. Bunu, mkdir komutları ile gerçekleştirebileceğinizi biliyorsunuz.
test dizini içine index.js'i aşağıdaki içerikle yerleştiriniz:
Node.js REPL (Read-Eval-Print Loop)
Read - Eval - Print Loop (REPL - Oku - Değerlendir - Yaz Döngüsü), etkileşimli bir bilgisayar programlama ortamıdır. Burada REPL'i, Node.js çerçevesinde inceleyeceğiz. Bir REPL ortamında, kullanıcı bir ya da daha fazla ifade ya da komut girebilir. Bunlar hesaplanır (derleme aşaması atlanır) ve sonuç görüntülenir. Bir REPL ortamında dört temel özellik vardır:
Callback (Geri çağırma)
Bir geri çağırma fonksiyonu, başka bir fonksiyona geçirilen bir parametre şeklindeki fonksiyondur. Geri çağırma fonksiyonu, ikinci fonksiyonun içinde çağrılır ya da icra edilir. Geri çağırma fonksiyonları, asenkron olarak icra edilirler.
Asenkron İşlem
Aşağıdaki kod, senkron dosya okuma işleminin asenkron sürümüdür. Callback fonksiyonu okumanın bittiği konusunda bir mesaj vermeden, sistem başka bir işlemi gerçekleştirmeye hazırdır.
Senkron İşlem
Aşağıda bir dosyayı senkron çalışma modunda okuyan bir Node.js kodu vereceğiz. Burada kullandığımız, fs.readFileSync() fonksiyonu, fs.readFile() fonksiyonunun senkronize sürümüdür. Bir dosyayı okuyarak içeriğini göndermektedir.
Aşağıdaki Node.js kodu senkron işlem gerçekleştiriyor. readFileSync() fonksiyonu, tüm dosyayı okuyor ve bellekte depoluyor; daha sonra veriyi yazdırıyor ve konsola bir mesaj gönderiyor. Dosyanın okunması işlemi bitene kadar diğer bütün işlemlere ara verilecektir; çünkü bu bir senkron işlemdir.
Node.js Kullanmanın Yararları ve Zararları
Node.js'in pek çok faydası vardır. Bunlardan en temel olanları şu şekildedir:
- Olay tarafından yönlendirilen (event driven) ve bloke olmayan (non-blocking) özellikleri nedeni ile eşzamanlı bağlantıları rakiplerine göre çok daha hızlı ve etkin şekilde işler.
- Hem istemci (client) hem de sunucu (server) tarafında aynı dili (JavaScript) kullanmanın büyük kolaylığına sahiptir.
- MongoDB gibi veritabanları kullanıldığı zaman, hem istemci hem de sunucu tarafında %100 JavaScript kullanır.
- Açık, etkin API kullanma olanağı sağlar.
Node.js'nin Bazı Temel Özellikleri
Node.js, daha önce de belirtildiği gibi, sunucu (server) tarafında kullanılan JavaScript'tir. Aşağıdaki şekil Node.js'in genel çalışma prensibini veriyor:
Node.js'in geliştirilmesi ve kullanılması şu temel soru çerçevesinde olmuştur: JavaScript'in istemci (client) tarafında mevcut olan ve kullanılan olaya dayalı icra modeli (event based execution) sunucu tarafında kullanılamaz mı?
Basit Bir HTTP Sunucusu (Server) Oluşturmak
Bir önceki dersimizde, bir Node.js programını çok basit de olsa komut satırında nano editor ile oluşturup node programı yardımıyla çalıştırdık. Bu, yeni başlayanlar için şüphesiz önemli bir adım; ama elbette yeterli değil. Önemli olan, gerçek bir İnternet sunucusu üzerinde bir Node.js programının nasıl çalışabileceğini öğrenmek. Bu bölümde bu konuyu anlatacağız.