Scaricare la presentazione
La presentazione è in caricamento. Aspetta per favore
1
Delphi Day 2004 Piacenza 9 giugno 2004 InstantObjects
Un Object Persistence Framework Open Source per Delphi 5,6,7 pro e Kylix 3 presentato da Carlo Barazzetta
2
La mappatura object/relational
Per ridurre le distanze tra il modello OO e il modello relazionale Per memorizzare oggetti in strutture relazionali (tabelle/record) Per sviluppare applicazioni OO senza database ad oggetti Questo meccanismo di mappatura è contenuto in un OPF (Object Persistence Framework) Rif:
3
Cosa è un O.P.F. Un layer software che consente la persistenza degli oggetti del modello su vari mezzi di storage (database SQL o file oriented, file XML...). Il sistema di mappatuta O/R è una parte dell'OPF. Che scopo ha un OPF Disaccoppia le classi del modello dal modo in cui verranno salvate le istanze rendendo il meccanismo di persistenza trasparente al programmatore
4
Vantaggi di un OPF Indipendenza dal motore e dalla struttura del database Il codice non vi fa mai riferimento esplicitamente Possibilità di sfruttare la metodologia OO In particolare l'incapsulamento e l'ereditarietà Significativa riduzione delle ridondanze nel codice Rispetto ad un approccio “tradizionale” basato su DataSet Maggior riutilizzo del codice
5
Svantaggi di un OPF Curva di apprendimento più ripida
Specie per chi ha esperienza con l'approccio “tradizionale” Delphi di accesso ai dati. Necessità di maggiori skill per i programmatori Minor sfruttamento delle caratteristiche dei server database Programmazione lato server, locking, transazioni... Prestazioni generalmente inferiori Rispetto ad applicazioni C/S o 3 tier ben architettate
6
InstantObjects: Storia
Background Una (sfortunata) storia come prodotto commerciale Creato in Danimarca da Seleqt Difficoltà ad avere il support adeguato Progetto Open-Source Rilasciato sotto licenza MPL L'interesse è cresciuto grazie alla disponibilità dei sorgenti. Una solida base di utenti/sviluppatori ...compresi noi di Delphi & Dintorni!
7
Un semplice esempio Una classe semplicissima (TPhone)
Definiamo la classe e le sue proprietà Osserviamo il codice sorgente prodotto (la modifica è bidirezionale) Utilizziamo un broker per creare il database Osserviamo la struttura creata Creiamo una piccola interfaccia utente Aggiungere un oggetto Scaricare gli oggetti dal db
8
IO: Supporto a design-time
Il Model Explorer Class editor Class treeview Database builder Il generatore di codice Struttura delle classi in InstantObjects Esempio di codice generato (occhio ai commenti!) Il file mdr Contiene la mappatura (i commenti) Viene generato a partire dai sorgenti e è incluso nell'exe
9
Persistence Layer: classi
TInstantObject Classe base per tutti gli oggetti Tip: crearne sempre una propria TInstantAttribute Base per tutti gli attributi oggetti di classi derivate da TInstantAttribute, ed esposti come proprietà da TinstantObject TinstantQuery Accesso ai dati in “simil-sql” TInstantConnector e i Brokers Un broker isola le specificità di un back-end e/o di una libreria di accesso ai dati
10
Presentation Layer: classi
TInstantExposer Un dataset con i campi mappati sugli attributi di un oggetto (ObjectClassName e FieldOptions) Può mostrare un solo record/oggetto o un elenco di oggetti (amObject, amContent) Per usare i componenti data-aware Supporta lettura e scrittura Permette il filtraggio lato client (“a valle”) TInstantSelector Un Exposer con un TInstantQuery interno Per leggere dal DB elenchi di oggetti filtrati Uso di DataSetFields per Master-Details
11
Presentation Layer: esempio
Intro Demo: Un Modello più complesso: uso di attributi semplici, Part, Parts, Reference, References Una interfaccia utente più evoluta: Ereditarietà visuale Uso di Selector ed Exposer (amObject e amContent) ComboBox (uso dei field “object reference”) Controlli di validità: Set(Property), BeforeStore... isValidObject
12
Esempio: Demo “Primer”
Esempio da studiare bene e provare a modificare prima di iniziare con nuovi progetti. Modello semplice ma completo Ereditarietà e incapsulamento Possibilità di testare i vari brokers Possibilità di provare il linguaggio simil-sql Generatore Random di dati Esportazione in XML del modello dati Versione compatibile con Kylix 3
13
Esempio: Sport Club Manager
Generazione alternativa sorgenti I.O. e struttura DB. Il problema delle uses circolari: Classi di base e classi applicative Mappatura “Viste logiche” (solo per broker SQL) Soluzioni efficaci a problemi complessi: Gestione multilingua sui dati
14
Perché Scegliere InstantObjects?
Punti di forza Molto RAD rispetto alla concorrenza Molto flessibile a livello di programmazione Supporto per i controlli data-aware Disponibilità di diversi Brokers di accesso ai dati Disponibile per Delphi 5,6,7 Pro e Kylix 3 E' completo e funziona!
15
Il problema del Porting
Struttura del DB rigida Impossibile fare un porting “parziale” Il problema dell'Id univoco contro le chiavi multiple. Se si è lavorato bene la parte di presentation e le stampe si possono salvare. Le regole di business vanno completamente riscritte (ma si semplificano!)
16
InstantObjects: disponibilità
Sito ufficiale: Sorgenti, demos, help CVS Newsgroup italiano e internazionale ospitato da Delphi & Dintorni: news://news.delphiedintorni.it
17
Conclusioni Un OPF funzionante gratis per Delphi Professional e Kylix!
Addio record, è stato bello finché è durato! Un bel passo avanti... per i più coraggiosi!
18
La situazione del progetto Open Source
Carlo Wolter: Project Manager Rilasciata la versione compatibile con Kylix 3 (compreso il demo Primer) Lavori in corso: miglioramento delle prestazioni Supporto agli attributi Currency Nuovi Brokers (IBO, XML...) Analisi external Parts/References Feature Requests
19
Feature requests
20
Developer list
Presentazioni simili
© 2024 SlidePlayer.it Inc.
All rights reserved.