Friday, September 22, 2006

ADO.NET 2.0 TableAdapter

Kad softveraš prelazi iz VS2003/.Net1.1 u VS2005/.Net2.0 okruženje lako odođe u iskušenje da jednostavno konveruje svoje aplikacije koje barataju bazama podataka. Objektni model ADO.Net 2.0 nije mnogo drugačiji od onog u 1.1 verziji. I dalje osnovu čini tandem Dataset i DataAdapter klasa. Međutim u VS2005 okruženju glavnu ulogu preuzima TableAdapter. TableAdapter-i nisu deo framework-a, već se radi o klasama koje generiše VS dizajner (najčešće novi Data Source Confiration Wizard), koje za programera enkapsuliraju rad sa DataAdapter i Connection objektima i koje su intenzivno podržane od vizuelnih alata u VS2005. Velika je stvar što TableAdapter podržava proizvoljan broj select upita (za razliku od DataAdaptera koji podržava jedan select upit) pri čemu wizard za svaki upit generiše metode koji pune/kreiraju Dataset za programera. Na primer, programer sada koristi jedan isti TableAdapter MyTableAdapter da bi dobio spisak artikala, artikle koji pripadaju jednoj grupi ili pojednični artikal ili tako što poziva metode MyTableAdapter.GetProducts(), MyTableAdapter.GetProductsByCategory(string category), MyTableAdapter.GetProductsById(int id).
Iz mog dosadašnjeg iskustva u radu sa TableAdapter-ima mislim da je pri prelasku na VS2005 bolje od početka napisati deo aplikacije koji komunicira sa bazama podataka i iskoristi prednosti koje nudi VS2005 (pored TableAdapter-a tu su i Data Sources i druge džidža midže) nego prosto konvertovati VS2003 projekat.

Thursday, September 21, 2006

C# - OR i AND operatori

C# ima dva OR logička operatora: I i II . Razlika je što se kod II drugi operand izarčunava samo u slučaju potrebe tj. ako je prvi false. Vrlo zgodno za testove tipa:

x==null II mySting.Contains(x)

Za x=null gornji izraz bi pao korišćenjem operatora I ali sasvim lepo radi sa II. Ovo je zbunjujuće za C++ programere kod kojh je I bitwise a II logičko ili. Slično važi i za AND operatore, & i &&

Neke ASP.Net 2.0 serverske kontrole su teške kao tuč

Pričam o broju bajtova koje dodaju web stranici kroz klijentske skripte na kojima se zasnivaju. I dok su za intranet i širokopojasni Internet ASP.Net 2.0 kontrole zaista ogroman korak napred praktično su neupotrebljeve za upotrebu preko dial-up ili čak i ISDN linkova. Tipično - strana koja sadrži (recimo) ASP.Net 2.0 Login kontrolu učitavaće se 5-6 sekundi na 64K linku i samo sekundu-dve ako programer sam ubaci na stranu text box-ove za username i password, button za potvrdu i kod u pozadini koji korišćenjem Membership klase radi ono što radi i Login kontrola. A to je za korisnika ogromna razlika koja može da bude presudna u odluci da li će neki web site uopšte da koristi. Rezon Microsoft-a je da se jscript kod dodaje dodaje u dll fazonu, tj. ako ti treba neka ASP.Net kontrola automatski se uz stranicu dodaje jscript biblioteka sa još mnogo funkcija koje su grupisane zajedno sa onom koja ti treba. Zapravo, ne moraš da dodaš neku novu ASP.Net 2.0 kontrolu da bi neprijatno nabildovao svoju stranicu. Dovoljno je, na primer, da staviš da je neki TextBox AutoPostBack i već si dodao jedno 15tak kila na svoju stranicu. To debljanje se teško primećuje dok radiš razvoj u lokalu, u intranet okruženju. Čak (perfidno!) ni veličina strance se direktno ne poveća, zato što se jscript dodaje kroz dinamički generisane eksterne fajlove na koje ASP.Net u glavnu stranu samo ubaci link. Zaključak: ako planiraš da aplikacija radi i preko sporijih linkova, izbegavaj korišćenje naprednih ASP.Net 2.0 kontrola na stranicama koje se najčišće koriste.

GridView ASP.Net 2.0 kontrola i novi slogovi

Toliko toga odrade čarobnjaci u VS2005... Ali da bi dodao novi slog iz GridView kontrole treba dobro da riljaš. Ima na netu raznih rešenja: http://www.codeproject.com/aspnet/addupdate.asp predlaže modifikaciju select komande u DataSource tako da bude union jednog praznog sloga i polaznog select upita i onda se (dodatnim mrčkanjem) taj prazan slog koristi kao podloga za novi. Ne deluje baš elegantno. Ja još od 1.1 verzije koristim footer kao prostor za kontrole u koje se unose podaci za novi slog. Prednost u odnosu na prvo rešenje je što je "prazan slog" (kod mene u footeru) vidljiv samo ako korisnik klikne "add new" dugme, a ne stalno. Mada ima i rešenja koja proveravaju event koji formatira item pa ne prikažu taj virtuelni slog. Vidim da nešto slično koristi i http://aspnet.4guysfromrolla.com/articles/021203-1.aspx. Ipak, ni ovo rešenje se baš ne ubija od elegnacije pošto moraš ručno da odradiš mapiranje parametara iz footera u insert parametre.

Google servisi

Čitam članak o Google-u u engleskom PCPlus časopisu, i zaista sam iznenađen brojem i kvalitetom Google servisa. Bogami, drmaju Microsoft dominaciju u IT svetu i to na pravi način - otkrivajući prvi nove terene na koje se IT primena seli.