Daniel Mauric Software Architect Novi Sad
Član broj: 3279 Poruke: 31 *.dialup.neobee.net.
|
Tacno je da bilo koja TPersistent klasa moze da se stream-uje i zapise u file/blob/bilo sta, ali to samo po sebi nije preterano korisno, kako englezi vole da kazu "devil is in the detail"
Ideja OPF-a je da se aplikacija odvoji u par segmenata (layer-a), obicno na sledeca 3:
- BO layer (Business objects)
- UI layer (Presentation)
- DB layer (Persistence)
i da se onda Persistence layer automatizuje do odredjene mere.
Probacu da ilustrujem o cemu se zapravo radi i cemu sluzi:
RAD pristup:
Napravite formu, dodate query upisete sql, dodate grid, edit-e, dugmice i ostale kontrole, onda upisujete kod u event handlere na formu, npr OnClick, AfterScroll i slicno. Ovo je odlicno za prototip-ove i jednostavne aplikacije, medjutim kako pravila postaju slozenija, tako ubacijete jos koda u razne event handler-e, i stvari postaju teze za pracenje/kontrolisanje, pogotovu kada ista pravila treba primeniti na drugim formama. Mislim da svako ko je probao da napravi slozeniji program ovom metodom zna o cemu pricam. :)
Sustina problema je zapravo u tome sto poslovna pravila nigde eksplicitno ne postoje, vec ih rucno pokusavate primenjivati svuda gde bi se mogla prekrsiti.
OO pristup:
Napravite business klase, njihove osobine, relacije i pravila. Korsitite OPF, koji sluzi za automatsko citanje/pisanje u bazu, i tek na kraju pravite forme. Tako je program potpuno funckionalan bez i jedne forme. Ovo u olaksava rad jer tacno znate gde ide koji kod i samim tim gde da trazite greske. Takodje mozete isti kod iskoristi i za fat client-e i za web interface, jer je razlika samo u UI layer-u. OPF se brine o tome da se sve upise u bazu i obicno omogucava abstrakciju na samim DB engine-om, tako da lako mozete promeniti backend iz Interbase-e u MSSQL, Paradox ili bilo koji drugi engine, a da se to uopste ne tice ostala 2 layer-a. Dakle vrlo bitno je odvojiti layer-e:
- UI layer zna za BO layer ali ne i za DB layer
- DB layer zna za BO layer ali ne i za UI layer
- BO zna za DB layer, ali funkcionise nezavisno i ne ulazi u detalje DB layer-a
Ima to jos dosta toga, mogao bih pisati do sutra, ali ovo je sustina.
Sto se moje originalne poruke tice, primeticete da sam je poslao pre 2 godine. U medjuvremenu sam odustao od pravljenja svog OPF-a i izabrao sam najbolju komercijalnu implementaciju, Bold for Delphi. Bold je Svedska firma koji je Borland kupio 2003-e i spakovao u Delphi-u 7 Architect. Iz njega je nastao ECO, koji stizu uz Delphi 8 i u principu je .Net rewrite Bold-a. Bold je neverovatan alat jer obuhvata mnogo vise nego klasicni OPF-i, sledi kratka nepotpuna lista feature-a:
- Import/Export modela u Rational Rose i ModelMaker
- Automatsko generisanje baze (podrzava BDE, Interbase, MSSQL, ADO, XML ...)
- OCL (Object Constrain Language) - neverovatno korisno
- derived (izvedene) attribute/relacije
- Model/DB evolution (automatsko resttruktuiranje baza pri promeni modela)
- Optimistic/Pesimistic Locking (sprecava istovremeno menjanje istog podatka od strane dva ili vise korisnika)
- AFP (Auto Form Provider) - generise forme koji se mogu koristi tokom razvoja/debuging-a
- Object space trasakcije i Undo handler
i jos mnogo toga.
Osnovna mana Bold-a je sto je ogroman i treba dosta vremena da se nauce/shvate osnove i udje u fazon, a dokumentacija nije bas najbolja.
Vrlo rado bih stupio u kontakt sa onima koji koriste Bold.
Pozdrav,
Danny
|