Real World data access layers DataSet vs. Custom entities Pierre Greborio Software Architect – PEWay SrL Microsoft MVP – Solutions Architect.

Slides:



Advertisements
Presentazioni simili
Introduzione a Windows Communication Foundation
Advertisements

Perché.NET di Marco Maraglino don't worry...B-bright !
UNIVERSITÀ DEGLI STUDI DI MODENA E REGGIO EMILIA
Progettazione dei Sistemi Interattivi (A.A. 2004/05) - Lezione 2 1 Progettazione e Sviluppo di Software ad Oggetti 4 OBJECT-ORIENTED ANALYSIS Processo.
Elaborazione di Franco Grivet Chin
Accesso ai dati su Relational Database Management Systems LSA - Laboratorio di Sistemi Informativi Economico-Aziendali Salvatore Ruggieri Dipartimento.
Visual Studio Tools For Office 2005 Fabio Santini. NET Senior Developer Evangelist Microsoft Italy.
Crea il tuo sito con Web Matrix e il Web Hosting su ASP.NET
Fabio Mignani Senior Technology Specialist
Smart Client: gestire informazioni in modalità disconnessa
Training Microsoft Visio Marzo, 2006
ASP.NET – Data Binding Davide Vernole .NET MVP.
Introduzione al datawarehouse
Massimiliano Bosco – Aliware – Torino – Project 2003 Sviluppare Soluzioni EPM con Project Server (2/4)
1 Smart Client distribuzione e aggiornamento Fabio Santini.
Strumenti di sviluppo Microsoft Campagna incentivi per Software Assurance Opportunità di vendita.
Connessione con MySQL.
una interfaccia internet per il sistema Momis
Università degli Studi di Modena e Reggio Emilia
3° Workshop "Accessibilità: primi passi per un mondo fruibile da tutti" Alessandro Olivi Modellazione di pagine WEB e accessibilità
Progetto MODA-ML Biella, 30 novembre 2001 Sistema di interscambio messaggi Luca Mainetti HOC - Hypermedia Open Center Dipartimento di Elettronica e Informazione.
1 Università della Tuscia - Facoltà di Scienze Politiche.Informatica 2 - a.a Prof. Francesco Donini Active Server Pages.
1 IT FOR BUSINESS AND FINANCE ACCESS INTRODUCTION.
Architettura Three Tier
Modello Relazionale Definisce tipi attraverso il costruttore relazione, che organizza i dati secondo record a struttura fissa, rappresentabili attraverso.
1 Linux day /11/2003 ADA. Dai requisiti al progetto Come nasce il progetto di una piattaforma e-learning Open Source.
1 Titolo Presentazione / Data / Confidenziale / Elaborazione di... ASP. Net Web Part e controlli di login Elaborazione di Franco Grivet Chin.
Introduzione ad ASP.net
Architettura Java/J2EE
1 Titolo Presentazione / Data / Confidenziale / Elaborazione di... ASP. Net View State e controlli Elaborazione di Franco Grivet Chin.
DBMS ( Database Management System)
SVILUPPO MODERNO DI APPLICAZIONI PER WINDOWS
Chinosi Michele – matr.: La seconda release di Virtuose basata su database XML La seconda release di Virtuose basata su.
Windows Azure Community Tour… la vendemmia Mario De Ghetto Microsoft MVP – Visual Basic Development Iscritto allOrdine degli Ingegneri di Belluno Community.
Architettura di applicazioni enterprise Michele Aponte - DotNetCampania Team.
Analisi (Analista) Progettazione (Progettista) Sviluppo o Traduzione (Sviluppatore) Documentazione.
Fare clic per modificare lo stile del titolo Fare clic per modificare stili del testo dello schema – Secondo livello Terzo livello – Quarto livello » Quinto.
Firenze – Festival della Creatività 2009 Comm.it s.r.l. – Ing. Davide Rogai, Ph.D. – Software >> fast on demand software.
BIRT Business Intelligence Reporting Tools
Sistemi Informativi sul Web
1 Titolo Presentazione / Data / Confidenziale / Elaborazione di... Data Access Layer.
Sviluppo Web Agile con Castle MonoRail Diego Guidi DotNetMarche.Start() 12 ottobre 2006.
14/06/2008 – Matteo Baglini Mail: Blog:
IMPLEMENTAZIONE TECNOLOGIE:HIBERNATE & JAVA RMI.
Presentazione Data Base Ovvero: il paradigma LAPM (Linux - Apache - PHP - mySQL) come supporto Open Source ad un piccolo progetto di Data Base relazionale,
© 2005 Ethea Introduzione a InstantObjects Per chi conosce altri OPF Per chi non conosce altri OPF A cura di Nando Dessena
ASP – Active Server Pages Introduzione Pagine Web Statiche & Dinamiche(ASP)
Java Enterprise Edition
N4N Platform Architecture PA Inside outlook.
Pagine ASP parte 3 I data base Stefano Schacherl.
Eprogram informatica V anno. ASP.NET Introduzione ASP.NET (Active Server Page) è il linguaggio che, sfruttando la tecnologia.NET, permette di: -scrivere.
Mapping Database Atsilo Componenti : Antonio Cesarano Luca Di Costanzo Luigi Lomasto.
Sviluppo per Pocket PC con SQL Server CE 2.0 Fabio Santini Silvano Coriani.NET Developer Evangelist Microsoft Corporation.
MySQL Database Management System
TW Asp - Active Server Pages Nicola Gessa. TW Nicola Gessa Introduzione n Con l’acronimo ASP (Active Server Pages) si identifica NON un linguaggio di.
Database Elaborato da: Claudio Ciavarella & Marco Salvati.
Progettazione di dati e applicazioni per il Web S. Ceri, P. Fraternali, A. Bongio, M. Brambilla, S. Comai, M. Matera Copyright © The McGraw-Hill.
4/18/ :18 AM.
© 2015 Giorgio Porcu - Aggiornamennto 28/03/2015 UdA 1A Database Progettazione Fisica G IORGIO P ORCU
Tecnologie lato Server: i Server Web © 2005 Stefano Clemente I lucidi sono in parte realizzati con materiale tratto dal libro di testo adottato tradotto.
Lezione 5 - SQL. Linguaggi per DB Per interagire con le basi di dati occorre un linguaggio Linguaggio SQL (Structured Query Language), linguaggio standardizzato.
Eprogram informatica V anno.
Presenta – #wpc15it1 BI005 - Real Power BI Franco Perduca Factory Software srl
Architetture software
Gaetano Anastasi Beatrice Miotti Lorenzo Guerriero Monica Pellegrinelli Massimiliano Sartor Giorgio Macauda SQLite Esempi di utilizzo della libreria in.
Modulo 5 – Database ACCESS LICEO SCIENTIFICO “ B. RESCIGNO COMPUTER SCUOLA PIANO INTEGRATO 2008/09 ESPERTO prof.ssa Rita Montella.
PHP HyperText Prepocessor.  Linguaggio di scripting lato server sviluppato per generare pagine web.  Permette ad un sito web di diventare dinamico 
* R AMAN K AZHAMIAKIN O SCAR Z G IOVANNI D E ITT M. B UONARROTI, T RENTO A NDROID D EVELOPMENT P ERSISTENZA.
FESR Trinacria Grid Virtual Laboratory AMGA Web Interface Salvatore Scifo TRIGRID Second TriGrid Checkpoint Meeting Catania,
ASP – Active Server Pages - 1 -Giuseppe Tandoi ASP – Active Server Pages Tecnologia per lo sviluppo di pagine dinamiche.
Transcript della presentazione:

