Konuyu görüntüle
IUCODERS FORUM > Programlama > .NET > siz ce hangisi daha hızlı????
Yazar
enginkdal


avatar

Kayıt: 09.01.2008
20.09.2008-20:14 #51401
mrb arkadaşlar. benim yaptığım projede iki tane aynı sayfa yaptım.
birincede datalistleri otomatik olarak datasorcunu eklemiş durumdayım. diğerinde ise butuna tıklayınca verileri çekip dataliste atıyorum. otomatik olarak bağladığım sayfa daha hızlı çalışıyor sizce hangisi daha hızlı. yani ototmaik olarak bağlamak mı yoksa butuna tıklayınca verileri datalist içine atmak mı daha mantıklı????

hangisi ve neden????

bu arada adminpaneli bu.mesela anket ekle kısmı var. bir de daha onceki anketler. ilk sayfamda daha onceki anketleri listelerken datalistin datasorcunu otomatik bağlamıştım. yeni sayfamda ise onceki anketler linkbutununa tıklayınca veridoldur(datalist2) gibibir fonksiyon ile çalışırıp içini dolduruyorum. ama birinci sayfam daha erken yükleniyor ve menuler arasında daha hızlı ilerliyorum.

bir de benim anlamaıdğım. bir sorun daha var. linkbutunlara tıklayınca sürekli olarak sayfa kendini yenileyip sonra listeliyor. kendini yenilemeden listeleme yapma imkanı yok mu acaba.

cevaplarınız için şimdiden teşkeküer ederim.





B?ZLER PAZARLiK DEGiL MEZARLIK DOSTLARIYIZ.






Yazar
extreme


avatar
Kahramanmaras
admin
Kayıt: 24.10.2006
20.09.2008-20:21 #51403
verileri herzaman görmek zorunda değilse buton daha mantıklı ve hızlı ıolur bence ama diğer durumda kullanıcı için eziyet olur.





The Man Who Loved Algorithm&Ubuntu.
www.burakamasyali.com





Yazar
enginkdal


avatar

Kayıt: 09.01.2008
20.09.2008-20:38 #51404
extreme yazdi
 
verileri herzaman görmek zorunda değilse buton daha mantıklı ve hızlı ıolur bence ama diğer durumda kullanıcı için eziyet olur.


bende oyle düşündüğüm içn yeni sayfayaptım ama bu yeni sayfa da veriler daha geç listeleniyor. sebebini de anlamş değilim. doğrusu.





B?ZLER PAZARLiK DEGiL MEZARLIK DOSTLARIYIZ.






Yazar
orhan


avatar
istanbul
admin
Kayıt: 17.11.2005
20.09.2008-22:12 #51405
hızdan ziyade kodun daha sonra elden geçirilebilmesi için her zaman dataya bağlanan kısmı html arayüzünden ayrı tut.





N/A
Yazar
aliolci


avatar
en dipten taa derind
Kayıt: 19.01.2006
20.09.2008-23:29 #51406
enginkdal yazdi
 
mrb arkadaşlar. benim yaptığım projede iki tane aynı sayfa yaptım.
birincede datalistleri otomatik olarak datasorcunu eklemiş durumdayım. diğerinde ise butuna tıklayınca verileri çekip dataliste atıyorum. otomatik olarak bağladığım sayfa daha hızlı çalışıyor sizce hangisi daha hızlı. yani ototmaik olarak bağlamak mı yoksa butuna tıklayınca verileri datalist içine atmak mı daha mantıklı????

Otomatik bağladım derken sanırım sayfanda bir datasource kontrolü var ve sen buna bir data list bağlamışsın. bu durumda sayfa her postback olduğunda(yenilendiğinde) datasource kontrolün veritabanına bağlanıp veriçeker ve datalistin databound eventinde dataliste bağlanır. Eğer sen linkbuttonun onclick event inde datasource una tekrar databind yapmasını söylüyorsan bu olay veritabanına 2 kez bağlanmaya neden olur çünkü datasource kontrol herzaman default sql sorgusuyla sayfa postback olduğunda mutlaka veritabanından veri çeker.

