ForumSevgisi.Com

  ForumSevgisi.Com > ForumSevgisi Webmaster Bölümü > Hazır Scriptler

Hazır Scriptler vBulletin,SMF gibi Hazir Scriptler.


Asenkron Nedir ?

vBulletin,SMF gibi Hazir Scriptler.


Asenkron Nedir ?

ForumSevgisi Webmaster Bölümü Kategorisinde ve Hazır Scriptler Forumunda Bulunan Asenkron Nedir ? Konusunu Görüntülemektesiniz,Konu İçerigi Kısaca ->> Asenkron Nedir ? Asenkron Nedir ? Facebook ve Twitter’ın yükselişi ile birlikte, özellikle sosyal ağlarda anlık veri akışına alışır duruma ...

Kullanıcı Etiket Listesi

Yeni Konu aç  Cevapla
LinkBack Seçenekler Stil

Okunmamış 17 Mart 2015, 18:59   #1
Durumu:
Çevrimdışı
Kaf_Dağı - ait Kullanıcı Resmi (Avatar)
Arastirmaci
Üyelik tarihi: 26 Ekim 2014
Şehir: ~~~~~~
Mesajlar: 1.130
Konular: 710
Beğenilen: 168
Beğendiği: 334
www.forumsevgisi.com
Standart Asenkron Nedir ?

Asenkron Nedir ?

Asenkron Nedir ?

Facebook ve Twitter’ın yükselişi ile birlikte, özellikle sosyal ağlarda anlık veri akışına alışır duruma geldik. Bildirimleri veya bize gelen mesajları görüntülemek için sayfayı yenileme işlemi geçmişte kalmış eski bir anı oldu. Peki, bu altyapıyı kullanan web siteleri bu gücü nereden alıyor? İşte, bu yazıda bu teknolojinin altında yatan mantığı temel olarak inceleyeceğiz.

‘Asenkron nedir‘e geçmeden önce hala birçok sistemin arka planında çalışan standart senkron yapının ne olduğundan bahsetmek gerek. Senkron bir web sunucusu, örnek olarak "apache" verilebilir, isteği alır, işler ve bu işlemin sonucunu geri döndürür. Bu süreç esnasında sunucu bloke edilmiş durumdadır yani herhangi bir başka isteğe cevap veremez. Bu düşük trafikli bir web sitesinde herhangi bir sıkıntı çıkarmayabilir ancak yüksek stres altındaki bir sunucunun geliştirici tabiri ile patlamasına yol açar. Bu durum geliştirici topluluğu arasında C10k Problemi olarak anılmaktadır. C10k sorununu aşmak ve projemize esneklik kazandırabilmek için ve özellikle real-time işlerin üstesinden gelebilmek için asenkron sunucular ile kullanıcıları karşılamak gerekmektedir.

Asenkron sistemler, senkron sistemlerin aksine aynı anda birden fazla isteği işleyebilirler. İstek yollanır, bu istek işlenir ve bu işleme esnasında başka bir istek daha yollanırsa o istek de işlenir. Bitirilen işlemlerin sonucu ise alınma sıralarına göre değil, bitirilme sıralarına göre geri döndürülür. Asenkron bir sistem, yaptığı işlem blocking bir istek değil ise sunucuyu bloke etmez, bu durum ise non-blocking olarak adlandırılır.

Günümüzde asenkron sistemler için en çok kullanılan alternatifler; Chrome’un Javascript motoru üzerine yazılmış, event-driven olan Node.JS ve Friendfeed’in altyapısında kullanılan sistemin Facebook tarafından açık kaynak haline getirilmesi ile aramıza katılan python tabanlı bir sunucu ve framework olan Tornado’dur. Node.JS kullanan sitelere trello.com’u, Tornado kullanan sitelere ise quara.com’u örnek verebiliriz.

Asenkron çalışmanın mantığını daha iyi anlayabilmek için örnek bir Node.js kodu yazmamız iyi olacaktır. Aşağıdaki kodları inceleyelim:

Öncelikle okuyabilmek için .txt diye bir dosya oluşturup içine veri veri veri veri yazalım. Bu dosyanın yanında da node.js kodlarımızı içerecek app.js dosyamızı yaratıp içine şu kodları ekleyelim:

fs = require(’fs’);
var result = null;

fs.readFile(’.txt’, ’utf8’, function (err,data) {
result = data;
console.log("Veri okundu");
});

console.log("Okunan veri: " + result);

Bu kodun senkron yapıda düşündüğümüzde konsolda node app.js kodunu çalıştırdıktan sonra ekrana

Veri okundu
Okunan veri: veri veri veri veri

yazmasını bekleriz ancak asenkron çalışan node.js üzerinde bu böyle gerçekleşmeyecektir çünkü node.js console.log işlemini daha önce bitireceği için ilk olarak onun sonucunu döndürecek ve daha sonra dosya okuma fonksiyonundaki işlem bittiğinde çalışacak olan callback‘i işleyecektir. Sonuç şu şekilde olur:

Okunan veri: null
Veri okundu

Asenkron yapının nasıl çalıştığı anlaşıldıktan sonra yazının ikinci bölümü olan real-time işlemlerin nasıl gerçekleştirildiğine değinip yazıyı bitireceğim.

