Chapter XIII. Monitoring, Deploying, and Caching Applications (Alkalmazás felügyelet, telepítés és gyorsítótárazás)
Elnézését kérek, de betegszabadság miatt nem üzemelt a szolgáltatás! Nem mintha már sokkal jobban lennék, de a blog nem várhat
Szerintem az Application Deploymenthez szervesen hozzá tartozik a fordítás(compilation) is. Az egyik legfontosabb újdonság a Visual Studio 05-ben, hogy már ő is az MSBuild-ot használja. Ennek is köszönhető a VB6-ból visszaköszönő Edit and Continue modell, ami annyit takar, hogy ha futtatás közben szerkesztjük valamely oldalunkat, nincs szükségünk újrafordításra, egyszerűen csak frissíteni kell az oldalt és máris az új verziót érhetjük el. Ehhez hozzájárul az is, hogy egy Temporary ASP.NET mappába fordulnak az oldalak.
A precompilation-nél (előfordításnál) van egy olyan lehetőségünk is,-amelyet a könyv nem részletez-, hogy az aspx fájlokból aspx.compiled fájlokat készítsünk. Ez azért jó, mert ilyenkor minden előre lefordul, így a forráskódunkat nem módosíthatják a szerveren. Bár van arra is lehetőségünk, hogy megőrizzük a frissíthetőséget, vagyis csak a kódjaink forduljanak le, de az aspx fájlok, a témák, mesteroldalak, stb-k nem!
A Monitorozásnál volt szó a Performance Counterekről, hogy ezekkel milyen jól lehet teljesítményt meg mi egymást mérni. Igazándiból annyi mérhető dolog áll rendelkezésünkre, hogy akármit ki lehet belőlük hozni. Az ASP.NET objektumcsoportokon kívül a .NET CLR csoportokban is nagyon sok hasznos és még több használhatatlan mérő áll rendelkezésünkre.
Ezeket persze felhasználhatjuk akár saját alkalmazásainkban is! Amíg nem volt ASP.NET–ben Membership kezelés, addig nekünk kellett megírni azt, hogy hányan is figyelik jelenleg az oldalunkat. Erre persze 1001 megoldás van, de most egy Performance Counteres példát szeretnék veletek megosztani:
Húzz a webform-ra egy performancecounter-t és állítsuk be a következőket:
performanceCounter1.CategoryName = "ASP.NET Applications";
performanceCounter1.CounterName = "Sessions Active";
performanceCounter1.InstanceName = "__Total__";
Ezek után a performanceCounter1.RawValue tulajdonságán keresztül tudjuk elérni az aktuális látogatok számát. Minden usert csak egyszer fog számolni, bár hányszor is frissíti az oldalt, hiszen mindig csak 1 munkamenet-állapot fog hozzátartozni. Persze, ha egyszerre több browser-rel böngészi az oldalunkat a kliens, akkor a szám nőni fog. Ilyenkor esetleg érdemes lehet kódból megvizsgálni azt, hogy a kérések egy ip címről érkeznek-e (Request.UserHostAdress).
A alkalmazás felügyeletnél sajnos a könyvből kimaradt az, hogy hogyan is lehet naplózni SQL Server-t használva, ezért íme egy oldal, ahol ez le van írva:
http://weblogs.asp.net/drnetjes/archive/2004/12/09/279101.aspx
Illetve itt egy elég szép gyűjtemény a HealMonitoring-gal kapcsolatos témákról:
http://msdn2.microsoft.com/en-us/library/ms178701.aspx
Az alkalmazás cachelést szerintem nem a végére kellett volna hagyni a könyvnek, inkább a közepe fele kellett volna megejteni.
Egy érdekessége az ASP.NET cachelésnek, hogy akár teljes user controlokat is képesek lehetünk gyorsító tárazni, ugyanúgy, mint az „sima” Output Caching-nél. Ismét a trace használatát javaslom, ennek a mechanizmus a megértéséhez.
Visszatérve az SQL szerver-hez, szerintem hasznos az SqlDependecy (adatbázis függőség) használata, amellyel utólag gyorsíthatunk alkalmazásunkon. Triggerek (kioldók) segítségével történik az adatok konzisztenciájának figyelése. Weben igazán használható leírást nem találtam, amiben minden benne lett volna hozzá, így majd a devportal-ra egy tutorialt fogok ki tenni erről valamikor.