Tavsiyem: datasource kontrolünü kullanmak yerine veriyi kendin bir datatable a doldurup datalistine bağlaman bu konuda internetten kaynak bulabilirsin.



 
bir de benim anlamaıdğım. bir sorun daha var. linkbutunlara tıklayınca sürekli olarak sayfa kendini yenileyip sonra listeliyor. kendini yenilemeden listeleme yapma imkanı yok mu acaba.

asp.net sayfası yaşam döngüsüne göre sayfa herpost back olduğunda çeşitli durumlara göre eventler tetiklenir. bu eventler arasında Init PageLoad PageLoadComplete,Render,PreRender gibi yada kontrollerin kendine özel Onclick , OnSelectedIndexChange, gibi eventleri tetiklerin postback olay tüm pageeventlerini otomatik olarak tetikler (PageLoad,PageLoadComplete vs) LinkButtonun OnClick Eventi Sayfayı postback ettiğinden aynı şekilde tüm pageEventlerini tetikler ve çalıştırır.

Şimdi sorunun iki çözümü var
1.Eğer sayfanda psotback sırasında calıştırmak Istemediğin ksıımlar varsa oralara If(!IsPostBack) kontrolü koyarak postback değilse çalışmalarını sağlayabilirsin ancak bu sayfanın refresh olmasını engellemez
2. Ajax Update panel kullanman : UpdatePanel içindeki bölüm refresh edilir diğer bölümler olduğu gibi kalır. Ajax ile ilgili bilgi asp.net sitesinden edinebilirsin







Cant you see the writing on the wall?
"die young gonna die young"
So! Live for today
Tomorrow never comes..

Yazar
enginkdal


avatar

Kayıt: 09.01.2008
21.09.2008-01:48 #51409
aliolci yazdi
 

Otomatik bağladım derken sanırım sayfanda bir datasource kontrolü var ve sen buna bir data list bağlamışsın. bu durumda sayfa her postback olduğunda(yenilendiğinde) datasource kontrolün veritabanına bağlanıp veriçeker ve datalistin databound eventinde dataliste bağlanır. Eğer sen linkbuttonun onclick event inde datasource una tekrar databind yapmasını söylüyorsan bu olay veritabanına 2 kez bağlanmaya neden olur çünkü datasource kontrol herzaman default sql sorgusuyla sayfa postback olduğunda mutlaka veritabanından veri çeker.

Tavsiyem: datasource kontrolünü kullanmak yerine veriyi kendin bir datatable a doldurup datalistine bağlaman bu konuda internetten kaynak bulabilirsin.




DATAtable at derken ben zaten datasete atarak bağlıyorum

kodum şu şekilde

private void listele(string sorgum,DataList dtlist)
{

OleDbConnection co = new OleDbConnection(bag_str);
co.Open();
OleDbCommand ko = new OleDbCommand(sorgum, co);
ko.ExecuteNonQuery();
OleDbDataAdapter adp = new OleDbDataAdapter(ko);
DataSet da = new DataSet();
adp.Fill(da);
dtlist.DataSource = da;
dtlist.DataBind();
co.Close();
}

burada linkbutuna tıklayınca sorguyu ve hangi datalisti dolduracağımı gonderiyorum. ve verileri datasetin içine atıyroum. dataset ile datatable arasında da pek bir fark olduğunu sanmıyorum.
tabi datatableden kastın başka birşeyse o ayrı.
cevaplarınız için teşkeküerlerimi sunarım arkadaşlar.





B?ZLER PAZARLiK DEGiL MEZARLIK DOSTLARIYIZ.






Yazar
aliolci


avatar
en dipten taa derind
Kayıt: 19.01.2006
21.09.2008-13:17 #51411
enginkdal yazdi
 
aliolci yazdi
 

