Le novità di InstantObjects 2.0 Per chi già conosce InstantObjects A cura di Nando Dessena [email protected] © 2005 Ethea Sommario 1: 2: 3: 4: 5: 6: Il processo di sviluppo di InstantObjects Nuove piattaforme e nuovi broker Nuovi tipi di attributi Novità sul layer di mappatura O/R Performance, profiling & debugging Varie (DB evolution, InstantPump, bug fix...) 7: Oltre InstantObjects 2 8: InstantObjects 2 Q&A © 2005 Ethea 1: Il processo di sviluppo di InstantObjects (1) Prendere confidenza con una cospicua base di codice (non documentata) Individuare maintainer Unit test & documentazione Ancora in via di definizione Cosa manca al rilascio di IO 2.0 Consolidamento di alcune nuove feature (come External Storage) e relativi bug fix Completamento del DB Evolver Documentazione utente e packaging © 2005 Ethea 1: Il processo di sviluppo di InstantObjects (2) Le feature più richieste per la versione 2: © 2005 Ethea 2: Nuove piattaforme e nuovi broker Nuovi port Kylix 3 su Linux (con relativo PrimerCross) Delphi 2005 (solo Win32) FPC/Lazarus (tranne presentation e supporto a design time) Nuovi broker Flat-file in formato XML (con alcune limitazioni, specie in IQL - clausole WHERE e ORDER BY) Nexus DB (v1 e v2) UIB (alte prestazioni, per InterBase e Firebird) © 2005 Ethea 3: Nuovi tipi di attributi TInstantCurrency Per memorizzare valori monetari Mappato come currency o BCD a seconda dei database Attenzione: non è un tipo di dato universale TInstantGraphic Memorizza immagini grafiche in campi BLOB Riconosce automaticamente il formato Demo In Primer e PrimerCross © 2005 Ethea 4: Il layer di mappatura O/R (1) TInstantConnector.OnGenerateId Consente di adottare altri metodi di generazione Id, invece del GUID predefinito Esempio: usare una sequence In futuro è prevista un'implementazione out-ofthe-box di vari altri sistemi IdDataType e IdSize Per decidere tipo e/o dimensione dei campi Id Formato BLOB (part, parts, references) Binario o XML (quindi leggibile e modificabile) © 2005 Ethea 4: Il layer di mappatura O/R (2) External Storage Per memorizzare part, parts e references in strutture relazionali Part Aggiunta di Class e Id alla tabella master Come avviene da sempre per i reference Parts, References Aggiunta di una tabella detail (1:n) di riferimenti Nota: le classi non sono mai “embedded” ma sempre “stored” Demo: Primer e PrimerExternal © 2005 Ethea 5: Performance, profiling & debugging Statement cache Mantiene una cache di statement SQL preparati (tramite i relativi dataset) a livello di Broker Risparmia il tempo necessario per la “prepare”... Operazione onerosa con alcuni database ...In cambio di un po' di RAM Demo (Primer) Primer: nuovi (significativi) test su Retrieve Statement logging Embrionale – richiede $DEFINE e ricompilazione © 2005 Ethea 6: Varie (1) TInstantPump per migrare oggetti fra DB ...di broker differenti ...di modello uguale ma strutture differenti Es. formato BLOB binario -> XML TInstantDBEvolver Analizza la struttura di un database “target” ed è in grado di allinearla ad un certo modello aggiornato Supporta aggiunta, eliminazione e modifica (di tipo o dimensione) di classi e attributi Non ancora completo, comunque... Demo © 2005 Ethea 6: Varie (2) TInstantSelector.OnProgress Compatibilità con ModelMaker 8 Feedback in caso di lunghe operazioni di fetch Richiede l'aggiunta di IOMETADATA ai sorgenti Migliorie a TInstantConnectionManager Possibilità di utilizzo non visuale Salvataggio file .con o .xml BeforeStore anche per oggetti embedded A supporto dell'applicazione di business rules Decine di bug fix © 2005 Ethea 7: Oltre InstantObjects 2 Consolidare l'organizzazione delle risorse Documentare, documentare, documentare Valutare sistemi di documentazione del codice Completamento della copertura dei test Nuove feature Classi Proxy per scaricare lunghi elenchi di oggetti in tempi brevi Un broker 3-tier Struttura database più flessibile Con possibilità di lavorare con database preesistenti © 2005 Ethea Es. usare Id come PK invece che Class + Id 5: InstantObjects 2 Q&A www.instantobjects.org www.sourceforge.net/projects/instantobjects/ news://news.delphiedintorni.it www.ethea.it [email protected] Domande? © 2005 Ethea