2010-09-17 15 views
5

Başka herhangi bir ViewState alternatifi var mı? Oturum gibi bir çok duydum, sayfanın kontrollerinden bazılarının durumunu ele geçirip, kullanıcının sayfayı terk ettiği anı yok etmek.ViewState alternatifleri ASP.NET Webforms

ViewState'in kendisini tanımladığımı biliyorum, ancak ViewState'i tamamen önleyebilmem için bir çeşit ya da öneri modeli arıyorum.

Bunu nasıl kullandığımın bir örneği, ViewState ürününe kılavuzumun (ViewModels'in bir listesi) içeriğini saklıyorum. Bu, hangi girdilerin kirlendiğini, hangilerinin değiştirildiğini, dizinlerini, seçili nesnelerini vb. Bilmeye yardımcı olur.

cevap

3

Meslektaşlarımdan biri, görüntü dosyasındaki verileri bir dosyada depolamanın bir yolunu geliştirdi. Böylece, istemci ve sunucu arasında ağır görüntüleme verileri aktarılmaz. Sadece bir viewtate veri dosyasını temsil eden bir anahtar (viewtate veri dosyası) bir oturum değişkeni olarak tutulur. Testlerimizde, dosyadaki görüntülemenin kaydedilmesinin, görüntülenme miktarını azaltarak sunucu yanıt süresini düşürdüğünü bulduk (ki bu çok büyüktü). Bu article içinde "Sunucuda Görüntüleme Durumunu Koruma" altında, bu yöntemin nasıl uygulanabileceğini öğrenebilirsiniz. Görüntüleme verisi verilerini bir web tablosunda saklayabilir, bu da uygulamanızın bir web çiftliğindeyse ekstra esneklik sağlar.

+0

Bu bir alternatif gibi görünmese de, uygulamanızın performansını tüm mimariyi değiştirmeden artırabilirsiniz. – Zafer

+0

Kesinlikle buna dikkat edeceğim. – Jonn

0

Session var ve Cache.

Oturum, kullanıcı başına, Önbellek geneldir.

Bunların tümünü ViewState'de saklamanız gerekiyor mu? Neden gönderiyorsunuz (ama sorunuzda çok belirsizsiniz, bu yüzden burada birkaç varsayım yapıyorum) DB'deki tüm eski verileri alın, yeni verilerinizle karşılaştırın ve nelerin değiştiğini güncelleştirin?

+0

ViewModels adreslerimde devletin oturması daha rahat hissediyorum. (Sadece kontrolün işleyebilmesi için gerçekten gerekli olduğunu düşündüğüm şeyleri saklıyorum.) Geriye kalan her şey geri gönderilir. DB'den çıkmıyor, ViewModel'leri yeniden oluşturuyor ve daha sonra karşılaştırmalar genel olarak daha yavaş mı oluyor? – Jonn

1

Başka bir seçenek ViewState'inizi sıkıştırıyor. Hala gidiş dönüşe toplu katılıyor, ama genellikle minimum.

Eğer .Net 4 kullanıyorsanız

, bazı yeni ViewState eklemeler vardır:

ASP.NET 4.0: more control on viewstate management

+0

Tsk. Uygulamalarımızın çoğunu hala geliştiriyoruz. Net 3.5. – Jonn

1

Sana ViewState uzaklaşmaya dava yapıyoruz sanmıyorum.

Çok miktarda veri tutuyorsanız, başka bir yerde ısrar ederken sorunlarla karşılaşacaksınız. Oturum, toplantı, celse? bellek tüketiminizi yayar, ya da işlenmemişse, Oturum her yüklenişinde (istek başına bir kez) yüklenir. Elbette, mümkün olan en kısa sürede depolanan verileri serbest bırakarak/asp.net MVC'deki TempData gibi sorunu sınırlamaya çalışın.

Zaman damgası/veya kayıt sürümü ekleyerek değiştirilen kayıtları kontrol etmek için saklamanız gereken bilgi miktarını en aza indirebilirsiniz. Bu şekilde, yeni bir sürümün eklenip eklenmediğini kontrol edebilir ve kullanıcıyı hem kaydetmeye çalıştıkları şeyi hem de başkalarının kaydettiklerini gösterebilirsiniz.