Real World data access layers DataSet vs. Custom entities Pierre Greborio Software Architect – PEWay SrL Microsoft MVP – Solutions Architect

Agenda Architetture di riferimento Tecniche di accesso al RDBMS Business objects Metodi di accesso al dato persistente Autonomous business object Data mapper

Layering E’ una delle tecniche più comuni per separare sistemi software complicati Ogni layer superiore usufruisce dei servizi del layer immediatamente inferiore Il layer inferiore non sa nulla del layer superiore

…layering Il layering presenta anche degli svantaggi: E’ suscettibile delle modifiche a cascata se si aggiunge un campo nel database che deve essere visualizzato nella UI Può risultare un decadimento nelle prestazioni il layering presuppone una trasformazione da una rappresentazione ad un’altra

I layer principali Presentazione Fornitura di servizi (facade), visualizzazione di informazioni (UI), comandi della shell, ecc. Domain (o anche business logic) Logica applicativa (è il vero cuore del sistema) Data Source Comunicazione con i database, sistemi di messaggistica, applicazioni esterne, ecc.

Layer di presentazione Contiene la logica di interazione tra l’utilizzatore ed il software Spazia da un comando shell a un’interfaccia grafica ricca (Windows o Web) Potrebbe essere anche la facciata di un web service

Layer di dominio Detto anche Business Layer o Business Logic Include i calcoli basati sui dati di input ed i dati storicizzati Valida tutti i dati che arrivano dalla presentazione

Layer di data source Serve a far comunicare l’applicazione con altri sistemi In una applicazione enterprise solitamente questo layer si occupa della persistenza su database relazionale Molto spesso le componenti che si occupano della persistenza si indicano sotto il nome di DAL (Data Access Layer)

Componenti DAL Creare record nel database da un BO Leggere record dal DB per generare BO Aggiornare record nel DB in base a modifiche di un BO Cancellare un record nel DB Spesso si parla di CRUD: Create, Read, Update e Delete

