BLOGas.lt
Sukurk savo BLOGą Kitas atsitiktinis BLOGas

Puslapių pasikrovimo laiko pagerinimas

Parašė Sergejus | 2007-09-28 10:10

Naturalus užsakovo noras - puslapiai turi krautis greitai. Šiandien aš ne šnekėsiu kas yra “greitai”, bet trumpai paminėsiu kaip per pusvalandį dvigubai sumažinti puslapių pasikrovimo laiką.

HTTP suspaudimas žinomas jau daugelį metų, bet tik pradedant nuo Internet Information Services (IIS) 6.0 jis tapo aplikacijos serverio dalimi. HTTP suspaudimo užduotis: pagerinti puslapio pasikrovimo laiką ir sumažinti perduodamų duomenų kiekį suspaudžiant vartotojui skirtus failus (aspx, css, js, html). Kliento pusėje naršyklė moka tokį puslapį išspausti ir atvaizduoti jį vartotojui.

Donny Mack savo straipsnyje nuosekliai aprašo visus žingsnius, reikalingus IIS 6.0 HTTP suspaudimui įjungti. Nuo savęs tik galiu pridėti: prie statinių failų išplėtimų pridėkite CSS ir JS, kad papildomai vyktų CSS ir JavaScript failų suspaudimas.

Rodyk draugams

Priėjimas prie duomenų naudojant SubSonic

Parašė Sergejus | 2007-09-26 21:44

Apart tiesioginių programavimo darbų, kurį laiką ieškau naujų ir įdomių architektūrinių sprendimų ateinančiam projektui. Kaip vieną iš galimų priėjimo prie duomenų (DAL) karkasų variantų aš nagrinėju SubSonic karkasą. Kas nežino, tai karkasas, leidžiantis sugeneruoti verslo objetus, objektų kontrolerius ir išsaugotų procedūrų kvietimo metodus. SubSonic'ą sudaro dvi pagrindinės dalys: kodo generatorius bei užklausų kalba. Užklausų kalba yra panaši į LINQ kalbą, bet vietoje raktažodžių yra naudojamas nuoseklus metodų iškvietimas. Panašiai kaip ir LINQ su SQL technologijoje, SubSonic generuoja SQL sakinius vykdymo metu, kas ženkliai supaprastina darbą su duomenimis. Apie Subsonic egzistavimą aš žinojau ir anksčiau, bet gyvai pasinaudoti teko tik šią savaitę. Įspūdis vienas - oho! Jokių kodo pavyzdžių dar nepateiksiu, palauksiu kol praeis euforija ir prasidės sunkumai…

Rodyk draugams

Gijų derinimas Visual Studio 2008

Parašė Sergejus | 2007-09-24 23:32

Daugiagijų aplikacijų programavimas visada nebuvo lengvas uždavinys. Dar sunkiau sekasi derinti gijas. Visual Studio 2008 siūlo naujas gijų vykdymo vizualizavimo galimybes.

Pradžiai apibrėšiu darbinę klasę Gijos…

…ir 10 kartų iškviesiu jos metodą SukurtiGija

Norint vizualiai matyti gijų vykdymo vietą, reikia įrankių juostoje pažymėti punktą “Show Threads in Source” (prieinamas tik derinimo metu):

Dabar derinimo metu kartas nuo karto galima pamatyti kitą, tą patį kodą vykdančią, giją (pažymėta pilkai):

Galimas ir kitas variantas - papilkintas riestinis skliaustas, kas reiškia kita gija pradeda arba baigia savo vykdymą:

Taigi tiek glaustai apie naują gijų vykdymo vizualizavimo galimybę, kuri gali padėti geriau suprasti gijų sąveiką bei vykdymo eilėškumą.

Rodyk draugams

Microsoft Enterprise Library validavimo blokas (2 dalis)

Parašė Sergejus | 2007-09-21 23:59

Praeitą kartą aš pradėjau nagrinėti Enterprise Library validavimo bloką, o šiandien, kaip ir žadėjau, parodysiu kaip tuos pačius validavimo ribojimus ir sąlygas galima apibrėžti ne tiesiogiai klasėje, bet app.config (web.config) failuose.

