Node.Js – Middleware

Node.Js Giriş yazısından sonra middleware kavramı ile yazılarıma devam ediyorum..

Middleware kavramının tam bir tanımı olmamakla birlikte genel olarak; geliştirici ile sistem arasında bulunan katmandır. Sistem derken ya işletim sistemi ya da Node altyapısı olan sistemi kasteder.
Daha spesifik olarak middleware katmanı kendisini uygulama ile sistem arasında iletişim katmanı olarak atamaktadır.

Middleware katmanı olmadan uygulama geliştirirsek tüm request işlemi tek ve uzun bir request handler ile yönetilecektir. Middleware yapısı sayesinde request handler parçalara bölünüp, her parçada farklı bir iş yapmamızı sağlar. Middleware kullanarak yapabileceklerimiz;authorization, proxies, routers, cookie ve session yönetimi. Örneğin ilk middleware yapısı log işlemi olsun ve tüm istekler console üzerinden görüntülensin. Bir sonraki middleware olarak authentication olsun ve yetkisi olmayan kullanıcılar daha sonraki middleware katmanına geçemesin.

nodemiddleware

Normal node yapısında middleware yapısı yukarıdaki resimdeki gibi işlemektedir. Client istek yapar. Node http server bu isteği yazdığımız handler function yapısına iletir. Handler içerisinde istek işlenir ve http server’a tekrar yollanır.

Connect ve Express frameworkleri kullanarak işlemlerimizi kısaltmaktayız. Bu yazıda express frameworkten fazla bahsetmeden middleware yapısını anlatmak istiyorum. İkisi arasındaki farka değinecek olursak Connect framework ile sadece middleware işlemine odaklanabiliriz. Express framework kullanırsak daha kapsamlı işler yaparız (routing, view rendering vs). Express, connect framework ile uyumludur. Express kullanırken middleware fonksiyonlarını kendimiz yazabiliriz veya hazırda bulunan geliştiriciler tarafından yazılımış açık kaynaklı module yapılarını kullanabiliriz. Aşağıdaki yapı express middleware yapısını göstermektedir.

expressmiddleware

Node http server üzerinden giden istekler stack yapısında toplanır. Stack yapısı içerisinde istek middleware fonksiyonlarını teker teker işleyip sonunda respond olarak http server’a kullanıcı isteğinin cevabını döndürür. Stack aşamasında middleware yapıları işlenirken herhangi bir hata oluştuğu durumda işlem sırası kesilip hata middleware yapısına geçilmektedir. Kısaca özetlersek express frameworkte gelen istek stack yapısı üzerinden yukarıdan aşağıya doğru tüm middleware işlemlerinden geçer.

 

Middleware fonksiyonları 3 parametre almaktadır. Request ve response sürekli bulunmalıdır. Bunlar: function logger(request,response, next). Hata middleware yapısı ise 4 parametre alır. err, request, response, next 

Örnek verecek olursak; logger yaparken, console.log ile basit bir logger yapısı yaparız. Eğer logger işlemini gerçekleştirmek için hazırlanmış “morgan” adı verilen module yapısını kullanırsak işlemimizi kısaltırız. Sonuçta tekerleği yeniden icat etmemize gerek yok hazır geliştirilmiş modülleri kullanıp yapacağımız işe odaklanmak daha mantıklıdır.

Express.js, middleware yapısını kendi sitesinde basitçe anlatmış. Kısaca özetleyecek olursak. Önceden yüklenmiş(npm install express –save) express modulünü ekliyor ve app değişkenine express uygulamasını tanımlıyor. Mylogger ile basitçe log yapısı oluşturup next() metodu ile bir sonraki yapıyı çağırıyor. app.use(myLogger) ile stack yapısına ekleme işlemi yapılıyor. Ardından routing işlemi yapılarak “/” yani açılışta gösterilecek ilk ekrana “hello world” yazdırıyor.

ekran-alintisi

ekran-alintisi2

Middleware yapısı hakkında bilgi vermeye çalıştım. Nodejs giriş yazısında kaynakçaya eklediğim linklerde daha detaylı bilgi bulabilirsiniz.

Bu makalede aslında express’e kısaca giriş yapmış olduk. Bir sonraki yazımda express framework hakkında yazacağım. Node.Js kullanarak yapacağım örnekleri siteye eklemeyi düşünüyorum.

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s