Merhaba arkadaşlar,

Bu ay sizlere Node.js'i tanıtacağım. Bu yazıyı okuyanların birçoğu gibi ben de bir Chrome kullanıcısıyım. Bu tarayıcının en göze çarpan özelliği hızı. Chrome'u hızlı yapan şey ise V8 adlı Javascript motoru. Node.js Chrome'un Javascript motoru üzerine inşa edilmiş bir platform ve en önemli özelliği ise eylem tabanlı (event-driven) ve hiçbir şekilde bloklanmayan (non-blocking) bir giriş-çıkış (IO) sistemine sahip olması. Peki, bu neden önemli? Web'de sunucu tarafında yazılım geliştiriyorsanız, yazılımınıza aynı anda birden çok istemcinin bağlanacağını unutmamalısınız. (Sitenizin popülerliğine göre aynı anda bağlanan kişi sayısı 100.000'i bile geçebilir). Dolayısıyla kodumuzdaki giriş ve çıkışlara çok dikkat etmeliyiz. !!!!Olası bir bloklayan mimaride her kullanıcı, ancak başka bir kullanıcı girdi-çıktı işlemi yapmıyorken işlem yapabilecektir; bu da sitenin performansını azaltır. Node.js bu noktada devreye giriyor ve bizlere bloklamayan ve eylem tabanlı bir mimari sunuyor. Bu, listede bekleyenlerin istemciler veya fonksiyonlar değil eylemler olması anlamına geliyor. Böylelikle deadlock'a girmeden ve sitenin performansında herhangi bir azalma olmadan sunucu tarafında istediğimiz verimi elde etmiş oluyoruz.

Sisteminize Node.js'i ve npm'i(node package manager) nasıl kuracağınıza gelirsek Ubuntu için aşağıdaki komutları uygulamanız yeterli olacaktır.

sudo apt-get install nodejs
sudo apt-get install npm

Node.js'de kodumuzu yazarken kullanabileceğimiz çeşitli program birimleri (modüller) vardır. Bu parçaları kullanabilmek için şu şekilde tanımlama yapmak durumundayız:

var REFERENCE = require(MODULE_NAME)

Bu sayede parçayı REFERENCE'ı kullanarak çağırabiliriz fakat şunu hatırlatmakta fayda var ki eğer sistemimizde bu parça bulunmamaktaysa önce ilgili parçayı aşağıdaki gibi sistemimize kurmalıyız.

npm install MODULE_NAME

Şimdi size ufak bir örnek göstereceğim.

var async = require("async");

async.parallel([basic("1",5000)
        ,basic("2",3000)
        ,basic("3",3000)
        ,basic("4",3000)
        ,basic("5",3000)
        ,basic("6",3000)
        ,basic("7",3000)
        ,basic("8",3000)
        ,basic("9",3000)
        ,basic("10",3000)], 
    function(err, result){});

function basic(str,time){
    setTimeout(function(){console.log(str);},time);
}

İlk önce async parçasını programa tanıtıyorum. Ardından async parçasının parallel fonksiyonunu kullanarak içine fonksiyonlar içeren bir diziyi ve bu dizideki fonksiyonların hepsini çalıştırmayı bitirdiğinde (veya en az bir tanesi hata aldığında) çalışacak olan fonksiyonu yolluyorum. Parallel fonksiyonunun özelliği içine girdi olarak aldığı fonksiyonları paralel bir şekilde çalıştırıp sonucunu başka bir fonksiyona aktarması ve oradan aldığı sonucu da bize vermesidir. Çıktı olarak ise aşağıdakini alıyoruz.

2
3
4
5
6
7
8
9
10
1

Bu yazıda node.js'e giriş tadında node.js'in özelliklerini size tanıttık. İnternette node.js'e özel yazılmış birçok MVC yapısında framework bulabilirsiniz. Bu sayede no.js'i en çok kullanıldığı alan olan webde de kullanmaya başlayabilirsiniz.