Pirma reikia sukurti tuščią app.config (web.config) failą ir ant jo paspausti dešiniu klavišu:

Enterprise Library patogiai integruojasi į Visual Studio aplinką, todėl vietoje rankinio failų konfigūravimo, galima pasinaudoti siūlomu Enterprise Library konfigūravimo įrankiu.

Dabar prie konfigūracijos reikia pridėti validavimo bloko sekciją

Tuščiame validavimo bloke nurodome objekto tipą (tipus), kuriam norime apibrėžti validavimo sąlygas

Pasirinktam tipui sukuriame tuščią apribojimų rinkinį ir nurodome visas savybes, kurioms apibrėšime validavimo sąlygas

Dabar belieka kiekvienai savybei nurodyti norimą validatorių (validatorius)

Tinkamai sukonfigūravus visas validavimo taisykles, app.config (web.config) failas klasei Knyga atrodys tokiu būdu:

Kada verta konfigūruoti validavimo sąlygas aprašytu metodu? Realiai egzistuoja dvi situacijos:

  • reikalavimai objektų savybių ribojimams keičiasi gana dažnai, todėl apsimoka viską turėti vienoje vietoje
  • neturime priėjimo prie klasės, kuriai norime aprašyti validavimo taisykles, kodo.

Minėtas grafinio konfigūravimo principas yra vienodas visiems Enterprise Library aplikacijų blokams, todėl ši patirtis bus naudojama ir su kitais blokais. Tikiuosi straipsnis buvo jums naudingas ir kaip visada laukiu atsiliepimų.

Rodyk draugams

Microsoft Enterprise Library validavimo blokas

Parašė Sergejus | 2007-09-19 22:32

Paskutinius keletą vakarų aš praleidau nagrinėdamas Microsoft Enterprise Library 3.1 validavimo bloką. Validamo blokas leidžia apibrėžti objektų savybių validavimo sąlygas, taip užtikrinant jų korektiškumą. Kita validavimo bloko paskirtis - atskirti validavimo sąlygų aprašymą nuo pačio validavimo proceso.

Norint pradėti naudoti validavimo bloką, pirma prie projekto reikia prijungti dvi Enterprise Library bibliotekas: Enterprise Library Shared Library ir Enterprise Library Application Block …

…bei įterpti tokį using sakinį:

Kaip pavyzdį, aš naudosiu klasę Knyga su savybėmis Pavadinimas ir ISBN:

Tarkime, iš duomenų bazės ateina tokie apribojimai laukui Pavadinimas: jis negali būti NULL bei jo maksimalus ilgis negali viršyti 256 simbolių. Pasinaudojant validavimo bloko validatoriais, šiuos apribojimus galima aprašyti taip:

Apribojimas laukui ISBN ateina ne iš duomenų bazės, bet iš dalykinės srities. ISBN numeriui patikrinti galima pasinaudoti reguliariųjų išraiškų validatoriumi:

Tokio objekto validavimas galėtų atrodyti taip:

Kaip matyti, Enterprise Library validavimo blokas leidžia atskirti objektų savybių validavimo sąlygas nuo tiesioginio objektų validavimo, kas padaro šį bloką vertingu daugelyje aplikacijų. Artimiausiu metu aš parodysiu kaip tuos pačius apribojimus galima apibrėžti ne pačioje klasėje, bet web.config (app.config) failuose, taip dar labiau padidinant lankstumą.

Rodyk draugams

Patobulintas Visual Studio 2008 web dizaineris

Parašė Sergejus | 2007-09-15 20:17

Apart ankstesniuose mano straipsniuose minėtų Visual Studio 2008 patobulinimų, egzistuoja keletas svarbių web dizainerio patobulinimų. Dalį tų patobulinimų ir norėčiau šiandien aptarti.

Pirmiausia kas krenta į akis atidarius ASPX langą - išskyrus gerai pažįstamų kodo ir vaizdo režimų, atsirado “naujas” mišrus (split) režimas:

