Il Provider Model di ASP.NET 2.0

4 pagine in totale: <<Indietro 1 2 3 [4]

L'esempio di codice che segue dimostra come il pattern Provider sia una variante del pattern Strategy. Tuttavia nel caso dello Strategy è necessario indicare in modo esplicito il tipo di strategia da utilizzare all'atto della costruzione dell'oggetto Context. Grazie all'operazione di inizializzazione, durante la quale in modo del tutto trasparente viene recuperata la configurazione e attivata l'istanza, col pattern Provider non è più necessario specificare alla classe Manager il tipo da caricare, in quanto la dipendenza viene "iniettata" a runtime.

public abstract class AbstractProvider
{
    public abstract void DoSomething();
}

public class ConcreteProvider : AbstractProvider
{
    public override void DoSomething()
    {
        // Stub...
    }
}

public static class Manager
{
    private static AbstractProvider _provider;
    private static bool _initialized;
    private static object _lock;

    public static AbstractProvider Provider
    {
        get
        {
            Manager.Initialize();
            return Manager._provider;
        }
    }

    static Manager()
    {
        Manager._initialized = false;
        Manager._lock = new object();
    }

    private static void Initialize()
    {
        if(!Manager._initialized)
        {
            lock(Manager._lock)
            {
                // Recupera la configurazione

                // Crea l'istanza di ConcreteProvider

                // Assegna l'istanza creata a _provider

                Manager._initialized = true;
            }
        }
    }

    public static void DoSomething()
    {
        Manager.Provider.DoSomething();
    }
}

class ClientApp
{
    [STAThread]
    static void Main()
    {
        Manager.DoSomething();
    }
}

Conclusioni

In questo articolo abbiamo visto i concetti generali che stanno alla base del Provider Model e ne abbiamo capito le motivazioni. In particolare abbiamo visto come il pattern Provider suggerisca una valida soluzione per migliorare il disegno delle applicazioni in termini di flessibilità ed estendibilità. Del resto i pattern sono utili proprio perchè permettono a sviluppatori e architetti di risolvere problematiche di sviluppo e progettazione note sfruttando soluzioni eleganti e collaudate. I Provider rappresentano una di queste soluzioni, in particolare nel caso in cui si voglia creare layer applicativi pluggabili e intercambiabili. In ogni caso è bene tenere a mente che, nonostante la loro utilità, i pattern non rappresentano sempre la soluzione ad ogni problema, ma vanno utilizzati con cognizione di causa e attenzione. La valutazione sul loro uso spesso dipende dal tipo di applicazione, dalla sua dimensione e dalla sua complessità. L'esperienza e il buon senso permettono in molti casi di fare la scelta giusta.

ASP.NET 2.0 sfrutta abbondantemente il pattern Provider per garantire l'estendibilità delle sue principali API. Nel prossimo articolo parleremo di alcuni dei Provider di ASP.NET 2.0, elencandone le caratteristiche principali e gli aspetti peculiari da un punto di vista architetturale.

4 pagine in totale: <<Indietro 1 2 3 [4]

Contenuti dell'articolo

Commenti
Dai un voto a questo articolo, ci aiuterà a migliorare il nostro sito (1 è il voto minimo, 5 il massimo).

Per procedere al rating dell'articolo devi essere autenticato.

Aggiungi un nuovo commento »»»
Per inserire un commento, devi registrarti alla nostra community.


TUTORIALS
TOP TEN ARTICOLI
NOTIFICHE

Iscriviti alla nostra newsletter nuoviarticoli per ricevere e-mail le notifiche!

Indirizzo e-mail:
PROVIDER ASP.NET 2.0

Seleziona il database per avere il web.config pronto per Membership, Roles e Profile API.



IN EVIDENZA
MISC