Otomatik bağladım derken sanırım sayfanda bir datasource kontrolü var ve sen buna bir data list bağlamışsın. bu durumda sayfa her postback olduğunda(yenilendiğinde) datasource kontrolün veritabanına bağlanıp veriçeker ve datalistin databound eventinde dataliste bağlanır. Eğer sen linkbuttonun onclick event inde datasource una tekrar databind yapmasını söylüyorsan bu olay veritabanına 2 kez bağlanmaya neden olur çünkü datasource kontrol herzaman default sql sorgusuyla sayfa postback olduğunda mutlaka veritabanından veri çeker.

Tavsiyem: datasource kontrolünü kullanmak yerine veriyi kendin bir datatable a doldurup datalistine bağlaman bu konuda internetten kaynak bulabilirsin.




DATAtable at derken ben zaten datasete atarak bağlıyorum

kodum şu şekilde

private void listele(string sorgum,DataList dtlist)
{

OleDbConnection co = new OleDbConnection(bag_str);
co.Open();
 
OleDbCommand ko = new OleDbCommand(sorgum, co);
ko.ExecuteNonQuery();
OleDbDataAdapter adp = new OleDbDataAdapter(ko);
DataSet da = new DataSet();
adp.Fill(da);

dtlist.DataSource = da;
dtlist.DataBind();
co.Close();
}

burada linkbutuna tıklayınca sorguyu ve hangi datalisti dolduracağımı gonderiyorum. ve verileri datasetin içine atıyroum. dataset ile datatable arasında da pek bir fark olduğunu sanmıyorum.
tabi datatableden kastın başka birşeyse o ayrı.
cevaplarınız için teşkeküerlerimi sunarım arkadaşlar.


kodunda
 
ko.ExecuteNonQuery();
i çalıştırmana gerek yok çünkü dataadapter in Fill fonksiyonu databaseden sorguyu ceker ve data table a doldurur sen yukarıdaki kodunda 2 kez database e aynı sorguyu gönderiyorsun
 
ko.ExecuteNonQuery();
fonksiyonu sorguyu calıştırıyor ancak sonucunuhiç bir yere bağlamıyor bu fonksyion ADO da daha cok insert delete update gibi sorgularda yani geri dönüş değeri onemsizsorgularda kullanılır






Cant you see the writing on the wall?
"die young gonna die young"
So! Live for today
Tomorrow never comes..

Yazar
enginkdal


avatar

Kayıt: 09.01.2008
21.09.2008-20:59 #51414
aliolci yazdi


kodunda
 
ko.ExecuteNonQuery();
i çalıştırmana gerek yok çünkü dataadapter in Fill fonksiyonu databaseden sorguyu ceker ve data table a doldurur sen yukarıdaki kodunda 2 kez database e aynı sorguyu gönderiyorsun
 
ko.ExecuteNonQuery();
fonksiyonu sorguyu calıştırıyor ancak sonucunuhiç bir yere bağlamıyor bu fonksyion ADO da daha cok insert delete update gibi sorgularda yani geri dönüş değeri onemsizsorgularda kullanılır
[/quote]

evet haklısın unutmuşum onu. iki sefer çalıştıyorum teşkekkür ettim sağol.





B?ZLER PAZARLiK DEGiL MEZARLIK DOSTLARIYIZ.






Yazar
offman


avatar
Kayseri
Kayıt: 20.01.2006
21.09.2008-22:52 #51415
Arkadaşlar gerektiği kadar anlatmışlar ama benimde eklemek istediğim bir kaç konu var. Bu yaz başına kadar DataTable benimde vazgeçilmezimdi ama yapı içerisinde genel manada bir çok şey
( Kullanmadığın şeyler olduğu için) DataTable yerine Database deki her tablo yu .Net tarafında bir class ile tasvir etmen gerektiğini dusunuyorum veriyide çekince List<tablo_adı> şeklinde çekersen IIS deki yükü kaldırmış olursun çünki diğer durumda gerçekden çok fazla veriyle IIS in kafasını karıştırıyorsun.
Bu noktadan sonra eklemek istediğim ise eğer sen bir listeleme sayfası yapıyorsan burada mutlaka ve mutlaka bir paging yapısı tasarlaman lazım yani eğer 100 200 tane veri grubu çekiyorsan pek bir şey fark etmediğini dusunebilirsin ama diyelim ki 1000 ve üzeri veri çekiyorsun o durumda explorer'ın donduğunu gorebilirsin :)

