Progettare e realizzare applicazioni con Visual Studio .NET Enterprise Architect Francesco Albano Senior Developer Evangelist .NET Developer & Platform Strategy Division Microsoft Italy Agenda Panoramica di Duwamish Architettura di Duwamish Obiettivi di progettazione I diagrammi UML Gli Enterprise Template User Services Layer Data Access Layer Business Logic Layer Flusso dell'Applicazione Panoramica di Duwamish I layer applicativi User Services Progetto Web realizzato come applicazione ASP .NET Business Services Progetto Business Façade Modellato sulla base dei casi di uso del sistema Maschera la complessità delle regole delle classi dello strato business Progetto Business Rules Contiene le regole di business da rispettare Data Services Progetto Data Access Progetti Common e System Framework Common utilizzato per classi ausiliarie System Framework utilizzato per la configurazione del tracing, dell’applicazione e per la gestione degli errori Panoramica di Duwamish User Services Progetto Web Codice responsabile dell’interfaccia utente Comunica con lo strato Business Façade Pesante utilizzo di Web Forms User controls Validation Controls Panoramica di Duwamish Business Services Componenti della logica di business realizzati come assembly .NET Si avvale di transazioni SQL Server DataSet ADO.NET Panoramica di Duwamish Data Services Si avvale di funzionalità di ADO.NET Utilizza prevalentemente la classe SQLDataAdapter per l’accesso ai dati Popola DataSet tipizzati disconnessi (classi che ereditano da DataSet) Informazioni di connessione prelevate da web.config I DataSet sono utilizzati per trasportare i dati tra i diversi layer Panoramica di Duwamish Layer Supplementari Business Façade Funzioni che rispecchiano i principali casi di uso scoperti durante la fase di analisi Effettua chiamate allo strato Business o a quello Data per conto dello strato User Maschera la complessità delle interazioni tra gli oggetti dello strato Business Common Codice condiviso tra i componenti Classi che ereditano da DataSet e specificano il formato di CategoryData, BookData, CustomerData, OrderData System Framework Codice che fornisce all’applicazione Servizi di sistema o di infrastruttura Non specifico dell’applicazione Obiettivi di progettazione Requisiti Non Funzionali Availability Applicazione sempre disponibile (in teoria) Le scelte di implementazione Web Farm Cosa offre al riguardo ASP.NET Lo stato delle sessioni è memorizzabile su uno State Server Rilevamento automatico dei problemi e riavvio del server Web senza interruzione di servizio Sostituzione di DLL senza interruzione di servizio Obiettivi di progettazione Requisiti Non Funzionali Maintainability Il codice dovrebbe riflettere la documentazione prodotta in fase di progettazione Il codice dovrebbe essere modularizzato per facilitare la gestione da parte di gruppi differenti Le scelte di implementazione I casi di uso rimappati nello strato Business Façade Codice segmentato in 6 progetti Visual Studio modificabili in blocco o singolarmente Obiettivi di progettazione Requisiti Non Funzionali Manageability Modifiche alla configurazione del sito senza riavvio Trace e log su file o nel log degli eventi Le scelte di implementazione Configurazione memorizzata in web.config Trace e log realizzati tramite la classe EventLog del CLR Trace verso file di testo tramite le classi FileInfo e StreamWriter del CLR ASP .NET mette a disposizione contatori delle prestazioni per ogni applicazione Web Statistiche sugli oggetti Request e Response Statistiche sulla Cache Statistiche sugli errori Statistiche sulle transazioni Obiettivi di progettazione Requisiti Non Funzionali Performance Eguagliare o superare le prestazioni della versione 4.0 di Duwamish Le scelte di implementazione ASP .NET compila le pagine in eseguibili Utilizzo del caching sull’output delle pagine di ASP .NET Pieno supporto per le Web Farm tramite memorizzazione dello stato delle sessioni su server esterni ed utilizzo di classi stateless Obiettivi di progettazione Requisiti Non Funzionali Reliability Gestione corretta degli errori Nessuna visualizzazione all’utente finale di un errore nativo Le scelte di implementazione Gestione degli errori basata su eccezioni Supporto per le pagine personalizzate di errore di ASP.NET Obiettivi di progettazione Requisiti Non Funzionali Scalability Scale up e scale out Le scelte di implementazione Scale up grazie al supporto di ASP .NET per le Web Garden Scale out grazie allo stato di sessione esterno Accesso ai componenti locale o tramite .NET remoting Obiettivi di progettazione Requisiti Non Funzionali Security Richiede l’autenticazione per prevenire lo spoofing degli URL Le scelte di implementazione Utilizzo del supporto intrinseco di ASP .NET per l’autenticazione basata su form Architettura di Duwamish Requisiti funzionali Un cliente Internet deve poter navigare nel catalogo prodotti di Duwamish Books per categoria Un cliente Internet deve essere in grado di ricercare un libro in base ai seguenti criteri: Ricerca per titolo Ricerca per autore Ricerca per ISBN Ricerca per argomento Un cliente Internet deve poter selezionare uno o più libri ed inserirli nel carrello per l’acquisto … I Diagrammi UML Diagrammi dei Casi di Uso Customer Account Management I casi di uso sono generalmente utilizzati per: Modellare il contesto di un sistema Modellare i requisiti di un sistema Esprimere i requisiti, come attività, dal punto di vista dell’utente Internet Customer Purchase Books Product Catalog Search I Diagrammi UML Diagrammi di classe search searchresults «uses» «uses» default categories «uses» book «uses» I diagrammi di classe o di struttura esprimono la struttura globale del sistema, le relazioni e le caratteristiche comportamentali I Diagrammi UML Diagrammi dei Componenti I diagrammi dei componenti sono generalmente utilizzati per: Modellare il codice sorgente Modellare i rilasci degli eseguibili Modellare Ia struttura fisica delle basi di dati Modellare sistemi adattativi Un diagramma dei componenti illustra come i vari sottosistemi software vanno a comporre la struttura globale di un sistema Web SystemFramework Business Facade I Diagrammi UML Diagrammi di Sequenza I diagrammi di sequenza sono utilizzati per: Modellare il flusso applicativo temporale : Web::book : BusinessFacade::ProductSystem : DataAccess::Books GetBooksByISBN() GetBooksByAuthor() GetBooksByNaturalLanguage() GetBooksBySubject() GetBooksByTitle() GetBookById() I Diagrammi UML Diagrammi di Deployment I diagrammi di deployment sono utilizzati per: Modellare sistemi embedded Modellare sistemi client/server Modellare sistemi altamente distribuiti Un diagramma di deployment illustra come sono configurati l’ hardware ed il software in un sistema DataAccess Database Server Database I Diagrammi UML Diagrammi aggiuntivi I diagrammi di collaborazione sono utilizzati per: Modellare il flusso organizzativo I diagrammi di stato sono utilizzati per: Modellare le relazioni tra oggetti e le transizioni di stato I diagrammi di attività sono utilizzati per: Modellare un workflow Modellare un’operazione Enterprise Templates L’esigenza I progetti software sono sempre più complessi, vasti e critici Un’architettura applicativa inefficiente può rendere tale una qualunque piattaforma Una buona architettura funziona solo se tutti rispettano le regole per implementarla Le raccomandazioni sono fini a se stesse se non lette ed utilizzate Enterprise Templates Gli obiettivi Condividere la conoscenza e l’esperienza aziendale in fase di progettazione per: Ridurre il problema della “Lavagna Bianca” Ridurre il problema della “Cabina di Pilotaggio” Semplificare l’individuazione delle scelte corrette Enterprise Templates La soluzione Elementi da escludere Enterprise Template Struttura applicazion e (progetti, codice,…) Elementi da includere Policy (TDL) Guida (contesto e html) User Services Layer Web Forms Le pagine Web sono prodotte dinamicamente dal server Web Interfaccia utente divisa in due componenti Componenti visuali Logica dell’interfaccia utente Applicazione non dipendente dal browser Modello ad oggetti coerente Programmazione guidata dall’evento Business Logic Layer Creazione dello strato di Business Utilizzato per incapsulare “le regole di business” in uno strato separato rispetto ai dati ed ai servizi di interfaccia Calcolo delle tasse Calcolo delle spese di spedizione Verifica del formato di un indirizzo email Stateless Composto di classi .NET Data Access Layer (DAL) Creazione dello strato Data Riceve le richieste dallo strato di Business Inserimento, aggiornamento, cancellazione Potrebbe ricevere richieste direttamente dall’interfaccia utente o dallo strato Business Façade Semplici visualizzazioni Utilizza stored procedure per recuperare i dati Restituisce i dati allo strato Business /Façade Flusso dell'Applicazione Navigazione sulle categorie User Services Layer CategoriesModule.ascx Invoca BusinessFacade.ProductSystem.GetCategories Business Façade Layer Invoca DataAccess.Categories.GetCategories Data Services Layer Invoca la Stored Procedure GetCategories SQL Server La Stored procedure GetCategories preleva i dati Flusso dell'Applicazione Ricerca User Services Layer SearchModule.ascx Invoca BusinessFacade.ProductSystem.GetSearchItems Business Façade Layer Invoca il giusto metodo DataAccess.Books.? ? = Il nome del metodo dipende dal criterio di ricerca Data Services Layer Invoca la Stored Procedure appropriata al tipo di ricerca SQL Server GetBooksByTitle GetBooksByISBN GetBooksByAuthor … © 2002 Microsoft Corporation. All rights reserved. This presentation is for informational purposes only. Microsoft makes no warranties, express or implied, in this summary.