Bir web sitesi üzerinde anlık işlemler yapmanın birçok yöntemi vardır ancak temel olarak en çok HTML5’in belki de en büyük nimeti olan websocketler ve bir diğer alternatif olarak long-polling kullanılır. Bu işlemleri yapabilmek için yine asenkron bir sunucu gerekmektedir. Websocketler ws protokolü üzerinden sunucu ve istemcinin haberleştiği bir kapıdır. Javascript tarafında onopen, onmessage, onerror, onclose, send, close öntanımlı metodları kullanılır ve sunucu tarafında backend kısmında hangi teknoloji kullanılıyorsa onun üzerinde tanımlanmış büyük bir ihtimalle yine aynı isimlerle anılacak metodlarda işlenir.

Örnek bir websocket kodu yazalım. Bir index.html dosyamız ve bir de node.js kodlarımızı içerecek app.js dosyamız olsun.

index.html

<html>
<head>
<title>Websocket denemesi</title>
**********
var conn = new WebSocket(’ws://127.0.0.1:8000’);

conn.onopen = function () {
conn.send("Javascript tarafindan mesaj!");
};

conn.onmessage = function (message) {
console.log(message.data);
};

conn.onerror = function (error) {
// Bir hata çıktığında çalışacak kısım!
};
</script>
</head>
<bOdy>
Websocket Denemesi
</bOdy>
</html>

app.js

var ws = require(’websocket’).server;
var http = require(’http’);

var server = http.createServer(function (request, response) {
// HTTP isteklerini işleyecek kısım
});

server.listen(8000);

wsWrapper = new ws({
httpServer: server
});

// WebSocket server
wsWrapper.on(’request’, function (request) {
var conn = request.accept(null, request.origin);

conn.send("Node.js tarafindan mesaj!");

conn.on(’message’, function (message) {
console.log(message.utf8Data);
});

conn.on(’close’, function (conn) {
// Websocket bağlantısı kapandığında çalışacak kısım
});
});

Komut satırında node app.js yazıp, tarayıcıda index.html dosyasını çalıştırdığımızda konsolda Javascript tarafindan mesaj! yazısını, tarayıcının öğeyi denetle özelliği sayesinde konsol kısmında ise Node.js tarafindan mesaj! yazısını görüyoruz.

Son olarak Long-polling örneğini ise Tornado üzerinde verelim. Long-polling, websockete oranla anlaşılması daha zor bir konudur. Sunucuya istek yollanır ve bu bağlantı sunucu tarafından bitirilinceye kadar açık kalır. Belli aralıklar ile ajax sorgusu yapmak yerine istek bir kere yapılır ve cevap gelmesi beklenir. Bu cevap gelene kadar istek Pending durumunda kalır.

Tüm Tornado kodlarını buraya yazmak yerine, Github üzerinde bulunan kendi chat örneğini incelemek daha iyi gibi.<a href= "https://github.com/facebook/tornado/tree/master/demos/chat">Kodlar bu adreste bulunuyor.</a>

Facebook ve Twitter, her ne kadar arka planda çok çok karmaşık işlemler dönse de hala long-polling kullanmaktadır. Websocketler, deneysel çalışmaların dışında özellikle bir fallback mekanizması yaratılmamışsa çok tercih edilmemektedir çünkü tarayıcı desteği ne yazık ki internet explorer açısından son derece kısıtlıdır ve ayrıca bazı güvenlik duvarları ws protokolünü tanımadığı için engellemektedir.

Tüm bu yazılanları özetlememiz gerekirse, web tarafında asenkron sistemler birden fazla işlemi aynı anda yapabilmek, uzun süreli işlemler için geçecek süreyi kullanıcıya yansıtmamak için ortaya çıkmış bir programlama prensibidir. Anlık değişim gerektirecek işlerde bu alternatiflerin kullanılması gerekir. Websocketler, asenkron sunucuların üstünde hızlıca çalışan bir mesajlaşma protokolüdür; long-polling ise sunucu tarafından istenildiğinde bitirilecek olan sürekli açık kalacak bağlantıları sağlayabilmek için gerekli olan sorgunun adıdır. Her ikisi için de asenkron bir sunucu gerekmektedir.
________________
.........................
imza
Alıntı ile Cevapla
Yeni Konu aç  Cevapla

Etiketler
asenkron, nedir

Seçenekler
Stil


Saat: 06:33

Forum Yasal Uyarı
vBulletin® ile Oluşturuldu
Copyright © 2016 vBulletin Solutions, Inc. All rights reserved.

ForumSevgisi.Com Her Hakkı Saklıdır
Tema Tasarım:
Kronik Depresif


Sitemiz bir 'paylaşım' sitesidir. Bu yüzden sitemize kayıt olan herkes kontrol edilmeksizin mesaj/konu/resim paylaşabiliyorlar. Bu sebepten ötürü, sitemizdeki mesaj ya da konulardan doğabilecek yasal sorumluluklar o yazıyı paylaşan kullanıcıya aittir ve iletişim adresine mail atıldığı taktirde mesaj ya da konu en fazla 48 saat içerisinde silinecektir.

ankara escort, izmir escort ankara escort, ankara escort bayan, eryaman escort, bursa escort pendik escort, antalya escort,