2011-07-04 5 views
6

Bazı verileri görüntülemek için web tabanlı bir önyüz oluşturmamız gerekiyor. Sorun, verilerin saniyede bir kez güncellenmesi gerektiğidir. Web geliştiricisi olarak benim için açık çözüm AJAX. Maalesef, bu web arayüzünün amaçlarından biri, aylarca veya yıllarca sürekli olarak çalışması beklenen katıştırılmış tarayıcı penceresinin içinde görüntülenecektir. Bu, yeniden başlatma/yenileme ile çalışma ayları. Test sırasında, bir ay boyunca bir süre boyunca Safari'de (her 1,5 saniyede bir basit veri seti talep eden) bir kavram arayüzü kanıtı çalıştırdık. Bu süre zarfında, Safari'nin bellek kullanımı yaklaşık 30 MB'den 100MB'a yükseltildi. Böylece, böyle bir çözümün istikrarından korkuyoruz.Sürekli olarak sunucudan veri isteyen bir web sayfası için hangi teknolojiyi kullanmalıyım?

Bu görev için başka teknikler önerebilir miyiz, belki daha az masrafla (basit veri kümeleri istendiğinde - bizim durumumuzda olduğu gibi) - HTTP başlıklarının çok önemli bir veri parçası olduğundan korkuyorum.)

+0

Eğer node.js içine baktı mı? –

+0

ayrı uygulama yazmak için bir seçenek var mı, yani (kalıcı bağlantı ile örneğin) kendi ağ protokolünü dönebilirsiniz? Webkit'i kullanmaya devam edebilirsiniz, ancak daha fazla kontrol sahibi olursunuz. –

+0

+1 Güzel soru için – Predator

cevap

1

öneririm size ölçeklenebilir arka uç olarak daha iyi performans ve kullanım BOOST Asio (C++) ya da Netty (Java) için kendi protokolünü yazabilirsiniz böylece TCP soketleri kullanmasına izin verir web.js aracılığıyla gerçek zamanlı güncellemelere izin veren now.js eklentisi. Hatta eski tarayıcılar için destek de vardır, bu yüzden tarayıcı websockets desteklemiyorsa, bir kuyrukluyıldız sunucu uygulaması, AJAX veya bir iframe düşecek.

Bir linux ortamında kurulumu son derece kolaydır ve başlamanıza yardımcı olacak çok sayıda belge vardır.

Javascript ile çalışır ve Google V8 javascript motoru üzerinde çalışır, böylece OOP Javascript ile çalışmış olsaydınız, nispeten kolay bir şekilde seçebilmeniz gerekir.

BAĞLANTILAR:
http://nodejs.org/
http://nowjs.com/

0

Belki de websocket? Her X saniyede bir AJAX isteği yapmak yerine, sunucu geldikleri sırada yeni verileri itiyor.

0

Kişisel etkinliğim php4 +, mysql, apache veya lightpd web sunucusu.

Zorlu Python'u da öneririm.

Bahsettiğiniz şeyde uzmanlaşıyorum, aslında ekrana bakacak mısınız? Değilse, bir http soketi kullanarak veya bir linux kutusunda bir wget cronjob kullanarak sayfayı talep etmelisiniz.

Evet, http üstbilgisi çok önemlidir, eğer bunları engellemeye çalışırsanız, web sunucusu bir "Sunucu - Hatalı İstek" Hatası verir. Sorunun kendiliğinden AJAX olmadığını sanıyorum ama bir sich bir tarayıcı kullanarak :)

0

bana karar ne bilsin, ben paylaşmak için bir şey var: ile yapılan nerede herhangi sanmıyorum aklımda sürekli çalışıyorum ve tüm (yeniden) yükleme işlemlerinin sonunda bir miktar daha fazla bellek olacağına inanıyorum.

Verilerinizi, kendiniz tasarladığınız basit bir şeyle tüketmek için en iyisi olacaksınız. Açıkça aynı noktada üretebilirsiniz (sunucu, HTTP üzerinden isteme veya en çok istediğiniz gibi), ancak hedefiniz "birkaç yıllık çalışma zamanı" ise tam bir web tarayıcısına ihtiyacınız yoktur.

1

Adobe AIR, ön uç olarak nasıl? İçinde iyi çöp toplayıcıları olan Flash/FLEX'i kullanabilirsiniz, bu yüzden uzun süre çalışan bir sorun olmayacaktır. AIR, XHTML ve JavaScript'te de yazabilmenizi sağlar, bu nedenle bu teknolojilere aşina olmanız durumunda iyi bir seçenek olabilir

PHP bu tür istekler için iyi bir seçim değildir. Comet sunucudan veri almak için iyi bir yol gibi görünüyor. Örneğin mükemmel Tornado (Python) arka uç olarak kullanabilirsiniz.

ActionScript node.js ve içine bakarak

+0

Şahsen bir kişisel tercih olarak önce AIR ile JavaScript'i deniyordum sonra Flash/FLEX ikinci. Ama gerçek dünyada hem kavramların kanıtı olarak hem de herbiri birbirine bağlı olarak test ediyorum. Arka uç için, doğrudan AIR'e denetimler oluşturamazsam, uygulamanın arka planına özel bir yorum yapmamasını ve uygulamanın arka planında yorum yapmamasını gerektirir. – Ryan

İlgili konular