3 pagine in totale: <<Indietro 1 [2] 3 Avanti >>
Cryptography Block
Anche il blocco Cryptography, che non era stato incluso nella CTP di novembre per motivi apparentemente burocratici, è stato oggetto di alcuni cambiamenti. La modalità in cui le chiavi sono gestite, il passaggio di informazioni di configurazione e l'implementazione di custom provider sono diverse rispetto alla versione rilasciata nel giugno 2005. Tuttavia, le API sono rimaste inalterate, quindi è possibile continuare ad utilizzare il blocco senza preoccuparsi troppo della nuova implementazione.
Caching Application Block
Le API del blocco di Caching sono rimaste sostanzialmente inalterate, quindi anche in questo caso è possibile continuare ad utilizzare il blocco senza preoccuparsi troppo della nuova implementazione.
Exception Handling Application Block
Anche qui non è stato fatto alcun cambiamento di rilievo alle API pubbliche. Questo è quanto ci auguriamo che succeda in futuro: pochi o nessun cambiamento alle interfacce pubbliche e continue migliorie interne.
Basso accoppiamento tra i blocchi
Nessun blocco è strettamente correlato (o addirittura vincolato) ad altri blocchi. Mentre prima, per esempio, il blocco di configurazione veniva sempre invocato dagli altri blocchi, adesso le sole dipendenze sono verso il core, ovvero il nucleo della libreria. Esistono in ogni caso dipendenze opzionali, che possono essere attivate in maniera discrezionale a seconda di quello che si vuole fare (ad esempio, se si vuole registrare un errore, oltre ad utilizzare il blocco Exception Handling, è possbile invocare anche quello di Logging).

Tutti i blocchi includono la strumentazione a supporto dello sviluppo e del tuning applicativo. I tipi di instrumentation sono:
- gli eventi Event Log;
- i performance counter;
- gli schemi WMI.
Gli strumenti giusti al momento giusto
Tutta la strumentazione è disabilitata di default, ma ogni tipologia può essere individualmente attivata utilizzando il tool di configurazione. Questo tool risolve uno dei grattacapi più ricorrenti delle versioni precedenti, particolarmente "sentito" quando si voleva copiare un progetto da un server di sviluppo ad uno di produzione con permessi ridotti. Dato che in ambiente low-trust non era possibile installare la strumentazione, nelle versioni precedenti bisognava prima esplicitamente utilizzare il costrutto #ifdefs nel codice e quindi ricompilare l'intera libreria ad ogni installazione in un nuovo ambiente.
Con la nuova versione è tutto molto più semplice e, attraverso il tool di configurazione, è possibile selezionare la strumentazione attraverso una semplice voce di menu e abilitare o disabilitare specifiche parti della strumentazione (l'Event Logging, i contatori e/o gli schemi per gli eventi WMI).
Object Builder, l'infaticabile costruttore d'oggetti
Il cuore dell'EL include l'Object Builder (OB), un nuovo sottosistema condiviso tra il Composite User Interface (UI) Application Block e l'EL stessa. L'Object Builder è un sottosistema utilizzato per creare e rimuovere istanze d'oggetto, pur mantenendo un alto grado di flessibilità. L'OB è usato per funzioni quali l'acquisizione dinamica della configurazione da parte dei blocchi o l'uso nei blocchi di classi instrumentation.
Uno degli intenti principali dei creatori dell'Enterprise Library è stato quello di ridurre la quantità di codice necessaria ad implementare un'azione, per esempio, ridurre il codice per creare un database grazie al Data Access Application Block.
Database db = DatabaseFactory.CreateDatabase("NomeDatabase");
L'esempio mostra come creare un'instanza del database "NomeDatabase" grazie all'invocazione di una classe statica di tipo Factory (design pattern AbstractFactory) che serve fondamentalmente a generare una istanza ritornata al chiamante. Questo tipo di tecnica è anche utilizzata dai blocchi di Caching, Security e Cryptography.
Si noti che il pattern generale per comunicare con l'Object Builder è:
Tipo nomeIstanza = ObjectBuilder.BuildUp("NomeIstanza")
Attraverso l'uso dei generics l'OB accetta tipi di classi diverse e invoca la costruzione di un oggetto specifico. In questo modo l'utilizzatore dell'Enterprise Library deve solamente imparare il modo per invocare i diversi blocchi tra loro indipendenti.
Mentre i blocchi di Caching, Security, Cryptography e Data Access vengono invocati attraverso la creazione di un'istanza d'oggetto, i blocchi di Logging e Exception vengono invocati attraverso istanze statiche. Ad esempio, se si vuole utilizzare il blocco di Logging per registrare un messaggio, basta scrivere il seguente codice:
Logger.Write("Messaggio di una certa rilevanza...")
Nonostante esista un'unica istanza dell'oggetto Logger, dietro le quinte vengono create comunque le istanze degli oggetti in uso tramite l'Object Builder e le classi Factory.
3 pagine in totale: <<Indietro 1 [2] 3 Avanti >>
Contenuti dell'articolo
- Pagina 1
- Pagina 2
- Pagina 3
Aggiungi un nuovo commento »»»
Per inserire un commento, devi registrarti alla nostra community.






Difficoltà
Utilità
Stampa
Download 