Mišrus režimas leidžia vienu metu tiek redaguoti kodą, tiek vaizdžiai matyti pakeitimus. Ši galimybė nuo senų laikų egzistavo FrontPage programoje, o dabar ji yra adaptuota ir Visual Studio 2008. Patogu ir tai, kad plačiaekranių (widescreen) monitorių savininkai gali perjungti mišrų horizontalų atvaizdavimą į vertikalų. Tam užtenka nueiti į ToolsOptionsHTML Designer ir pasirinkti punktą “Split views vertically”.

Taip pat maloniai nustebino perėjimo nuo kodo režimo prie atvaizdavimo režimo greitis. Anksčiau sudėtingesnio puslapio atvaizdavimas užtrukdavo iki 5-10 sekundžių, dabar užtenka vos 1-2 sekundžių.

Kiti patobulinimai yra susiję su CSS. Pavyzdžiui atskirame CSS faile turime tokį kodą:

Naujo stilių valdymo lango dėka galima vaizdžiai matyti visus prieinamus bei naudojamus CSS stilius. Žemiau pateiktame pavyzdyje matyti, kad šalia stiliaus pavadinimo gali būti mėlynos, žalios arba raudonos spalvos apskritimai. Mėlyna spalva nurodo stilių susietą su elementu, žalia - su CSS klase, o raudona - su atributu id. Stiliai kurie yra naudojami dokumente papildomai turi pilką apskritimą.

Patogu ir tai, kad dabar visos CSS klasės yra prieinamos tiesiai iš intellisense:

Kitas naujas stilių pritaikymo langas leidžia ne tik pažymėtam elementui pritaikyti nurodytą stilių, bet ir pasižiūrėti visus jam taikomus stilius (tiek tiesiogiai apibrėžtus style atribute, tiek apibrėžtus class atribute, tiek paveldėtus):

Egzistuoja ir dar vienas patobulintas CSS nustatymų langas, bet apie jį aš rašysiu artimiausiu metu. Šiam kartui tiek, laukiu jūsų komentarų bei pasiūlymų.

Rodyk draugams

Nauji C# 3.0 daliniai (partial) metodai

Parašė Sergejus | 2007-09-13 21:39

Paskutiniu metu kodo generavimas tampa vis populeresnis, kas gerai matosi aprašant priėjimo prie duomenų sluoksnį (DAL), kada pagal lentelių struktūrą generuojamos esybės. .NET Framework 2.0 pirmą kartą atsirado dalinės (partial) klasės. Jų dėka tapo įmanoma skaidyti klasės aprašą į kelis failus, kuo iš karto pasinaudojo kodo generavimo įrankiai. Pagrindinė dalinių klasių paskirtis - atskirti sugeneruotą kodą nuo vartotojo rašyto kodo. .NET Framework 3.5 padarė dar vieną žingsnį į priekį ir, pradedant nuo Visual Studio 2008 Beta 2, siūlo dalinius metodus. Daliniai metodai pozicionuojami kaip lengvesni ir greitesni įvykių analogai. Tam, kad vaizdžiau paaiškinti jų paskirtį aš pateiksiu du pavyzdžius: tariamai sugeneruotas dalines klases Darbotojas ir Darbotojas2008.

Kaip matyti, čia aprašytos dvi įvykių doroklės (event handlers), leidžiančios apdoroti darbovietės pasikeitimą. Turint tokią sugeneruotą klasę, kitame faile mes galime atlikti papildomus veiksmus prieš pasikeičiant darbovietei:

Turint net tokį paprastą pavyzdį matyti, kad gana dažnai tik su keliais įvykiais yra susieti papildomi veiksmai, kiti yra tiesiog nenaudojami. Būtent tokioms situacijoms ir yra skirti daliniai metodai. Žemiau yra pateikta dalinė klasė Darbotojas2008, kuri naudoja dalinius metodus:

Kaip matyti: a) daliniams metodams aprašyti naudojamas raktažodis partial ir b) mano atveju daliniai metodai neturi kūno. Norint aprašyti papildomą veiksmą prieš pasikeičiant darbovietei, užtenka kitame faile tiesiog realizuoti dalinį metodą DarbovieteChanging():

