• 11-04-2013, 03:38:37
    #1
    En basit tanımıyla; Javascript dilini kullarak sunucu tarafında (Server Side) çalışan, hızlı ve ölçeklenebilir, gerçek zamanlı (real time) uygulamalar geliştirmemizi sağlayan web soket teknolojisidir. Google'ın Open Source olarak geliştirdiği V8 JavaScript Engine altyapısını kullanmaktadır. Php, Java, Python, Asp.net vb. sunucu taraflı çalışan dillerde olduğu gibi, Node.js'nin kaynak kodlarına da istemciler erişim sağlayamaz.

    NİYE NODEJS GİBİ WEB SOKET TEKNOLOJİLERİ KULLANMALIYIM?

    Canlı maç sonuçlarını gösteren web sitesi geliştirdiğimizi düşünelim. - Ülkemizde futbola yoğun ilgi olduğundan en ideal örnek bu olacak sanırım. - Böyle bir projede Node.Js kullanmazsak; istemci (Client) her x saniyede sunucuya "Gol olan, skoru güncellenen maç var mı?" diye soracak ve güncellenen maçların skorlarını arayüze yansıtacak.

    Burada belirttiğim x saniyenin 2 saniye olduğunu düşünürsek, sitede aktif olan her kullanıcı için sunucuya dakikada 30 istek (request) gider. Canlı maç sonuçlarını takip etmek için sitede bir dakika boyunca anlık 500 kişi olduğunu düşürsek; dakikada sunucuya düşen istek sayısı 500 x 30 = 15.000 olacaktır. Bir süre sonra (Anlık ziyaretçi, sunucu özellikleri vb. etkenlere göre) sunucunun işlemci ve ram kaynakları maksimum limitlere erişecek, sunucu isteklere yanıt veremeyecek duruma gelecek. Tabiri caizse; "Herkes bir şeyler soruyor! Benim de 10 tane elim yok, hangi birine yetişeyim." diyerek server isyan bayrağını çekecek.

    Canlı maç sonuçları uygulamasını node.js veya alternatif başka bir web socket ile geliştirmiş olsaydık; her x saniyede bir yüzlerce istemci sunucuya "Değişen skor var mı?" diye sormayacak, skoru değişen maç olduğunda sunucu tüm istemcilere "x,y,z maçlarının skorları güncellendi" bilgisini verecek. Üstelik bu değişiklikler senkron farkı olmadan tüm istemcilere eş zamanlı olarak yansıyacak. Böylece sunucu her saniye birilerine cevap vermek yerine, sadece yeni değişiklik olduğunda herkese bir kez ve topluca yanıt verecek.
    Bu örnek NodeJS vb. web socket teknolojilerini neden tercih etmemiz gerektiğini somut bir şekilde ortaya koyuyor sanırım. NodeJS ile multiplayer oyunlar, sohbet (Chat) vb. bir çok farklı alanda uygulama geliştirilebilir.

    ALTERNATİF(LER)İ VAR MIDIR?

    Bir zamanların popüler sosyal ağlarından FriendFeed'in de kullandığı, Python dilini kullanarak uygulama geliştirme olanağı sunan Tornado en popüler alternatiflerden biri. - Siz bu yazıyı okuduğunuzda daha güçlü alternatifler çıkmış olabilir. -

    NASIL KULLANABİLİRİM?

    Kurulum dosyasını indirmek ve detaylı dokümantasyona erişmek için nodejs.org adresini ziyaret edebilirsiniz.

    KAYNAK : http://www.webteders.com/blog/detay/NodeJS-nedir./62


    .
  • 11-04-2013, 03:52:20
    #2
    Kimlik doğrulama veya yönetimden onay bekliyor.
    Hep merak ettiğim ama bi türlü bulaşmaya zaman bulamadığım bir teknoloji NodeJS. Sanırım Javascript'te biraz bilgiden daha fazlası gerekiyor. Verdiğiniz örnek son derece açıklayıcı olmuş. Anlattığınız şeyi defalarca düşünüp, yapamayacağımı düşündükten sonra vazgeçtiğim projelerim olmuştu. Demek ki bununla yapılabilirmiş. Şu an sizden, "yok, gerek yok çok fazla js bilmeye" cümlesini duyarsam çok mutlu olurum. Ama boş beklenti galiba

    Not: Konunun yeri yanlış.
  • 11-04-2013, 04:17:15
    #3
    teknolojiler ve platformlar inanılmaz bir çeşitlilik sunmaya başladı. python, ruby, nodjs, scala aldı başını gitti. hepsinin bazı konularda avantajları olsa da tıpkı serverlar ve frameworkler gibi bazı eklentilerle bu avantaj farkları azaltılabiliyor.

    Bu noktada "Ölçmediğin bilgi senin değildir" demek lazım. İşini ölçüp biçip zamanlayıp bunların hangisini nerede nasıl kullanacağını anlamak lazım. Bunun yanında birini kullanırken olmazsa olmaz mı ? Kullanma maliyetini kurtarıyor mu kavramak gerek.

    Bu noktada benim görüşüm en az birinde profesyonel olmak, diğerlerinin nerede ne işe yaradığını iyi anlamak ve eğer yapabiliyorsanız iş sürecinizde kullandığınız programların frameworklerin alternatiflerinden en az birini öğrenip ilerlemek.

    Örnek yolllardan biri, HTML5, CSS3, jQuery, jQuery UI, jQuery Mobile ( alternatif örnek ext js ama paralı, dojo ama plugini az ) , AngularJS ( backbone.js, knockout.js alternatifleri ama angular google destekli ) , CodeIgniter ( Symfony ama o büyük projelerde mantıklı, Laravel ama onu henüz tek kişi geliştiriyor ) , Sphinx ( alternatif solr ve elastic search ama sphinx daha kolay solr daha kapsamlı işlerde ) MySQL ( MariaDB ama biraz yol alması lazım ve mysql hala bedava ve çözülmüş sorun çok fazla ) , MongoDB ( redis vb. alternatifler var ama cache mekanizmaları mongoda daha iyi ) gibi bir kaç soruya cevap vererek ilerlenebilir.

    Mesela araya PHP yerine Ruby, Pyhton alabilirsiniz. Fakat PHPden iyi olsalar bile TR de yeterince iş yok. Hatta dünyada da o kadar olduğunu sanmıyorum. Ama bilimsel araştırma yapıyorsanız Python mecburi gibi birşey. Yok startup global ise Ruby On Rails bence doğru seçim.

    Konuyu genişletip Heroku mu kullanayım yoksa eclipse yerine c9.io mu yapalım ? Git mi Mercual mi yoksa SVN mi daha iyi düşünebilirsiniz de. Fakat yolu çizmenizi sağlayan bir seriniz varsa hemen onu kullanın !

    Çünkü esas olan sonuçtur.
  • 11-04-2013, 15:23:06
    #4
    Çok uzun zamandır node.js olayına bulaşmaya çalışıyorum, bir kaç denemeler yaptım, cidden harika bir şey. Fakat şöyle bir şey var node.js'yi her yerde kullanmak mümkün değil, benim şuan ki amacım node.js konusunda çok ileri seviye uzman olmak değil açıkçası, ilk önce mantığını kavrayabilmek sonra da projelerde gerektiği yerlerde kullanabilecek kadar bilmek.

    Ayrıca @zee üstad herşeyi çok iyi özetlemiş
  • 13-04-2013, 00:15:53
    #5
    Client tarafı, Server tarafından iş kapmaya devam ettikçe, bu tarz uygulamalar çoğalacak ve kullanımı artacak diye düşünüyorum. Sağlam bir komünitesi var, dökümantasyonu güzel. Gün geçtikçe tutorial sayısı artıyor.

    Bence nerede kullanıldığı çok önemli.
  • 16-04-2013, 12:28:39
    #6
    aslında coderler tarafındanda önem verilse çok iyi bir sistem.gidip bir tane canlı destek yazacaksın.sürekli ajax ile istekte bulunacağına git socket kullan node.js ile.socket programlamayı her zaman çok sevmişimdir.hatta node.js kullanarak gereksiz trafikten de kurtuluyorsun.sürekli ajax isteği yerine yaz client server bitsin.zaten adamın biride node.js ile sağlam bir site yazmış. tweetping.net

    bu node.js ile ilgili bilgisi olan arkadaşlar server tarafında çalışması için gereken sistem yazılımsal ihtiyaçlarını da yazabilirler mi .yoksa sadece javascript kodlarını yazmak yeterli olur mu? node.js yi bilgisayara kurunca cmd ekranı çıkıyor bir tane.buradna gerekli ayarları yapıp sistemi çalıştırıyorsun.sunucu tarafında bunun için gerekenler nelerdir?
  • 16-04-2013, 15:09:22
    #7
    Bu konuda kafam çok karışık. Aşırı karışık. Yani işin içine veritabanı nasıl giriyor, doğru kullanımı nedir...
  • 17-04-2013, 06:47:59
    #8
    Genel hatları ile baktığınızda PHP ile Java/Java.io arasındaki fark ne ise, PHP ile Node.js arasındaki fark da odur. Node.js veya Java/Java.io ile soket sunucu uygulamaları yazabilirken PHP ile yazamaz mısınız? Elbette yazabilirsiniz. PHP'nin eksik yönü "multithreading" konusunda yerleşik destek sağlamaması. Ancak bu yönü ile de belli bir noktaya kadar uygun bir şekilde kullanılabilir. Örnek bir uygulama olarak;
    https://www.r10.net/php/1018662-php-ile-online-okey.html

    Yine de bu genellemeleri bir yana bırakarak PHP ve Node.js karşılaştırması yapacak olursak, her fonksiyonu asenkronize çalışan bir dile karşı, bu adil bir karşılaştırma olmaz. Sunucular zamanlarının büyük bir kısmını giriş/çıkış işlemleri ile harcadıkları için PHP bir dosyaya/sokete veri yazmak isterken, bir dosyadan/soketten veri okumak isterken, veritabanı işlemi yaparken Node.js'e karşı çoktan büyük bir arayla kaybetmiş olacaktır. Kullanıcı sayısı yükseldiğinde ise belli bir zamandan sonra stabil çalışmayacaktır. PHP bir yana, node.js gibi "event-driven" programlama sağlayan platformlar genellikle "multithreading" dillerden daha hızlıdır.

    Tabii Node.js isminin bu kadar çok zikredilme nedeninin altında sihirli bir şey yok. Önceden de farklı dillerde benzer alternatifler vardı ancak bu kadar rağbet görmemişlerdiler. JavaScript kolay kullanılanabilen bir dil ve pek çok farklı platformda çalışan web programcılarının en büyük ortak paydası. Böyle bir dil ile sunucu tarafında da çalışma imkanı kulağa doğal olarak cazip geliyor. Ayrıca şahsi kanaatim olarak Javascript ile kod yazmak -özellikle CoffeeScript ile beraber-, pek çok dil ile kod yazmaktan daha eğlenceli. Bunun yanında "event-driven" bir dil olması, ister istemez "yeni nesil süper dinamik arayüz" kavramını ortaya çıkarıyor. Fakat diğer yandan, Javascript yerine göre aslında zor bir dil olabiliryor. Node.js tam anlamıyla olgunlaşmış bir platform değil, şu an ki versiyonu henüz "0.10.4". API sık sık değişiyor ve sorunlu olabiliyor. Farklı platformlardan gelerek Node.js ile geliştirme yapmak isteyen maceracı programcıların bir çoğu, kısa bir süre sonra eski platformlarına geri dönüyorlar.

    Kısacası yeni nesil olarak adlandırılan bu platformu test etmek için veya kendinize ait küçük web sitelerinizi yazmak için kullanabilirsiniz. Ancak websocket entegrasyonu için Socket.io dışında, şimdilik gerçek hayatta kullanmak pek mantıklı değil.

    Bu kadar parlak bir gelecek vaad ederken, benim şahsi düşüncem şu; ileride Node.js ile programlamaya geçer miyim? Olabilir. Ancak iki beklentim var. Birincisi CoffeeScript ile, Ruby tarzı programlamayı sorunsuzca yapabilmeliyim. İkincisi ise Rails gibi tam donanımlı ve TDD/BDD için aynı kalibrede test ortamı öneren bir "framework" olmalı. Şu an için gördüğüm seçenekler daha çok Codeigniter seviyesini andırıyorlar.

    Eğer Node.js kulağınıza hoş geliyorsa yavaş yavaş inceleyebilirsiniz. Ancak yakın gelecekte geçiş yapmak isteyeceğiniz/zorunda kalacağınız bir teknoloji değil.
  • 17-04-2013, 12:13:21
    #9
    bu node.js ve benzerlerini açıkcası ben de merak ediyorum. fakat "türk" olduğumuz için işimiz düşmeden öğrenmiyoruz. benim de bu zamana kadar socket programlamaya ihtiyacım olmadığı için hiç araştırmadım. @OfisSoft gibi hakkında "nedir? ne değildir? neye yarar? yenilir mi? içilirse daha mı şifalı olur?" makalelere çok rastladım ve okudum.

    ama bu zamana kadar dikkatimi çeken bir şey var, bu node.js ve benzerleri hakkında "kod" haricinde her şey anlatılıyor. bence bilgisi olan birileri bu noje.js için örnek uygulama nasıl yazılır onu anlatmalı. gerçi büyük ihtimalle bir çok kaynak vardır ama dediğim gibi işimiz düşmeden araştırıp öğrenmiyoruz.