Un giro all'interno del .NET Framework: namespace e classi

di Diego Spagnoli, in ASP.NET,

Uno dei vantaggi che ASP.NET, che è basato sul .NET Framework, oltre che una delle sue principali caratteristiche è quella di essere interamente Object Oriented .

Tutto questo significa che ASP.NET si basa su oggetti, classi, funzioni, metodi che possono essere manipolati attraverso la logica concettuale della programmazione ad oggetti.

Questo articolo non parlerà della logica OOP ma il suo scopo è quello di illustrare come l'intero .NET Framework sia basato sulla programmazione ad oggetti e di come a sua volta ASP.NET implementi tale logica anche nelle sue librerie interne ed in alcune parti a cui il programmatore meno attento non presta la sua attenzione.

Il concetto di namespace

I namespace sono un raggruppamento logico di tipi. Tutti gli oggetti usati in ASP.NET sono tipi e vengono raggruppati in base alla loro funzionalità in modo da consentire una ricerca più immediata in base alle esigenze dello sviluppatore.

System rappresenta la root dei namespace, da qui partono una serie di sub-namespace che costituiscono una certa gerarchia che comprende ogni funzionalità per costruire applicazione web e non solo.

Esempi di quanto detto sono System.Web (applicazioni per internet) e System.Data (per la gestione di database), ma all'interno dell'architettura ne abbiamo per ogni uso.

All'interno delle nostre pagine possiamo richiamare ogni libreria di funzioni che ci occorre mediante la seguente sintassi:

<%@ import Namespace="System.Data" %>

Questa riga importa nella pagina i riferimenti alle classi della libreria indicata nella clausola Namespace. Oltre a quelle fornite dal framework è possibile importare librerie personalizzate, come vedremo in seguito.

Per impostazione predefinita in ogni pagina ASP.NET vengono importate automaticamente le seguenti librerie:

  • System
  • System.Collections.Specialized
  • System.Text.RegularExpressions
  • System.Collections
  • System.Configuration
  • System.Text
  • System.Web
  • System.Web.Security
  • System.Web.UI
  • System.Web.UI.WebControls
  • System.Web.Caching
  • System.Web.SessionState
  • System.Web.UI.HtmlControls

Non c'è dunque necessità di importarle esplicitamente.

Un cosa importante da ricordare è che l'importazione di una libreria non comporta l'importazione delle librerie sottostanti ma occorrerà inserire una nuova clausola IMPORT.

<% import namespace="System.IO" %>
<% import namespace="System.IO.File" %>

L'importazione della libreria è comunque una scorciatoia, infatti per poter utilizzare un oggetto potrete anche scrivere tutto il percorso dell'oggetto nella libreria escludendo l'importazione:

Dim objFile as System.IO.File

Importando il namespace System.IO è possibile fare riferimento direttamente alla classe File:

Dim objFile as File 

Passiamo ad un esempio più completo:

<%@ import Namespace="System.Xml" %>
dim xmldoc as new XMLDataDocument()
xmldoc.DocumentElement.Item("info")

Una volta importato il namespace, in questo caso System.XML (contiene tutte le librerie per consentire di accedere a file XML), possiamo accedere ai suoi membri ed utilizzarli. Per accedere alle classi della libreria creiamo un'istanza XmlDoc della classe XmlDataDocument, una volta ottenuto il riferimento possiamo utilizzarne le relative proprietà e metodi con la classica notazione del punto.

Naturalmente se non includiamo il namespace relativo a quella funzione il compilatore ci avvertirà.

La libreria di classe dei namespace è piuttosto vasta e comprende funzionalità per ogni esigenza:

  • Namespaces relativi alla gestione dei dati
  • Namespaces relativi ad applicazioni Windows Forms
  • Namespaces relativi ai servizi applicativi
  • Namespaces relativi al debugging
  • e molti altri...

Dove si nascondono fisicamente i namespaces nel nostro pc? Sono contenuti in file denominati assembly, con estensione .dll, il cui nome lo trovate nella documentazione relativa alla classe del namespace.

Immagine

Esiste uno strumento fornito con il .NET framework, WinCV, che si trova in c:\program files\Microsoft.Net\FrameworkSDK\Bin, che permette di vedere le classi e visualizzarne in modo rapido tutti i membri dell'oggetto che si specifica. L'unico vantaggio di tale strumento rispetto all'MSDN è la sua rapidità nella ricerca di membri. Un tool ancora migliore, da questo punto di vista, è l'ottimo .NET Reflector .

Poiché all'interno del framework è possibile scrivere applicazioni in linguaggi diversi, il sistema per rendere il tutto compatibile utilizza un sistema di tipi comuni. Per cui tutte applicazione sviluppate, indipendentemente dal linguaggio, avranno le stesse identiche classi per la gestione dei tipi di dati:

 System.Boolean
  System.Char
   System.Int32
...

Potrebbe presentarsi l'esigenza di utilizzare librerie di classi non incluse in .NET, come librerie sviluppate in proprio o da terze parti. Per poter accedere ad esse è necessario crearne un riferimento. In VS.NET tale operazione è disponibile attraverso il menu Aggiungi riferimento/Add Reference.

L'identificazione di quale namespace usare a seconda delle proprie esigenze è abbastanza intuitivo, difatti il framework è stato strutturato in questa maniera gerarchica con nomi che fanno riferimento alle proprie funzionalità.

E' utile ricordare che nessun libro vi spiegherà passo per passo tutti i namespace del framework, ma spetta allo sviluppatore imparare come destreggiarsi per trovare quello giusto.

2 pagine in totale: 1 2
Contenuti dell'articolo

Commenti

Visualizza/aggiungi commenti

| Condividi su: Twitter, Facebook, LinkedIn

Per inserire un commento, devi avere un account.

Fai il login e torna a questa pagina, oppure registrati alla nostra community.

Approfondimenti