Daugeliui skaitytojų gali kilti klausimas: koks skirtumas tarp nenaudojamų įvykių ir nerealizuotų dalinių metodų? Jeigu dalinis metodas nėra realizuotas, tai kompiliavimo metu jis yra praleidžiamas, taip nepaliekant nenaudojamo kodo, kas ypač aktualu sugeneruotam kodui.

Daliniai metodai turi keletą apribojimų:

  • gali būti aprašomi tik dalinėse klasėse
  • negali grąžinti jokių reikšmių (void)
  • yra privatūs

Apibendrinant, daliniai metodai yra gana specifinė .NET 3.5 galimybė, kuri bus ypač naudinga tandeme su kodo generavimo įrankiais.

Tiek šiam kartui, tikiuosi straipsnis jums patiko ir laukiu jūsų atsiliepimų!

Rodyk draugams

Egzaminas 70-529

Parašė Sergejus | 2007-09-10 22:40

Šiandien išsilaikiau Microsoft egzaminą 70-529: Distributed Application Development. Beliko vienas egzaminas iki Professional Developer: Enterprise Applications Developer. Valio!

Rodyk draugams

Nauja Visual Studio 2008 daugiaplatformiškumo galimybė

Parašė Sergejus | 2007-09-08 21:19

Man, kaip ir daugeliui .NET programuotojų, laikas nuo laiko tenka dirbti su aplikacijomis, skirtomis senesnioms .NET Framework versijoms. Kadangi Visual Studio moka dirbti tik su jai skirta .NET Framework versija, reikia turėti po vieną Visual Studio versiją kiekvienai .NET Framework versijai. Laikai pasikeitė, Visual Studio 2008 siūlo naują daugiaplatformiškumo (multi-targeting) galimybę. Jos dėka nadojant Visual Studio 2008 galima kurti .NET Framework 2.0, 3.0 ir 3.5 aplikacijas.

Kuriant naują projektą, dabar galima pasirinkti ir norimą platformą:

Pakeitus platformą į .NET Framework 2.0, naujo projekto lange liks tik tai .NET versijai skirti projektai:

Svarbu ir tai, kad .NET Framework versiją galima keisti egzistuojantiems projektams. Tam užtenka užeiti į aplikacijos nustatymus ir pasirinkti norimą .NET Framework versiją.

Pagal pasirinktą .NET Framework versiją, Visual Studio 2008 įrankių juostoje rodys tik tai .NET versijai prieinamus komponentus. Žemiau pavaizduotos įrankių juostos su komponentais, skirtais operuoti duomenimis esant pasirinktai .NET Framework 3.5 ir 2.0 versijoms.

   
.NET Framework 3.5 .NET Framework 2.0

Panaši situacija yra ir su nuorodomis į bibliotekas. Pridedant nuorodas, pasirinktai .NET Framework versijai neprieinamos bibliotekos yra papilkintos:

Apibendrinant, galima tvirtai pasakyti, kad Visual Studio 2008 daugiaplatformiškumo galimybė yra tikrai svarbus žingsnis į priekį. Jos (galimybės) dėka, jau šiandien galima kurti .NET Framework 2.0 aplikacijas naudojant Visual Studio 2008. Gali kilti klausimas: kam to reikia? Užtenka prisiminti pagerintą Javascript derinimą, patobulintą CSS stilių valdymą, atnaujintą web-dizainerį ir daugelį kitų dalykų, ir atsakymas taps aiškus.

Rodyk draugams

Išleistas Silverlight 1.0

Parašė Sergejus | 2007-09-05 19:55

Šiandien oficialiai išleista pirmoji Silverlight versija.

Silverlight - tai nepriklausantis nuo platformos ir naršyklės įskiepis, leidžiantis web-programuotojams ir dizaineriams kurti šiuolaikines dinamines web-aplikacijas .NET aplinkoje (iš dalies technologija panašį į Flash, bet turi žymiai daugiau galimybių).

Šiuo metu Silverlight veikia Windows ir Mac operacijų sistemose. Be to, šiandien pranešta ir apie bendradarbiavimą su Novell, leisianti Silverlight vykdymą Linux operacijų sistemose paremtą Moonlight projektu. Laukiame Silverlight 1.1 beta versijos.

Rodyk draugams