Introduzione a InstantObjects
description
Transcript of Introduzione a InstantObjects
© 2005 Ethea
Introduzione a InstantObjects
Per chi conosce altri OPFPer chi non conosce altri OPF
A cura di Nando [email protected]
© 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
www.instantobjects.org
www.sourceforge.net/projects/instantobjects/
news://news.delphiedintorni.it
www.ethea.it
Domande?