La presentazione è in caricamento. Aspetta per favore

La presentazione è in caricamento. Aspetta per favore

Pattern and Practices & Application Blocks: cosa sono e come si usano Ing. Lorenzo Barbieri MCT, MCSD.NET, MCDBA.

Presentazioni simili


Presentazione sul tema: "Pattern and Practices & Application Blocks: cosa sono e come si usano Ing. Lorenzo Barbieri MCT, MCSD.NET, MCDBA."— Transcript della presentazione:

1 Pattern and Practices & Application Blocks: cosa sono e come si usano Ing. Lorenzo Barbieri MCT, MCSD.NET, MCDBA

2 2

3 3 Me.About() ObjectWay SpA Sono un Senior Trainer/Consultant in ObjectWay SpA, specializzato in architetture Microsoft.NET, Windows, SQL Server. Ho scritto articoli per ioProgrammo, Dev, Network News. Ho scritto le guide su per i seguenti esami di certificazione Microsoft:www.cramsession.com Visual Basic.NET, Visual C#, Visual C++, BizTalk Server, Commerce Server, e altri Sono specializzato sul Microsoft Solutions Framework, su cui ho scritto alcuni articoli e mantengo una lista di tutte le risorse disponibili. Per contattarmi o per maggiori informazioni potete visitare il mio BLOG:

4 4 Agenda della giornata Introduzione a Pattern & Practices Application Blocks di base DAAB 3.1 CMAB EMAB LAB Enterprise Library Blocchi avanzati UIP AUB Reference Architectures ShadowFax FABRIQ

5 Introduzione a Pattern & Practices

6 6 Microsoft Patterns & Practices: Visione Sviluppo di applicazioni.NET distribuite Utilizzo estensivo della piattaforma Risultati! Sviluppo, manutenzione e gestione operativa FROM the field and FOR the field

7 7 Reference Architectures ApplicationBlocks Guides Pattern & Practices Patterns

8 8 Dove possiamo trovarli? Su Microsoft.com In libreria Su GotDotNet (cercare patterns & practices)

9 9 Application blocks Librerie di codice.NET riutilizzabile C# e VB.NET Molto estensibile, modulare Implementano i servizi architetturali di base Sono stati sviluppati seguendo le best practice suggerite dalle guide Completi di documentazione e samples (Quick Start) Possono essere usati come black box o white box

10 10 Application blocks Blocchi base: Authorization and Profile Application Block Caching Application Block for.NET Configuration Management Application Block for.NET Data Access Application Block for.NET Exception Management Application Block for.NET Logging Application Block Blocchi avanzati: Aggregation Application Block for.NET Asynchronous Invocation Application Block for.NET Smart Client Offline Application Block Updater Application Block for.NET User Interface Process Application Block for.NET Vedremo in dettaglio quelli con la

11 Alcuni Application Block di base

12 12 Dove si posizionano i vari blocchi... Schema preso dalla documentazione di Enterprise Library 1.0

13 13 Data Access Application Block Questo blocco serve per semplificare la gestione degli accessi al database. E usato dagli altri blocchi quando devono accedere al DB. Fino alla versione 2.0 supportava solo SQL Server. La versione 3.x ha implementato un modello a provider multipli basato su Abstract Factory, ed è scaricabile da 9b7c-aaeb21d1f431 9b7c-aaeb21d1f431 Supporta nativamente SQL Server, Oracle, OLE-DB,ODBC e può essere esteso ad altri provider. E basato sulle indicazioni della.NET Data Access Architecture Guide: us/dnbda/html/daag.asp us/dnbda/html/daag.asp

14 14 DAAB: Il problema dellaccesso ai dati in.NET

15 15 DAAB 3.1: Gestione multiprovider Come si instanzia un provider: AdoHelper helper = AdoHelper.CreateHelper( GotDotNet.ApplicationBlocks.Data, GotDotNet.ApplicationBlocks.Data.SqlServer ); oppure se li si configura nel file.config si possono creare degli alias e instanziare quelli, per cambiare il provider al volo Attenzione alle stringhe di connessione, e alla sintassi SQL differente tra i vari DB... Una volta instanziato un provider si possono richiamare una serie di metodi già pronti, tra cui quelli per leggere un DataSet, ottenere un DataReader, un XmlReader, eseguire comandi, gestire parametri, etc... Problemi: Ad alcuni non piace la scelta di lasciare la gestione delle connessioni al layer superiore Alcuni bug, documentati in giro sui blog e nei forum, ma cè il sorgente ;-)

