|
|
ASP.NET QuickStart Príručka
Aplikačná štruktúra
Jeden webový server môže hostovať viacero ASP.NET webových aplikácii. Webové aplikácie sú
organizované do webových sídiel, kde je každé webové sídlo identifikované unikátnou kombináciou HostName a Port-u.
Každé webové sídlo môže obsahovať viacero ASP.NET webových aplikácii, s každou aplikáciou identifikovanou
unikátnym URL prefix-om, ktorý určuje kmeňový adresár aplikácie.
Napríklad jeden Microsoft Internet Information
Services (IIS) Web server s dvoma mapovanými IP adresami (jedna aliasovaná na "www.msn.com" a
ďalšia na "intranet") a troma logickými sídlami (http://intranet, http://www.msn.com,
http://www.msn.com port 81) môže vystaviť nasledujúcich šesť ASP.NET aplikácii.
| URL aplikácie |
Popis |
| http://intranet |
Aplikácia v koreňovom adresári sídla intranet. |
| http://www.msn.com |
Aplikácia v koreňovom adresári sídla www.msn.com. |
| http://www.msn.com:81 |
Aplikácia v koreňovom adresári sídla www.msn.com na porte 81. |
| http://intranet/training |
Aplikácia v adresári "Training" sídla intranet. |
| http://intranet/hr |
Aplikácia v adresári "HR" sídla intranet. |
| http://intranet/hr/compensation/ |
Aplikácia v adresári "Compensation" sídla intranet. |
Poznámka: URL pre aplikáciu Compensation spomenutej v tabuľke je zakorenená v rámci
aplikácie HR namespace-u URL (HR application URL namespace). Avšak z tejto URL hierarchie nevyplýva, že Compensation aplikácia je obsiahnutá alebo včlenená v rámci aplikácie HR. Každá aplikácia si radšej udržuje nezávislé nastavenia.
Každá ASP.NET Framework aplikácia vystavená v rámci URL namespace je založená na adresári nachádzajúceho sa buď na lokálnom alebo vzdialenom počítači. Adresáre aplikácie nie je nutné centrálne umiestniť v rámci súvislej časti súborového systému; môžu byť roztrúsené všade po disku. Napríklad ASP.NET aplikácie spomenuté predtým sa môžu nachádzať v rôznych adresároch uvedených v nasledujúcej tabuľke.
| URL aplikácie |
Fyzická cesta |
| http://intranet |
c:\inetpub\wwwroot |
| http://www.msn.com |
c:\inetpub\msnroot |
| http://www.msn.com:81 |
d:\msnroot81 |
| http://intranet/training |
d:\serverapps\trainingapp |
| http://intranet/hr |
\\hrweb\sillystuff\reviews |
| http://intranet/hr/compensation/ |
c:\inetpub\wwwroot\compensation |
Rozdelenie tried do assemlies
Assemblies sú jednotkami nasadenia v CLR (common language runtime). Vývojári píšuci
.NET triedy použitím Visual Studio .NET verzie 7.0 produkujú assembly s každým
Visual Studio projektom, ktorý skompilujú. Hoci je možné mať assembly
spojené viacerými prenosnými spustiteľnými (PE) súbormi (niekoľko modulov DLL),
Visual Studio .NET, štandardne,
skomopiluje celý kód assembly do jednej DLL (jeden projekt vo Visual Studio .NET = jedna .NET
Framework assembly = 1 fyzická DLL).
Assembly je možné na počítači nasadiť umiestnením do assembly cache.
Assembly cache môže byť buď globálna pre počítač alebo lokálna pre príslušnú
aplikáciu. Iba kód určený na zdieľanie medzi viacerými
aplikáciami by mal byť umiestnený v global system assembly cache (GAC). Kód špecifický
pre príslušnú aplikáciu, tak ako vo väčšine prípadov,
by mal byť umiestnený v lokálnej aplikačnej assembly cache.
Výhodou
umiestnenia assembly v rámci lokálnej aplikačnej assembly cache je, že k nemu môže pristupovať iba
kód v rámci tejto aplikácie. To je výhodné pre nasadenie aplikácií na zdieľanom hostingu.
Taktiež to dovoľuje bezproblémový beh aplikácie súčasne s inou verziou aplikácie na tom istom počítači, pretože triedy sú súkromné pre každú inštanciu danej aplikácie.
Assembly môže byť umiestená do lokálnej aplikačnej assembly cachce jednoduchým kopírovaním (XCOPY), alebo umiestením príslušných súborov do adresára na FTP, ktorý bol označený ako
"assembly cache location" pre túto príslušnú aplikáciu. Po skopírovaní príslušných súborov už nie je potrebné spustenie žiadnych registračných nástrojov a nie je potrebný reštart počítača.
Toto eliminuje niektoré z problémov s umiestňovaním COM komponentov v rámci ASP aplikácii (administrátor sa musí prihlásiť na webový server a spustiť Regsvr32.exe).
Štandardne je ASP.NET aplikácia automaticky nakonfigurovaná pre používanie podadresára \bin,
umiesteného priamo v kmeňovom adresári aplikácie, ako jej lokálnej assembly cache. Adresár \bin
je taktiež nakonfigurovaný odmietnuť každý prístup prehliadača, takže vzdialený užívateľ si nemôže stiahnuť a ukradnúť kód. Nasledujúci príklad ukazuje náčrt možného adresárového stromu pre ASP.NET aplikáciu, kde je adresár \bin umiestený priamo v kmeňovom adresári aplikácie.
C:\inetpub\wwwroot
Web.cfg
Default.aspx
\bin <= Application assembly cache directory
MyPages.dll
MyBizLogic.dll
\order
SubmitOrder.aspx
OrderFailed.aspx
\img
HappyFace.gif
Štart ASP.NET aplikácie
ASP.NET Framework aplikácie sú konštruované až vtedy, keď ich URL požaduje klient po prvý raz.
Každá ASP.NET Framework aplikácia je vypustená v rámci jedinečnej aplikačnej domény
(AppDomain) -- nová vlastnosť CLR (common language runtime), ktorá povoľuje hostovať procesy a poskytovať rozsiahly kód, bezpečnosť a izoláciu nastavení počas behu programu.
ASP.NET je zodpovedné za manuálne vytvorenie aplikačnej domény v prípade, že je spustená
nová aplikácia. Ako časť toho procesu poskytuje ASP.NET pre použite konfiguračné nastavenia pre CLR (common language runtime).
Tieto nastavenia obsahujú:
- Cesty do adresárov vytvárajúce lokálnu assembly cache. (Poznámka: Architektúra izolácie .NET Framework aplikačných domien povoľuje každej aplikácii udržovať jej vlastnú lokálnu assembly cache.)
- Obmedzenia bezpečnosti aplikácie (k čomu môže aplikácia v systéme pristupovať).
Pretože ASP.NET nemá počas kompilovania informácie o žiadnych aplikáciach, nemôže používať statické referencie pre analyzovanie a odvolanie sa na kód aplikácie.
Namiesto toho musí ASP.NET používať uznesenie dynamických tried a assembly pre vytvorenie prechodu
z ASP.NET runtime do kódu aplikácie.
Konfigurácia ASP.NET a stránky Vám povoľujú dynamicky odvolanie sa na cieľovú skompilovanú triedu .NET Frameworku špecifikovaním kombinácie názvov assembly a triedy.
Formát reťazca pre toto spojenie vyzerá následovne: classname, assemblyname. CLR (common language runtime) môže potom túto jednoduchú referenciu reťazca použiť na analyzovanie a načítanie vhodnej triedy.
Nahradzovanie kódu
.NET Framework assemblies sú zvyčajne skompilované do "Windows DLL-based
PE" formátu. Keď CLR (common language runtime) analyzuje triedu, ktorá je implementovaná v rámci assembly tohoto typu, zavolá na súbor Windows API LoadLibrary (ktorý uzamkne
jeho prístup na disku), a potom zmapuje vhodné údaje do pamäte pre spustenie behu programu. Po načítaní ostane DLL súbor uzamknutý na disku, kým nebude je aplikačná doména odkazujúca sa na ňu
zničená.
Napriek tomu, že ASP.NET nemôže zabrániť CLR (common language runtime) uzamknúť načítané assembly na disku, môže Vás podporiť tým, že zaistí, že fyzické DLL v privátnej assembly cache webovej aplikácie nebudú vlastne načítané. Namiesto toho sú pre použite vytvorené kópie DLL assemblies.
Tieto tieňové assemblies -- nie originálne súbory -- sú potom uzamknuté a načítané.
Pretože originálne súbory assembly vždy ostanú neuzamknuté, môžete ich vymazať, nahradiť, alebo ich premenovať bez reštartu webového servera alebo bez použitia registračného nástroja. FTP a podobné metódy sú postačujúce. ASP.NET udržuje aktívny zoznam všetkých načítaných assemblies v rámci patričnej aplikačnej domény aplikácie a využíva kód monitorujúci zmenu súboru pre sledovanie aktualizovania originálnych súborov.
|
|