ForumSinsi - 2006 Yılından Beri

ForumSinsi - 2006 Yılından Beri (http://forumsinsi.com/index.php)
-   Eğitim & Öğretim (http://forumsinsi.com/forumdisplay.php?f=651)
-   -   Node.js Nedir ? (http://forumsinsi.com/showthread.php?t=1093067)

[KAPLAN] 12-06-2016 07:43 PM

Node.js Nedir ?
 
1 Eklenti(ler)
Node.js, çeşitli araçlar ve uygulamalar geliştirmek için açık kaynak kodlu, çapraz platformlu bir JavaScript çalışma zamanı ortamıdır.

http://frmsinsi.net/attachment.php?a...1&d=1481042649

Node.js bir JavaScript çerçevesi olmasa da, temel modüllerinin birçoğu JavaScript ile yazılmıştır ve geliştiriciler JavaScript'te yeni modüller yazabilir. Çalışma zamanı ortamı JavaScript'i Google'ın V8 JavaScript motorunu kullanarak yorumluyor.

Node.js, asenkron G / Ç kapasitesine sahip, etkinliğe dayalı bir mimariye sahiptir. Bu tasarım seçenekleri, birçok giriş / çıkış işlemi ile gerçek zamanlı Web uygulamaları (ör., Gerçek zamanlı iletişim programları ve tarayıcı oyunları) ile Web uygulamalarında çıktı ve ölçeklenebilirliği optimize etmeyi amaçlamaktadır.

Node.js Vakfı tarafından yönetilen Node.js dağıtılan geliştirme projesi, Linux Vakfı'nın İşbirlikçi Projeler programı tarafından kolaylaştırılmıştır. Node.js yazılımının kurumsal kullanıcıları arasında GoDaddy, Groupon, IBM, LinkedIn, Microsoft, Netflix, PayPal, Voxer, Walmart, Yahoo ! ve Cisco Sistemleri.

Node.js Node.js'in yaratıcısı Ryan Dahl, aslen 2009'da Ryan Dahl tarafından yazılmıştır. İlk sürüm yalnızca Linux'u destekledi. Gelişimi ve bakımı Dahl tarafından yönetildi ve daha sonra Joyent tarafından desteklendi. Dahl, Flickr'da bir dosya yükleme ilerleme çubuğu gördükten sonra Node.js'yi yaratmak için esin kaynağı oldu. Tarayıcı, dosyanın ne kadarının yüklendiğini bilmiyordu ve Web sunucusunu sorgulamalıydı. Dahl daha kolay bir yol arıyordu.

Dahl, 8 Kasım 2009'da Avrupa JSConf açılışında projeyi gösterdi. Node.js, Google'ın V8 JavaScript motoru, bir olay döngüsü ve düşük seviye bir G / Ç API'sini birleştirdi. [27] Proje ayakta alkışladı. Ocak 2010'da, npm adlı Node.js ortamı için bir paket yöneticisi tanıtıldı. Paket yöneticisi, programcıların Node.js kütüphanelerinin kaynak kodunu yayınlamasını ve paylaşmasını kolaylaştırır ve kütüphanelerin kurulumunu, güncellenmesini ve kaldırılmasını basitleştirmek için tasarlanmıştır. Haziran 2011'de Microsoft ve Joyent Node.js'in yerli bir Windows sürümünü uyguladılar. Windows'u destekleyen ilk Node.js, Temmuz 2011'de piyasaya çıktı. Ocak 2012'de Dahl, kenara çekildi ve projeyi yönetmek için iş arkadaşını ve npm yaratıcısı Isaac Schlueter'i tanıttı. Ocak 2014'te Schlueter, Timothy J. Fontaine'in projeye liderlik edeceğini açıkladı. Aralık 2014'te Fedor Indutny, iO.js'yi başlattı, bir Node.js çatalı başladı. Joyent'in yönetimi üzerindeki iç çatışma nedeniyle, io.js ayrı bir teknik komite ile açık bir yönetişim alternatifi olarak yaratılmıştır. Node.js'den farklı olarak, yazarlar io.js'yi Google V8 JavaScript motorunun en yeni sürümleriyle güncel tutmayı planladılar. Şubat 2015'te tarafsız Node.js Vakfı oluşturma niyeti ilan edildi. Haziran 2015'e kadar, Node.js ve io.js toplulukları, Node.js Vakfı kapsamında birlikte çalışmaya oy verdiler. Eylül 2015'te, Node.js v0.12 ve io.js v3.3 düğüm v4.0'a tekrar birleştirildi. Bu, V8 ES6 özelliklerini Node.js'ye getirdi ve uzun vadeli bir destek sürümü sağladı. 2016'dan itibaren, io.js web sitesi, geliştiricilerin Node.js'ye geri dönmelerini ve birleşmeden dolayı başka yayınların planlanmadığını önermektedir. [40] Genel Açıklama [değiştir] Node.js, JavaScript'i ve çeşitli temel işlevleri ele alan bir "modül" koleksiyonunu kullanarak Web sunucuları ve ağ araçları oluşturulmasına izin verir.

Modüller, dosya sistemi G / Ç, ağ (DNS, HTTP, TCP, TLS / SSL veya UDP), ikili veri (tampon), şifreleme fonksiyonları, veri akışları ve diğer temel fonksiyonlar için sağlanmaktadır.Node.js'nin modülleri, sunucu uygulamalarını yazmanın karmaşıklığını azaltmak için tasarlanmış bir API kullanır. Node.js uygulamaları Mac OS X, Microsoft Windows, NonStop, ve Unix sunucuları üzerinde çalışabilir. Alternatif olarak CoffeeScript (bir JavaScript alternatifi), Dart veya Microsoft TypeScript (kuvvetle biçimlendirilmiş JavaScript biçimleri) veya JavaScript'e derleyebilecek başka herhangi bir dil ile yazılabilirler. Node.js öncelikle Web sunucuları gibi ağ programlarını PHP'ye benzer hale getirmek için kullanılır. Node.js ve PHP arasındaki en büyük fark, PHP'deki işlevlerin çoğunun tamamlanıncaya kadar engellenmesidir (komutlar önceki komutların tamamlanmasından sonra yürütülür); buna karşın Node.js'deki işlevler engellemez (komutlar paralel olarak yürütülür ve kullanır) Sinyal tamamlama veya arıza için geri arama). Platform mimarisi Node.js, web sunucularına olay odaklı programlama getirerek, JavaScript'te hızlı web sunucularının geliştirilmesini sağlar. Geliştiriciler, bir görevin tamamlandığını bildirmek için geri arama kullanan basitleştirilmiş bir olay odaklı programlama modeli kullanarak, iş parçacığı kullanmadan son derece ölçeklenebilir sunucular oluşturabilirler. Node.js, eşzamanlılık birçok sunucu tarafı programlama dilinde zordur ve genellikle düşük performansa neden olduğu için oluşturulmuştur. Node.js bir betik dili (JavaScript) kolaylığını Unix ağ programlama gücüyle birleştirir. Node.js Google V8 JavaScript motorunda kuruldu, çünkü BSD lisansı altında açık kaynak kodlu, son derece hızlı ve HTTP, DNS, TCP gibi internet temelleri konusunda yeterli bilgiye sahipti. Ayrıca, JavaScript iyi bilinen bir dildir ve Node.js'ye tüm web geliştirme topluluğunun derhal erişebilmesini sağlar.

Teknik detaylar


Node.js, olay döngüsü adı verilen bir döngüde gelen istekleri işleyen bir Javascript çalışma zamanı ortamıdır.

Threading

Node.js bir çalışır tek bir iş parçacığı kullanarak, engellenmeyen I / O iş parçacığı maliyeti ödemeden eşzamanlı bağlantı onbinlerce destek sağlayan, aramaları bağlam anahtarlama . [61] kullandığı tüm istekleri arasında tek bir iş parçacığı paylaşmak tasarım gözlemci desen I / O gerçekleştiren herhangi bir fonksiyon kullanmanız gerekir derece eşzamanlı uygulamalar, bina için tasarlanmıştır geri arama . Tek iş parçacıklı olay döngü karşılamak amacıyla, node.js kullanan libuv sırayla engellenmeyen asenkron I / O bazı operasyonlarını sorumlu bir sabit boyutlu ThreadPool'da kullanır kitaplığı. [4]

Bu tek iş parçacıklı yaklaşımın dezavantajı node.js izin vermez ki dikey ölçekleme sayısını artırarak CPU çekirdekleri gibi küme olarak ek bir modül, kullanmadan üzerinde çalıştığı makinenin [62] StrongLoop Process Manager [ 63] ya PM2. [64] Ancak, geliştiriciler libuv threadpool parçacığı varsayılan sayısını artırabilirsiniz; Bu konuları sunucu işletim sistemi tarafından çoklu çekirdek dağılmış olması muhtemeldir.

Node.js paralel görevler Yürütme bir iş parçacığı havuzu tarafından işlenir. ana iş parçacığı arama fonksiyonları parçacığı havuzu çekme içinde ipler ve yürütmek paylaşılan görev sırası görevleri göndermek. Kendiliğinden engellenmeyen ağ gibi sistem işlevlerini doğal kendi iş parçacığı üzerinde bir engelleme şekilde dosya G / Ç çalıştırmak gibi sistem fonksiyonlarını bloke ederken, soket engellenmeyen tarafı çekirdek çevirir. parçacığı havuzu, bir iş parçacığı bir görevi tamamladığında, sırayla uyanır ve kayıtlı geri arama yürütmek bu ana iş parçacığı bildirir. callbacks ana iş parçacığı üzerinde seri olarak işlenir bu yana, uzun ömürlü hesaplamalar ve diğer CPU bağlı görevleri tamamlanana kadar tüm olay döngü donacak.

V8

V8 için inşa JavaScript yürütme motoru Google Chrome ve açık kaynaklı 2008'de Yazılı Google tarafından C ++ , V8 yerli JavaScript kaynak kodu derler makine koduna gerçek zamanlı olarak yorumlamak yerine.

Node.js kullanır libuv asenkron olayları işlemek için. Libuv, Windows ve hem ağ ve dosya sistemi işlevleri için bir soyutlama katmanı POSIX NonStop ve Unix Linux, Mac OS X, ÖSS gibi sistemleri tabanlı.

Node.js temel işlevi bir JavaScript kütüphanede bulunur. C ++ ile yazılmış node.js bağlamaları, birbirlerine ve işletim sistemi bu teknolojileri bağlayın.

Paket yönetimi

npm node.js sunucu platformu için önceden yüklenmiş paket yöneticisidir. Üçüncü taraf node.js programlarının kurulumunu ve yönetimini organize npm kayıt node.js programları yüklemek için kullanılır. ile npm karıştırılmamalıdır değildir CommonJS () gerektiren deyimi. Bu yük koduna kullanılmaz; bunun yerine, komut satırından kod bağımlılıkları kodu yüklemek ve yönetmek için kullanılır. Gibi npm kayıt defterinde bulunan paketler basit yardımcı kütüphaneleri arasında olabilir Underscore.js Grunt gibi koşucuları göreve.

Birleştirilmiş API

Node.js bir tarayıcı ile kombine edilebilir, (örneğin, bir veri tabanı destek JSON veri Postgres , [67] MongoDB veya CouchDB ve benzeri) JSON birleşik bir JavaScript geliştirme yığını için. Esasen gibi sunucu tarafı geliştirme desenleri nelerdi adaptasyonu ile MVC , MVP , MVVM , vb node.js izin verir yeniden kullanımı istemci tarafı ve sunucu tarafı arasında aynı modeli ve servis arayüzü.

Event Loop

Bir bağlantı kurulduğunda bildirilir ve işletim sistemi bir geri verecektir ki node.js işletim sistemi ile kendini kaydeder. Node.js çalışma zamanı içinde, her bağlantı bir küçük yığın ayırma . Geleneksel olarak, nispeten ağır işletim süreçleri ya da konuları her bağlantıyı ele. Node.js yerine süreçlerin ya da parçacığı, ölçeklenebilirlik için bir olay döngü kullanır. [68] Diğer olay kaynaklı sunuculara aksine, node.js olay döngüsü açıkça çağrılacak gerek yoktur. Bunun yerine geri çağrıları tanımlanır ve sunucu otomatik geri arama tanımının sonunda olay döngüye girer. Yapılacak başka callbacks olduğunda node.js olay döngü çıkar.


Powered by vBulletin®
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.