© 2005 Ethea Introduzione a InstantObjects Per chi conosce altri OPF Per chi non conosce altri OPF A cura di Nando Dessena
© 2005 Ethea Sommario 1: Mappatura object/relational e OPF 2: InstantObjects come OPF 3: Usare InstantObjects 4: Partecipare allo sviluppo 5: InstantObjects Q&A
© 2005 Ethea 1: Mappatura object/relational e OPF (1) 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 Un simile meccanismo di mappatura è detto OPF (Object Persistence Framework)
© 2005 Ethea 1: Mappatura object/relational e OPF (2) Cosa è un OPF Un layer software che consente la persistenza degli oggetti del modello su vari mezzi di salvataggio (database, file di testo, file XML...). Che scopo ha un OPF Disaccoppia le classi del modello dal modo in cui verranno salvate le istanze, permettendo di variare quest'ultimo senza toccare le prime.
© 2005 Ethea 1: Mappatura object/relational e OPF (3) OPF: Vantaggi... Indipendenza dal motore e dalla struttura del DB Possibilità di sfruttare la metodologia OO Significativa riduzione delle ridondanze nel codice...e svantaggi Curva di apprendimento più ripida e necessità di maggiori skill nei programmatori Minor sfruttamento delle caratteristiche dei server Programmazione lato server, locking, transazioni... Prestazioni in taluni casi inferiori
© 2005 Ethea 1: Mappatura object/relational e OPF (4) Creare un OPF personalizzato Concettualmente non è difficile OPF general-purpose per Delphi Prima Bold (BoldSoft), poi ECO (Borland) Più di un OPF; classe Enterprise; disponibile solo in.NET InstantObjects Open source; curva d'apprendimento morbida TechInsite OPF (tiOPF) Open source; curva d'apprendimento ripida; progetto molto attivo Altri (Obiwan, DePO) Open source, mai decollati
© 2005 Ethea 2: InstantObjects come OPF (1) I pregi principali di InstantObjects... Molto facile e molto RAD Buona integrazione nell'IDE di Delphi Molto flessibile a livello di programmazione BOM Supporto per i controlli data-aware Tramite TInstantSelector e TInstantExposer Una solida base di utenti/sviluppatori...compresi noi di Ethea!
© 2005 Ethea 2: InstantObjects come OPF (2)...E i difetti attuali: Quelli comuni a molti progetti open source Documentazione talvolta incompleta Un pizzico di organizzazione in più non guasterebbe Può porre limitazioni sulla struttura del database Struttura delle chiavi, riferimenti in campi Memo Problemi risolti o attenuati nella versione 2 e successive. Prestazioni non sempre all'altezza Ma migliorate nella versione 2 grazie a nuovi broker e nuove ottimizzazioni
© 2005 Ethea 3: Usare InstantObjects (1) Un esempio con InstantObjects Intro Definire il modello Il Model Explorer Attributi semplici, riferimenti e container Generare il codice Uno sguardo al codice generato Il file MDR Modificando il codice il modello è aggiornato Introdurre semplici business rules
© 2005 Ethea 3: Usare InstantObjects (2) Creare il database Panoramica sui broker Uno sguardo alla struttura Una semplice interfaccia utente Lo strato di presentazione data-aware Esempi di tecniche comuni Creare o modificare un oggetto Fare una copia di un oggetto Ricerche e filtri tramite i selector
© 2005 Ethea 3: Usare InstantObjects (3) Caratteristiche avanzate Definire e applicare regole personalizzate Property setter, BeforeStore Gli attributi BeforeCreateAttributes Input/Output in XML InstantReadObject, InstantWriteObject TInstantXMLProducer, TInstantXMLProcessor La unit InstantUtils
© 2005 Ethea 3: Usare InstantObjects (4): Il Persistence Layer 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 tramite IQL TInstantConnector e i Broker Un broker isola le specificità di un back-end e/o di una libreria di accesso ai dati
© 2005 Ethea 3: Usare InstantObjects (5): Il Presentation Layer TInstantExposer Un dataset con i campi mappati sugli attributi di un oggetto ( ObjectClassName e FieldOptions ) Può mostrare un solo record/oggetto ( amObject ) o un elenco di oggetti ( amContent ) Per usare i componenti data-aware Supporta lettura e scrittura Permette il filtraggio lato client (a valle) TInstantSelector Un InstantExposer con una TInstantQuery interna Per leggere dal DB elenchi di oggetti I DataSetField per le strutture master/detail
© 2005 Ethea 3: Usare InstantObjects (6) In sintesi... Un OPF come IO è indispensabile: Per creare applicazioni DB OO senza DB OO Per supportare database di vari tipi nella stessa applicazione È utile: Per tutte le applicazioni database È rischioso: Per applicazioni multi-utente ad elevato tasso di concorrenza Usare un OPF richiede maggior preparazione Anche se IO è tra i più facili
© 2005 Ethea 4: Sviluppo di InstantObjects L'organizzazione del progetto e il ruolo di Ethea e Delphi&Dintorni Le risorse a disposizione del progetto I newsgroup su D&D Roadmap Rilascio versione 2.0 Ristrutturazione e miglioramento documentazione Sia per utenti che per sviluppatori Reclutamento e stabilizzazione del team di sviluppo Lavoro sulle nuove funzionalità Come partecipare allo sviluppo di InstantObjects
© 2005 Ethea 5: InstantObjects Q&A news://news.delphiedintorni.it Domande?