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