1 / 49

Pattern and Practices & Application Blocks: cosa sono e come si usano

Pattern and Practices & Application Blocks: cosa sono e come si usano. Ing. Lorenzo Barbieri MCT, MCSD.NET, MCDBA. Me.About(). Sono un Senior Trainer/Consultant in ObjectWay SpA , specializzato in architetture Microsoft .NET, Windows, SQL Server.

magda
Download Presentation

Pattern and Practices & Application Blocks: cosa sono e come si usano

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


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

  2. Me.About() • 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 www.cramsession.com per i seguenti esami di certificazione Microsoft: • 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: www.geniodelmale.info

  3. 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

  4. Introduzione aPattern & Practices

  5. 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

  6. Pattern & Practices Patterns Application Blocks Reference Architectures Guides

  7. Su Microsoft.com http://www.microsoft.com/practices/ In libreria http://www.amazon.com/practices/ Su GotDotNet http://workspaces.gotdotnet.com/ (cercare patterns & practices) Dove possiamo trovarli?

  8. 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”

  9. 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 

  10. AlcuniApplication Block di base

  11. Dove si posizionano i vari “blocchi”... Schema preso dalla documentazione di Enterprise Library 1.0

  12. 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 http://www.gotdotnet.com/workspaces/workspace.aspx?id=c20d12b0-af52-402b-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: http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnbda/html/daag.asp

  13. DAAB: Il problema dell’accesso ai dati in .NET

  14. 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 ;-)

  15. Usare le Transazioni con DAAB • Creare ed aprire un oggetto xxxConnection • Iniziare una transazione utilizzando il metodo BeginTransaction dell’oggetto xxxConnection • Passare l’oggetto xxxTransaction ai metodi ExecuteNonQuery • Se ci sono problemi, chiamate il metodo Rollback dell’oggetto xxxTransaction • Se tutto va bene, chiamate il metodo Commit

  16. Demo: DAAB 3.1

  17. 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: http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnbda/html/cmab.asp e sul workspace GotDotNet: http://www.gotdotnet.com/workspaces/workspace.aspx?id=01875f69-9358-437b-a8ae-fa4bf2e3080f • E’ basato sulla Application Architecture for .NET: Designing Applications and Services: http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnbda/html/distapp.asp

  18. CMAB: Architettura

  19. 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.

  20. 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 all’interno di un unico file • Dal codice si accede alle sezioni non preoccupandosi della posizione fisica del file

  21. Demo: CMAB

  22. Exception Management Application Block • Questo blocco risolve il problema della gestione delle eccezioni e della loro notifica all’utente/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 nell’Event Log. • L’alternativa è di utilizzare l’XCOPY deployment (o altri strumenti) e di seguire questo articolo: http://msdn.microsoft.com/library/en-us/dnbda/html/emab-rm.asp?frame=true#emab-rm_xcopydeployment

  23. EMAB: Funzionamento • L’applicazione o una libreria lancia un’eccezione (meglio se derivata BaseApplicationException) • L’applicazione fa il catch dell’eccezione, e richiama il metodo ExceptionManager.Publish • EMAB recupera le informazioni su come gestire le eccezioni da un file .config (machine, application, etc...) • EMAB decide quale modulo pubblicherò l’eccezione in base al file di configurazione • Il modulo scelto (o il DefaultPublisher che scrive nell’EventLog se non ce ne sono) pubblica l’eccezione.

  24. Perchè ereditare da BaseApplicationException? • In questo modo vengono catturate anche le seguenti informazioni: • Nome della macchina • Data/ora • Nome dell’Application 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...

  25. Logging Application Block • Il Logging Application Block si basa su EIF (Enterprise Instrumentation Framework) e fornisce un’infrastruttura 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.

  26. Relazione tra EIF e LAB

  27. 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 un’infrastruttura 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...

  28. Enterprise Library

  29. Enterprise Library • Enterprise Library è un progetto congiunto di Microsoft e Avanade e rappresenta l’evoluzione 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

  30. Filosofia di Enterprise Library • Enterprise Library rappresenta l’unificazione 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 l’integrazione e l’utilizzo della libreria

  31. Siamo in attesa... • Enterprise Library v1.0 verrà rilasciata a Gennaio 2005 (si spera) e girerà con Visual Studio .NET 2003. • Attualmente è in fase di beta (privata). • Maggiori informazioni possono essere trovate su GotDotNet assieme a tutta la documentazione dei vari blocchi aggiornati: • http://www.gotdotnet.com/workspaces/workspace.aspx?id=295a464a-6072-4e25-94e2-91be63527327 • e su questo blog: • http://weblogs.asp.net/scottdensmore/category/6624.aspx • E’ disponibile un sondaggio per aiutare la pianificazione di Enterprise Library v2.0 che verrà rilasciata successivamente per .NET 2.0 e VS2005 • http://www.zoomerang.com/recipient/survey-intro.zgi?p=WEB223XXWDJWYK

  32. Blocchi più avanzati:User Interface Process eUpdater Application Block

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

  34. Model: Gestisce il comportamento e i dati, fornisce lo stato dell’applicazione e implementa le modifiche View: Gestisce la visualizzazione delle informazioni Controller: Gestisce l’interazione con l’utente, interagendo con il model e/o la view Model-View-Controller Controller Model View

  35. Model-View-Controller

  36. 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

  37. 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 <navigationGraph iViewManager="WinFormViewManager" name="Shopping" state="State" statePersist="SqlServerPersistState" startView="cart"> <node view="cart"> <navigateTo navigateValue="resume" view="browsecatalog" /> <navigateTo navigateValue="checkout" view="checkout" /> <navigateTo navigateValue="fail" view="error" /> </node> <node view="browsecatalog"> <navigateTo navigateValue="addItem" view="cart"/> <navigateTo navigateValue="fail" view="error" /> </node> <node view="error"> <navigateTo navigateValue="resume" view="cart" /> </node> <node view="checkout"> <navigateTo navigateValue="passCheckout" view="congrats" /> <navigateTo navigateValue="failCheckout" view="checkout" /> </node> <node view="congratulations"> <navigateTo navigateValue="resume" view="cart" /> </node> </navigationGraph> browsecatalog fail addItem resume congrats <node view="browsecatalog"> <navigateTo navigateValue="addItem" view="cart"/> <navigateTo navigateValue="fail" view="error" /> </node> error resume resume fail passCheckout cart checkout checkout failCheckout

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

  39. Come bisogna implementarlo • Controller: • Ereditare da ControllerBase • Utilizzare l’oggetto 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

  40. Updater Application Block • All’inizio c’era AppUpdater, una sample disponibile su http://windowsforms.net/articles/appupdater.aspx basata su Terrarium • La sample si è poi evoluta ed è diventata l’Updater 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 l’utilizzo di diversi protocolli per il trasferimento dei dati, e fornisce anche un sistema per validare che i file scaricati siano corretti.

  41. UAB: Componenti e configurazione • Per funzionare ha bisogno di una determinata configurazione: • Un’applicazione che lancia l’applicazione principale, in base al contenuto del file di configurazione (ad es. AppStart.exe) • L’applicazione vera e propria • La classe che gestisce l’aggiornamento che può essere richiamata in vari modi: • All’interno dell’applicazione vera e propria • All’interno dell’applicazione di lancio • All’interno di un’applicazione o servizio indipendente che gira in background

  42. UAB: Flusso degli eventi

  43. 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: • http://blogs.duncanmackenzie.net/duncanma/

  44. Demo: UAB

  45. Reference Architectures:“Shadowfax”, “Fabriq” et al.

  46. 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: • Un’application framework estensibile • 4 Quickstart • Un’application template • Documentazione • Viene fornita anche un’applicazione di esempio (Global Bank Reference Implementation) GBRI che mostra come usare EDRA in uno scenario di online banking. • Potete trovare “Shadowfax” su GotDotNet: http://www.gotdotnet.com/workspaces/workspace.aspx?id=9c29a963-594e-4e7a-9c45-576198df8058

  47. “Shadowfax” App Framework • L’application framework fornisce: • Separazione dell’interfaccia dei servizi dall’implementazione • 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: http://www.gotdotnet.com/team/rojacobs/shadowfax/shadowfaxfaq.aspx

  48. FABRIQ • FABRIQ è un’architettura di messaging one-way, basata su una rete di code ad alte performance. • Richiede WSE 2.0 e EIF. • E’ disponibile un’implementazione di riferimento. • E’ il risultato della collaborazione fra Microsoft e Newtelligence • E’ disponibile su GotDotNet: http://www.gotdotnet.com/workspaces/workspace.aspx?id=b4fcf02f-3e71-4a15-a305-f0511240eec1 • Potete trovare il codice, una presentazione e un lab che mostra come implementare FABRIQ.

More Related