16 16 Usare le Transazioni con DAAB Creare ed aprire un oggetto xxxConnection Iniziare una transazione utilizzando il metodo BeginTransaction delloggetto xxxConnection Passare loggetto xxxTransaction ai metodi ExecuteNonQuery Se ci sono problemi, chiamate il metodo Rollback delloggetto xxxTransaction Se tutto va bene, chiamate il metodo Commit

17 Demo: DAAB 3.1

18 18 Configuration Management Application Block La gestione della configurazione delle applicazioni non è un problema banale se si necessitano le seguenti cose: Cifratura dei dati sensibili (DPAPI, TripleDES, etc...) Indipendenza dal supporto (file, DB, registry, etc...) Caching delle informazioni Il CMAB fornisce una soluzione a tutti questi problemi, attraverso una struttura configurabile ed estensibile, in cui le informazioni vengono memorizzate ed eventualmente cifrate usando dei provider che possono essere anche custom. Maggiori informazioni si hanno qui: us/dnbda/html/cmab.asp e sul workspace GotDotNet: a8ae-fa4bf2e3080f us/dnbda/html/cmab.asp a8ae-fa4bf2e3080f E basato sulla Application Architecture for.NET: Designing Applications and Services: us/dnbda/html/distapp.asp us/dnbda/html/distapp.asp

19 19 CMAB: Architettura

