HowTo – Guida ASP.NET (Parte 12)


PARTE 4 – CAPITOLO 12 – SVILUPPO DI UN SITO

Sviluppare contenuti riusabili è certamente una buona metodologia di lavoro in quanto permette di velocizzare la programmazione e di settorializzare ed isolare eventuali errori di codice e/o design.
Lo strumento più semplice per creare porzioni di pagina riutilizzabili è probabilmente lo User Control. Gli User Control (file caratterizzati dall’estensione ascx) sono piccole sezioni di pagina che possono includere pezzi di codice statico HTML e controlli lato web-server. Il vantaggio, come già detto, è che una volta creato può essere utilizzato in più pagine.
Le differenze tra una UC e una pagina sono che la prima inizia con la direttiva Control (e non Page) e che non può essere richiamata direttamente da un Client ma sono incluse in altre pagine.
Una UC è in grado di fornire un Partial Caching, ovvero una copia cachata dei propri dati. Per dichiarare un Partial Caching bisogna aggiungere la stringa [PartialCaching(time)] prima della classe che si vuole memorizzare.
Gli UC vanno registrati nelle pagine che li usano con
Le comunicazioni tra pagine e UC possono essere fatte con metodi e proprietà pubblici oppure utilizzando gli eventi e i delegati:
Nella pagina padre faccio l’override del metodo OnInit() con protected override void OnInit(EventArgs e) { base.OnInit(e); ManageUser.Back += new EventHandler(UCManage_Back); } in cui aggancio l’evento. Poi nella pagina madre definisco la funzione UCManage_Back. Nello UC definisco try { Back(sender, e); } catch (Exception ex) { // } sempre nello UC definisco public event System.EventHandler Back;
Se invece voglio usare I delegate per passare valori, nello User Control (classe C1 e id ID1) dichiaro public event OnButtonClick btnHandler; protected void btnTest_Click(object sender, EventArgs e) { if (btnHandler != null) btnHandler(“hey”); } nella pagina invece ID1.btnHandler += new C1.OnButtonClick(WebUserControl1_btnHandler); void WebUserControl1_btnHandler(string strValue) { lbl.Text = strValue; }
I controlli costituenti di uno User Control sono accessibili solo dallo stesso. Affinché siano visibili e/o modificabili dall’esterno occorre implementare i relativi metodi pubblici.
Un altro controllo che può venire in aiuto dello sviluppatore è il MultiView: con il MultiView Control è possibile racchiudere in una sola pagina tutti i passaggi che generalmente vengono effettuati su pagine separate (Stepped Page).
Con WizardControl è possibile creare MultiView che mostrino visualmente tutti i passi con la possibilità di scegliere il passo desiderato.
Con altri particolari controlli (che vanno ben oltre gli scopi di questa mini guida) È possibile anche generare sitemap e visualizzazioni con TreeMap e Menu-Style.
Una volta completata l’applicazione web è necessario pubblicarla affinché sia accessibile dagli utenti. Occorre quindi installare su una macchina collegata ad Internet/Intranet mediante un IP fisso un Web Server capace di gestire una applicazione ASP.NET. La scelta più naturale cade ovviamente su IIS di Microsoft, già integrato in tutte le più recenti versioni di Windows (anche se nelle edizioni Client va abilitato manualmente).
Internet Information System è un programma sviluppato da Microsoft per rendere accessibile in rete (sotto una virtual directory) una cartella fisicamente presente sull’hard disk del Server. Il WWW Publishing Service è responsabile di gestire il traffico ricevuto su porte particolari (tipicamente 80 e 443).
A partire dalla sesta versione (distribuita con Windows Server 2003 e consistente in una vera e propria riscrittura completa) il programma è stato estremamente modularizzato, introducendo ad esempio il modulo http.sys e permettendo di gestire ogni richiesta in modo separato.
Con la configurazione multi-IP (se ci sono più network adapter) si possono differenziare le richieste in base all’IP. Ovviamente una porta può essere utilizzata una volta sola da un IP, mentre IP diversi possono condividere la stessa porta.
Le configurazioni del Server vengono memorizzate nel file system.webServer e in una Central Configuration.
Il modulo ISAPI si preoccupa di gestire i file richiamati nell’URL in base alla loro estensione (ad esempio i file aspx vengono delegati al .NET Framework, mentre le pagina HTML vengono renderizzate direttamente dal browser).
Gli Alias sono i nomi che un client remoti userà per accedere ai files in una virtual directory.
La Directory è la cartella fisica sull’hard disk (del server) che viene esposta come Virtual Directory.
Le Permission sono le impostazioni di sicurezza impostate per un elemento. Read permette di accedere ad un oggetto in sola lettura, Run Script permette all’utente di richiedere una pagina ASP e/o ASP.NET. Senza questa impostazione gli utenti sono limitati a visualizzare solo pagine statiche (come ad esempio le pagine HTML), Execute permette di lanciare un eseguibile o una applicazione CGI, Write permette di gestire i files sul file system del web server, Browse permette di ottenere una lista dei contenuti di una directory.
È possibile assegnare ad una pagina (ad esempio una pagina ASP.NET in formato aspx) una estensione personalizzata (ad esempio *.mypage) aggiungendo un relativo handler nella sezione handlers del file di configurazione.
La separazione in moduli e handler è utile per modularizzare e risparmiare risorse. IIS opera di default in Integrated Mode: la Request Processing Pipeline include sia i moduli nativi sia gli handler scritti in c/c++ che i moduli/handler in .NET.
La Classic Mode è una modalità introdotta per il supporto backward con IIS6.
L’isolamento delle applicazioni avviene attraverso l’uso di Application Domains (meccanismi CLR per isolare componenti .net che girano nello stesso Host Process).
Le identità sono diverse per ogni Worker Process tramite Application Pools (ad esempio gestione di differenti credenziali). Le Web Applications sono associate agli AP, ogni AP è un WP per riflettere IIS5 in IIS6.
In IIS7 la gestione dell’handling è costruita su quella di IIS6.
Riciclare un Application Pool significa stoppare tutte le istanze correntemente in corso e riavviare il WP.
Identity di un AP: Network Service ha permessi limitati rispetto a Local System Account. Utile quando l’applicazione deve essere gestita dall’esterno. Local service è ancora più restrittivo, non può usare altre risorse di rete. Local System è il più potente e può fare tutto. Sennò si può creare un utente in Windows, assegnargli i permessi e creare un nuovo Application Pool che rifletta i permessi di questo utente.
A questo punto, per pubblicare la applicazione web, basta copiare tutti i file in nella Virtual Directory e controllare se gli assembly corretti sono installati in GAC (in alternativa occorre installarli con GACUTIL o assicurarsi che sia generata una copia nella cartella bin). L’ultimo passo è ovviamente quello di creare e configurare i database così come verificare la corretta configurazione di ASP.NET e IIS. Di solito è necessario anche modificare alcuni parametri nei file di configurazione.

[Omnia / Luca Zaccaro]


Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *