Download presentation
Presentation is loading. Please wait.
1
Komponentni model COM v praksi
Stanko Plohl Tomaž Novak Dejan Zilli (Slika slavne trojice v čolnu po delu Caf eliminatorja) Pozdrav in predstavitev ekipe. Nova Vizija d.o.o.
2
Vsebina problem: uporabniki želijo sami vplivati na obliko poročil
osnovni principi komponentnega modela COM Microsoft Word kot strežnik COM razvoj COM aplikacij v orodju Delphi naša rešitev Naše predavanje bo bolj praktične narave. Spopadli smo se s problemom, kako pripraviti poročila, kakršna si uporabniki želijo. Povedali nekaj o osnovnih principih komponentnega modela COM, povedali bomo nekaj o objektnem modelu urejavalnika besedil Microsoft Word. Ker smo naš primer rešili z orodjem Delphi bomo povedali nekaj o tem, kako se v tem orodju dela s komponentami COM. Za konec bomo prikazali še delovanje naše rešitve.
3
Komponentni model COM Temelji na OLE 2 (Object Linking and Embedding)
DCOM ActiveX COM+ Microsoft je leta 1993 prenovil svojo tehnologijo za gradnjo sestavljenih dokumentov, imenovano OLE 1 (Object Linking and Embedding), ki je temeljila še na dinamični izmenjavi podatkov in je bila realizirana kot množica sporočil med okni aplikacij (funkciji PostMessage in SendMessage). Tehnologija OLE 2 je imela nove temelje in je ščasoma prerasla komponentni model COM. Ob razmahu interneta in poskusih Microsofta na tem področju se je kar na lepem imenovalo vse, povezano z COM ActiveX, pozneje pa je vseeno obveljalo, da se ActiveX imenujejo samo vizualni gradniki. S prihodom NT 4.0 je COM prebil mejo enega računalnika in dobil porazdeljeno različico DCOM. S prihodom Windows 2000 je dobil mnogo močnejši runtime, ki je združil nekatere prej samostojne strežnike, denimo transakcijski, dodal nove funkcionalnosti in ime COM+.
4
COM standard binarni standard
5
COM standard (2) kreiranje COM objekta
6
COM standard (3) tip strežnika je za odjemalca transparenten
7
COM standard (4) meta podatki, avtomatizacija
8
Microsoft Word Application Document Range, Selection Table FormField
Microsoft Word ima zelo razvejan objektni model. Praktično lahko vse, kar lahko naredimo interaktivno, naredimo tudi programsko preko metod in lastnosti, ki jih ponuja okrog 200 vmesnikov. Napisanih je nekaj pomebnjejših uporabljenih objektov. Kaj predstavljajo dovolj dobro opisujejo že njihova imena. Tako preko metod in lastnosti Application objekta krmilimo samo Word aplikacijo, ugotovimo odprte dokumente, aktivni tisklanik in podobno. Range in Selection predstavljata nepretrgan del dokumenta. Selection je označeno obočje v dokumentu, ki je lahko samo eno, medtem, ko je range objektov lahko več. FormField je običajno vnosno polje. Mi smo ga uporabili zaradi dobrih odzivnih časov in možnosti, da povemo masko in tip polja.
9
Zakaj Borland Delphi in COM?
poznamo VBA? Izbrali smo orodje, ki ga dobro poznamo, imamo in ni dodatnih stroškov z licenco. Zanj imamo tudi nekaj dodatnih pripomočkov, pri tem projektu smo najbolj uporabljali profiler za iskanje kritičnih mest, kjer so odzivni časi najslabši. Z Word-om smo se v začetku malo bolj podrobno spoznali z uporabo Visual Basic for Applications, kjer smo za začetek napisali nekaj macrov in naredili prototip, da smo preverili koncept.
10
Uvoz knjižnice tipov _Application = interface(IDispatch)
function Get_Application: Application; safecall; function Get_Creator: Integer; safecall; function Get_Parent: IDispatch; safecall; function Get_Name: WideString; safecall; function Get_Documents: Documents; safecall; function Get_Windows: Windows; safecall; function Get_ActiveDocument: Document; safecall; function Get_ActiveWindow: Window; safecall; function Get_Selection: Selection; safecall; function Get_WordBasic: IDispatch; safecall; function Get_RecentFiles: RecentFiles; safecall; function Get_NormalTemplate: Template; safecall; function Get_System: System; safecall; Meta podatke komponente COM lahko uvozimo v Delphi. Potem lahko uporabljamo COM razrede enako kot razred pisane v Delphiju.
11
Kontrolnik ActiveX lahko registriramo kot del VCL
Kontrolnik ActiveX lahko uvozimo v Delphi, registriramo na paleto in uporabljamo enako kot izvirne Delphi komponente iz knjižnice Visual Component Library..
12
Naredimo COM objekt Delphi komponenta (VCL) v kontrolnik ActiveX
nova komponenta COM Pri izdelavi COM objekta si pomagamo s čarovnikom. Najprej se moramo odločiti za tip strežnika (inprocess, outprocess), potem pa v čarovniku izberemo ti objekta, ki ga želimo pripraviti. Delphi bo za nas pripravil ogrodje s tovarno objektov vred. Druga možnost je, da na osnovi izvirne Delphi komponente naredimo ActiveX komponento. Za to obstaja čarovnik, ki ovojnico namesto nas.
13
Naredimo COM objekt (2) opis vmesnika
Naše vmesnike, COM razrede, lastnosti COM objekta opišemo v posebnem urejevalniku. Zato lahko uporabljamo sintakso Pascala ali IDL (interface definition language). Vmesnike za Corbo opišemo v istem orodju. Orodje pripravi ustrezne definicije v Pascalu in prazne metode.
14
Naredimo COM objekt (3) implementacija metod
registracija COM razredov in vmesnikov Preostane nam torej, da zapišemo implementacijo teh metod in razred registriramo. Tudi to lahko storimo iz integriranega okolja.
15
Rešitev podobno tiskanju
Naša rešitev je v marsičem identična tiskanju v Windows okolju.
16
Težave na poti ponavljajoče se vrstice (npr.: postavke računa)
odzivni časi
17
Primer uporabe var Podatki: IVizParser; begin
Podatki := CoVizParser.Create; Podatki.SetFieldValue('KRAJ_IZSTAVITVE', 'Celje'); … VizCOMRep1.Report('racun.dot', VC_SHOW, Podatki.AsVariant); ...
18
Povzetek
19
Možnosti za naprej čarovniki namesto MS Word druga aplikacija
v celoti izkoristiti možnosti, ki jih že podpira izbran COM strežnik
20
? Vprašanja ? Povzetek: na podoben način lahko uporabimo marsikatero aplikacijo. Na primer SQL Server SQL Distributed Management Objects (DMO).
Similar presentations
© 2025 SlidePlayer.com. Inc.
All rights reserved.