20 20 CMAB: Utilizzo e problemi Per poter utilizzare il CMAB bisogna prima inserire le informazioni di configurazione nel file.config, poi basta leggere o scrivere le informazioni appoggiandosi ad una HashTable: Dim configData As Hashtable ' Legge i dati dalla sezione Prova configData = CType(ConfigurationManager.Read(Prova"), Hashtable)... ' Scrive i dati nella sezione Prova ConfigurationManager.Write(Prova",configData) Si può definire anche una sezione di default e utilizzarla tramite un Indexer, e si può anche utilizzare una serializzazione custom basata su XmlSerializer CMAB si basa sulla versione 2.0 del DAAB, e quindi attualmente supporta solo SQL Server come DB.

21 21 CMAB: Configurazioni multiple CMAB semplifica notevolmente lo scenario di avere più applicazioni con un unico file di configurazione. Si impostano varie sezioni, una per ogni applicazione o parte di applicazione Nei file.config delle applicazioni si configura CMAB per accedere alle varie sezioni allinterno di un unico file Dal codice si accede alle sezioni non preoccupandosi della posizione fisica del file

22 Demo: CMAB

23 23 Exception Management Application Block Questo blocco risolve il problema della gestione delle eccezioni e della loro notifica allutente/sviluppatore/amministratore di rete. Anche questo si basa sul fatto di avere dei provider completamente configurabili da file.config che permettono di scegliere dinamicamente dove loggare le eccezioni, e chi le deve gestire. Anche in questo caso i provider possono essere custom. Una piccola nota, questo blocco va installato tramite Windows Installer perchè deve registrare delle Event Sources utilizzate quando scrive nellEvent Log. Lalternativa è di utilizzare lXCOPY deployment (o altri strumenti) e di seguire questo articolo: us/dnbda/html/emab-rm.asp?frame=true#emab-rm_xcopydeployment us/dnbda/html/emab-rm.asp?frame=true#emab-rm_xcopydeployment

24 24 EMAB: Funzionamento 1. Lapplicazione o una libreria lancia uneccezione (meglio se derivata BaseApplicationException) 2. Lapplicazione fa il catch delleccezione, e richiama il metodo ExceptionManager.Publish 3. EMAB recupera le informazioni su come gestire le eccezioni da un file.config (machine, application, etc...) 4. EMAB decide quale modulo pubblicherò leccezione in base al file di configurazione 5. Il modulo scelto (o il DefaultPublisher che scrive nellEventLog se non ce ne sono) pubblica leccezione.

25 25 Perchè ereditare da BaseApplicationException? In questo modo vengono catturate anche le seguenti informazioni: Nome della macchina Data/ora Nome dellApplication Domain Thread Identity Windows Identity Altre informazioni... E serializzabile (può essere remotizzata)... Deriva da System.ApplicationException e tutte le eccezioni gestite da EMAB dovrebbero ereditare da questa...

26 26 Logging Application Block Il Logging Application Block si basa su EIF (Enterprise Instrumentation Framework) e fornisce uninfrastruttura indipendente per realizzare il logging delle proprie applicazioni. Completamente estensibile e configurabile (che noia, ma sono tutti così ), semplifica ed estende allo stesso tempo i servizi di EIF.

27 27 Relazione tra EIF e LAB

28 28 Interazione tra LAB e EMAB Il LAB è uscito dopo EMAB. E logico che alla fine si può usare il LAB anche per loggare le eccezioni. Il LAB ha uninfrastruttura di logging più elaborata, però se uno ha già implementato EMAB non deve per forza reimplementare tutto. Il LAB include un publisher per EMAB che pubblica le eccezioni attraverso EIF, facendole poi elaborare dal blocco stesso. Quindi basta cambiare la configurazione delle proprie applicazioni che sfruttano EMAB per utilizzare il LAB...

29 Enterprise Library

30 30 Enterprise Library Enterprise Library è un progetto congiunto di Microsoft e Avanade e rappresenta levoluzione del concetto di Application Block. Nella release 1.0 saranno incluse le evoluzioni dei seguenti blocchi: Data Access Configuration Exception Handling Logging & Instrumentation (EIF) Caching Security Profile Roles Authorization Authentication Cryptography

31 31 Filosofia di Enterprise Library Enterprise Library rappresenta lunificazione dei vari Application Block, in un progetto unico e integrato. Non viene garantità la compatibilità con le versioni precedenti, che potranno comunque essere utilizzate anche Side-by-Side. Verranno forniti anche una serie di tool (esterni e/o integrati in Visual Studio.NET) per semplificare lintegrazione e lutilizzo della libreria

32 32 Siamo in attesa... Enterprise Library v1.0 verrà rilasciata a Gennaio 2005 (si spera) e girerà con Visual Studio.NET Attualmente è in fase di beta (privata). Maggiori informazioni possono essere trovate su GotDotNet assieme a tutta la documentazione dei vari blocchi aggiornati: e25-94e2-91be e25-94e2-91be e su questo blog: E disponibile un sondaggio per aiutare la pianificazione di Enterprise Library v2.0 che verrà rilasciata successivamente per.NET 2.0 e VS2005 intro.zgi?p=WEB223XXWDJWYK intro.zgi?p=WEB223XXWDJWYK

33 Blocchi più avanzati: User Interface Process e Updater Application Block

34 34 Model-View-Controller La logica legata allinterfaccia utente cambia spesso Gli stessi dati sono mostrati in modi diversi Bisognerebe separare le sviluppo della business logic da quello dellinterfaccia utente per adattarsi meglio agli skill delle persone Le attività sullinterfaccia utente consistono sempre in presentazione e aggiornamento Il codice legato alla UI è troppo device-dependent Automatizzare i test di UI è molto difficile

35 35 Model-View-Controller Model: Gestisce il comportamento e i dati, fornisce lo stato dellapplicazione e implementa le modifiche View: Gestisce la visualizzazione delle informazioni Controller: Gestisce linterazione con lutente, interagendo con il model e/o la view Model Controller View

36 36 Model-View-Controller BeneficiSvantaggi View multiple a parità di model e controller Ogni componente può essere testato individualmente Il numero di test UI viene ridotto Complessità Più lento da aggiornare

37 37 User Interface Process Block Aiuta ad implementare il pattern MVC Descrive i flussi di UI come file XML Permette il riuso del controller per applicazioni win & web Gestisce lo stato Permette di lanciare, interrompere e riprendere le operazioni senza particolari implementazioni custom

38 38 User Interface Process Un User Interface Process rappresenta uno use case Può essere rappresentato come il flusso fra più view Lo UIP Block usa un file XML per descrivere il flusso cart browsecatalog error checkout congrats addItem fail resume passCheckout failCheckout checkout fail

39 39 UIP In Your Application ControllerBase Your Controller Class DALC WinFormView Your Windows Forms WinFormView Your Windows Forms WebFormView Your ASP.NET Pages or Windows Form,s WebFormView Your ASP.NET Pages or Windows Form,s Biz Component s Data Access State Persistence Provider MyFunc() { //do cool code //more good stuff } MyFunc() { //do cool code //more good stuff } Persistence Providers: - SQL Server - Encrypted SQL Server - Memory - ASP.NET Session - Custom ASP.NET Pages or Windows Forms belonging to a use case State Persistence Provider UIP Manager Application XML Configuration File UIP Configuration View Managers: - Windows Forms - Web Pages View Manager WebFormView Your ASP.NET Pages WinFormView Your Windows Forms State Your State Type (Optional) Your State Type (Optional)

40 40 Come bisogna implementarlo Controller: Ereditare da ControllerBase Utilizzare loggetto state per contenere i dati Utilizzare la proprietà NavigateValue per decidere dove andare Interagire con i propri busines layer sottostanti View: Ereditare le pagine web da WebFormView e le form windows da WinFormView Per accedere al controller utilizzare la proprietà MyController, settata automaticamente da UIP

41 41 Updater Application Block Allinizio cera AppUpdater, una sample disponibile su basata su Terrarium La sample si è poi evoluta ed è diventata lUpdater Application Block. Questo blocco semplifica la scrittura di applicazioni autoaggiornanti soprattutto in scenari di tipo kiosk o applicazioni che monitorizzano continuamente la presenza di update sul server. Prevede lutilizzo di diversi protocolli per il trasferimento dei dati, e fornisce anche un sistema per validare che i file scaricati siano corretti.

42 42 UAB: Componenti e configurazione Per funzionare ha bisogno di una determinata configurazione: Unapplicazione che lancia lapplicazione principale, in base al contenuto del file di configurazione (ad es. AppStart.exe) Lapplicazione vera e propria La classe che gestisce laggiornamento che può essere richiamata in vari modi: Allinterno dellapplicazione vera e propria Allinterno dellapplicazione di lancio Allinterno di unapplicazione o servizio indipendente che gira in background

43 43 UAB: Flusso degli eventi

44 44 Problematiche ed estensioni Di default non è prevista la modalità base, parto, controllo, aggiorno, lancio... Di default mancano alcuni eventi come ad esempio non ci sono aggiornamenti... Il downloader BITS non è compatibile con BITS 2.0, è disponibile la patch, ma solo per C# Per configurare e risolvere questi e altri problemi consiglio la ricerca degli articoli su UAB nel blog di Duncan Mackenzie:

45 Demo: UAB

46 Reference Architectures: Shadowfax, Fabriq et al.

47 47 EDRA – o Shadowfax per gli amici EDRA (Enterprise Development Reference Architecture) è il nome ufficiale di Shadowfax Fornisce una guida architetturale che può essere usata per standardizzare lo sviluppo di sistemi distribuiti. Include: Unapplication framework estensibile 4 Quickstart Unapplication template Documentazione Viene fornita anche unapplicazione di esempio (Global Bank Reference Implementation) GBRI che mostra come usare EDRA in uno scenario di online banking. Potete trovare Shadowfax su GotDotNet: e-4e7a-9c df8058

48 48 Shadowfax App Framework Lapplication framework fornisce: Separazione dellinterfaccia dei servizi dallimplementazione Separazione della business logic dalle problematiche trasversali Separazione della business logic dai protocolli di trasporto sottostanti Differenti sistemi di deployment Per capire meglio Shadowfax si possono leggere anche le FAQ: jacobs/shadowfax/shadowfaxfaq.a spx

49 49 FABRIQ FABRIQ è unarchitettura di messaging one-way, basata su una rete di code ad alte performance. Richiede WSE 2.0 e EIF. E disponibile unimplementazione di riferimento. E il risultato della collaborazione fra Microsoft e Newtelligence E disponibile su GotDotNet: f-3e71-4a15-a305-f eec1 Potete trovare il codice, una presentazione e un lab che mostra come implementare FABRIQ.


Scaricare ppt "Pattern and Practices & Application Blocks: cosa sono e come si usano Ing. Lorenzo Barbieri MCT, MCSD.NET, MCDBA."

Presentazioni simili


Annunci Google