Ben ASP.NET ile çalışır. IMHO, ASP.NET 'te asenkron programlama desteği güzel. Yani, biz kaynak yoğun görev için ölçeklenebilirlik geliştirmek BeginXXXX / EndXXXX çifti yöntemi olabilir, olduğunu.
Örneğin, bir işlem veritabanından büyük veri almak ve tepki web sayfasında işlemek gerekiyor. Bu işlem eşzamanlı varsa. Parçacığı teslim bu isteği tüm sayfa yaşam döngüsü için işgal edilecektir. Ipler sınırlı kaynak olduğundan, bu uyumsuz bir şekilde I / O ile çalışmasını programlamak için her zaman daha iyidir. Yani ASP.NET bir geri çağırma işlevi ile BeginXXXX yöntemi çağırmak için iplik tahsis erecek. Konu BeginXXXX hemen döner ve diğer istekleri işlemek için düzenlenebilir çağırır. Ne zaman iş yapılır, geri çağırma işlevi tetiklenir ve ASP.NET aslında yanıt almak için EndXXXX çağırmak olacaktır.
Bu asenkron programlama modeli tam parçacığı kaynaklarından yararlanarak yapabilirsiniz. ThreadPool'da sınırı olmasına rağmen, aslında çok daha fazla isteklerini işleyebilir. Senkron bir şekilde programlamak ve her istek uzun I / O ihtiyacı Ancak, eşzamanlı istekleri parçacığı havuzu boyutunu geçmeyecektir.
Son zamanlarda, ben böyle Ruby on PHP ve Ruby gibi diğer web geliştirme çözümü keşfetmek için bir şans var. Benim için sürpriz, bu çözümler asenkron programlama modelinin muadili yoktur. Her isteği tüm yaşam döngüsü için bir iş parçacığı veya işlem tarafından ele alınır. Bu iş parçacığı veya işlem yanıtın son bit önce işgal gönderilir vardır.
Orada zaman uyumsuz (http://netevil.org/blog/2005/may/guru-multiplexing) benzer bir şey olduğunu, ancak temel bir iplik veya istek için işgal süreci her zaman var olmasıdır. Bu ASP.NET gibi değil.
Yani, ben merak ediyorum: neden bu popüler web çözüm ASP.NET gibi asenkron programlama modeli yok? Neden sadece ASP.NET asenkron yaklaşım kullanmak için geliştikçe?
PHP ve Ruby-on-Raylar çoğunlukla Linux konuşlanan için mi? Ve Linux Microsoft Windows gibi süreç / thread performans ceza zarar vermez?
Ya da, PHP ve Ruby-on-Raylar bulmak değil aslında asenkron bir çözüm var mı?
Teşekkürler.