Özetleyecek olursak;
1:Bir projede Data Access Layer diye bir katman olacaksa mutlaka ve mutlaka Database i class mantığını kullanarak .Net'e geçirmen lazım.
2:Generics yapısını(List) yapısını bir incele gerçekden işin koptuğu nokta orası.
3:Listeleme sayfalarının olmazsa olmazı Paging mekanizmalarıdır...

Kolay gelsin.





331. KSD
*.NET DEVELOPER




Yazar
tarikkranda


avatar

Kayıt: 07.01.2006
26.03.2009-02:35 #58369
offman yazdi
 
Arkadaşlar gerektiği kadar anlatmışlar ama benimde eklemek istediğim bir kaç konu var. Bu yaz başına kadar DataTable benimde vazgeçilmezimdi ama yapı içerisinde genel manada bir çok şey
( Kullanmadığın şeyler olduğu için) DataTable yerine Database deki her tablo yu .Net tarafında bir class ile tasvir etmen gerektiğini dusunuyorum veriyide çekince List<tablo_adı> şeklinde çekersen IIS deki yükü kaldırmış olursun çünki diğer durumda gerçekden çok fazla veriyle IIS in kafasını karıştırıyorsun.
Bu noktadan sonra eklemek istediğim ise eğer sen bir listeleme sayfası yapıyorsan burada mutlaka ve mutlaka bir paging yapısı tasarlaman lazım yani eğer 100 200 tane veri grubu çekiyorsan pek bir şey fark etmediğini dusunebilirsin ama diyelim ki 1000 ve üzeri veri çekiyorsun o durumda explorer'ın donduğunu gorebilirsin :)

Özetleyecek olursak;
1:Bir projede Data Access Layer diye bir katman olacaksa mutlaka ve mutlaka Database i class mantığını kullanarak .Net'e geçirmen lazım.
2:Generics yapısını(List) yapısını bir incele gerçekden işin koptuğu nokta orası.
3:Listeleme sayfalarının olmazsa olmazı Paging mekanizmalarıdır...

Kolay gelsin.


Gökhan selam:)
Ben de şunları ekleyeyim o zaman:) Yazın herhalde ORM veya Domain Driven Design ile proje geliştiren bir yerlere takıldın:) Eminim faydalı olmuştur. ORM i çok sevmeyen birisi olarak şunları söyleyebilirim. Yeni ado.net ile ki artık eski, datatable çok daha hafif bir container. Ayrıca dönen her bir record için bir nesnenin instance ını yaratırsan her kayır için yaratacagın nesne bir yuk getirir sisteme:) IIS in kafası veri ile karışmaz:) Çünkü her iki durumda da gelen veri aynı, ister sınıfları bir listede tut, istersen datatable da:) zaten IIS veri ile ugrasmıyor, ugrasan aspnet worker process. Oda düz veriyi getiriyor, sen bunu ister table a koyarsın istersen sınıf listesine:)

Diger taraftan madem hızdan bahsediliyor, en onemli noktayı atlamıs herkes. O da caching. Cache ile yatıp, cache ile kalkması lazım her developer ın bir süre:) O Ali nin de bahsettigi hazır .net sqldatasource nesnesi belki cacheleme kullanıyordur ama cache expiration ı nasıl yönetiyordur bilemiyorum, hiç kullanmadım, kullanmam da muhtemelen:) Klasik MS demo kontrolleri:)

Veritabanı Indeksleri de inanılmaz önemli bu arada. Duzgun bir DB normalizasyonu ve indeksiniz yoksa, uygulama tarafında nitro tuşuna da bassanız, işe yaramaz, şanzımanıi dağıtırsınız:))





Del.icio.us
Digg
Facebook
Furl
Google
Blink
Simpy
Spurl
Y! MyWeb