Layering in pratica Solitamente il layer di dominio nasconde completamente il layer di accesso al dato Capita anche che il layer di presentazione acceda al dato Una soluzione può non essere pura, ma essere migliore in pratica Usare il buon senso è la cosa migliore, se poi non è perfetto…refactoring !!

Accedere al RDBMS Uso un ORM Mi scrivo un ORM Mi scrivo una DAL personale Mi basta il designer di Visual Studio.NET Convinco il mio capo a passare a MS Access o Excel !

ORM Object Relational Mapping tool Server a mappare il mondo object oriented al mondo del database relazionale Vanno dai generatori di codice ai mapper (XML) puri I più famosi: NHibernate, ORM.NET, EntityBroker, IBatis.NET, NPersist, WilsonORMapper, …

ORM custom Ha senso solamente se volete venderlo come prodotto Richiede un grande investimento di risorse Bisogna conoscere molte casistiche Ce ne sono già tanti

DAL personale Sviluppare l’accesso al dato in base alle proprie esigenze Considerare sempre lo scenario di riferimento (applicazione monolitica, client- server, distribuita, su più database eterogenei, ecc.)

Designer di VS.NET Logica Drag&Drop E’ perfetto per la prototipazione Attenzione, crea un monolite !

Business Objects La tecnologia usata può influenzare il DAL Classi fortemente tipizzate DataSet DataSet tipizzati XML

Demo Persona Codice Nome Cognome DataDiNascita CodiceFiscale Business Object

Classi tipizzate Pro Astrazione Performance Serializzazione Manutenzione Tipizzazione forte Contro Collezzioni tipizzate complesse Supporto alla concorrenza Integrazione limitata

DataSet Pro Funzionalità native Supporto alle collezioni Manutenzione Serializzazione Concorrenza Contro Non supportano la singola istanza Non supportano il new Performance Tipizzazione debole

DataSet tipizzato Pro Funzionalità native Supporto alle collezioni Concorrenza Serializzazione Tipizzazione forte Contro Non supportano la singola istanza Non supportano il new Performance

XML Pro Integrazione Serializzazione Accoppiamento flessibile Contro Tipizzazione debole Performance Difficile da manutenere

Metodi di accesso al DB Autonomous business object L’oggetto di business contiene anche i metodi di accesso al dato Pattern: Active record Mappers L’oggetto di business e l’entità nel DB hanno una differente struttura Molte parti dell’oggetto, quali collezioni e ereditarietà, non sono presenti nel DB

Active record pattern L’oggetto contiene sia i dati che il comportamento I dati (non tutti) devono essere persistiti sul DB Persona Codice Nome Cognome DataDiNascita CodiceFiscale Insert Update

Demo CREATE TABLE Persone ( [ID]INT IDENTITY PRIMARY KEY, [Nome]VARCHAR(50) NULL, [Cognome]VARCHAR(50) NOT NULL, [DataDiNascita]DATETIME NULL, [CodiceFiscale]CHAR(16) NULL ) Active Record

Mapper Divisione netta fra il mondo di business ed il mondo della persistenza E’ l’approccio standard degli ORM Ideale per: Astrarre la persistenza Sviluppo in team Unit testing più granulare

Mapper Patterns Data Mapper Table Data Gateway Row Data Gateway

Data mapper L’oggetto contiene i dati che il comportamento di business I metodi di persistenza stanno in una classe esterna ma si riferiscono sempre alla classe da mappare PersonaMapper Crea() Modifica() Cancella() Leggi() Persona Codice Nome Cognome DataDiNascita CodiceFiscale

Table Data Gateway La TDG contiene tuttale la logica di accesso al DB Solitamente è senza stato Può mappare più entità di business PersonaGateway Crea(Codice, Nome, …) Modifica(Codice, Nome,…) Cancella(Codice) Leggi(Codice) Persona Codice Nome Cognome DataDiNascita CodiceFiscale

Row Data Gateway E’ un’estensione del Data Table Gateway Da usare quando la logica di ricerca diventa complessa PersonaGateway Crea(Codice, Nome, …) Modifica(Codice, Nome,…) Cancella(Codice) Persona Codice Nome Cognome DataDiNascita CodiceFiscale PersonaFinder Leggi(Codice) LeggiPerCodiceFiscale(CF) LeggiPerCognome(Cognome)

Classi DB helper Sono classi general purpose personalizzate per la persistenza Factory di connessioni Conversioni DB type -.NET type Factory di comandi

Data Access Application Block

Considerazioni Il DataSet tipizzato è ottimale per il pattern Active Record Il DataSet è ottimale nelle architetture statefull o nelle lookup in cache Le classi fortemente tipizzate sono molto flessibili e meno soggette ad errori di utilizzo

Domande ?

Riferimenti MSDN Data Patterns MSDN Data Access Architecture Guide MSDN Data Access Application Block Patterns of Enterprise Application Architecture