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

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

Embed Size (px)

Citation preview

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

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

Ing. Lorenzo BarbieriMCT, MCSD.NET, MCDBA

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

2

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

3

Me.About()

Sono un Senior Trainer/Consultant in ObjectWay SpAObjectWay 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

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

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

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

Introduzione aPattern & Practices

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

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 fieldFROM the field and FOR the field

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

7

Reference Reference ArchitecturesArchitectures

ApplicationApplicationBlocksBlocks

GuidesGuides

Pattern & Practices

PatternsPatterns

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

8

Dove possiamo trovarli?

Su Microsoft.com http://www.microsoft.com/practices/

In libreria http://www.amazon.com/practices/

Su GotDotNet http://workspaces.gotdotnet.com/

(cercare patterns & practices)

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

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”

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

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

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

AlcuniApplication Block di base

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

12

Dove si posizionano i vari “blocchi”...

Schema preso dalla documentazione di Enterprise Library 1.0

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

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

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

14

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

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

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

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

16

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

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

Demo: DAAB 3.1

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

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: 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

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

19

CMAB: Architettura

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

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 ProvaconfigData = CType(ConfigurationManager.Read(“Prova"), Hashtable)...' Scrive i dati nella sezione ProvaConfigurationManager.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.

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

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 all’interno di un unico file

Dal codice si accede alle sezioni non preoccupandosi della posizione fisica del file

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

Demo: CMAB

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

23

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

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

24

EMAB: Funzionamento

1. L’applicazione o una libreria lancia un’eccezione (meglio se derivata BaseApplicationException)

2. L’applicazione fa il catch dell’eccezione, 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ò l’eccezione in base al file di configurazione

5. Il modulo scelto (o il DefaultPublisher che scrive nell’EventLog se non ce ne sono) pubblica l’eccezione.

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

25

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

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

26

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.

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

27

Relazione tra EIF e LAB

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

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

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

Enterprise Library

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

30

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

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

31

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

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

32

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

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

Blocchi più avanzati:User Interface Process e

Updater Application Block

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

34

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

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

35

Model-View-Controller

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

Controller

View

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

36

Model-View-Controller

Benefici Svantaggi

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

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

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

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

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

cartcart

browsecatalogbrowsecatalog

errorerror

checkoutcheckout

congratscongrats

addItem fail

resume

resume

resume

passCheckout

failCheckoutcheckout

fail

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

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

<node view="browsecatalog"><navigateTo navigateValue="addItem" view="cart"/><navigateTo navigateValue="fail" view="error" />

</node>

<node view="browsecatalog"><navigateTo navigateValue="addItem" view="cart"/><navigateTo navigateValue="fail" view="error" />

</node>

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

39

UIP In Your Application

ControllerBaseControllerBase

Your Controller ClassYour Controller Class

DALCDALCDALCDALC

WinFormViewWinFormView

Your Windows FormsYour Windows Forms

WinFormViewWinFormView

Your Windows FormsYour Windows Forms

WebFormViewWebFormView

Your ASP.NET Pages or Windows Form,sYour ASP.NET Pages or Windows Form,s

WebFormViewWebFormView

Your ASP.NET Pages or Windows Form,sYour ASP.NET Pages or Windows Form,s

Biz Components

Biz Components

Biz ComponentsBiz Components

Data AccessData

Access

State Persistence ProviderState 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 ProviderState Persistence ProviderState

Persistence Provider

State Persistence Provider

UIP ManagerUIP Manager

Application XML Configuration File

UIP Configuration UIP Configuration

View Managers:- Windows Forms- Web Pages

View ManagerView ManagerView ManagerView Manager

View ManagerView Manager

WebFormViewWebFormView

Your ASP.NET PagesYour ASP.NET Pages

WinFormViewWinFormView

Your Windows FormsYour Windows Forms

StateState

Your State Type(Optional)Your State Type(Optional)

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

40

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

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

41

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.

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

42

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

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

43

UAB: Flusso degli eventi

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

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:

http://blogs.duncanmackenzie.net/duncanma/

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

Demo: UAB

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

Reference Architectures:“Shadowfax”, “Fabriq” et

al.

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

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: 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

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

48

“Shadowfax” App Framework

Service Transports

`

Service Dispatching Transports

Tim

ou

tsL

og

gin

gM

on

itorin

g

Bu

sine

ssE

ven

tA

uth

o-

rizatio

nV

alid

atio

n

Cro

ss-cuttin

g L

og

ic Ha

nd

lers

Clients Services

. . .

Cross-Cutting Logic

Cross-Cutting Logic

BusinessWorkflow

BusinessComponents

Business Entities

Data Access Logic

ComponentsService Agents

Business Actions

Service AgentsData Access Logic

Components

Business Entities

BusinessComponents

BusinessWorkflow

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

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

49

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.