Autorski članci
uređuju Dragan Grbić i Branislav Mihaljev, MVP

Bookmark and Share
Matična strana sajta
  Novo na sajtu
  Mapa sajta
  Beleške
  Kontakt
  Pretraga MSKB

 Blog Praktikuma
  RSS feed
  P@W @Tw

  Izvezi stranicu u PDF
 
Office Praktikum

Autorski članci
 


Skoro svakodnevno slušamo
  Radio Paradise:
  eklektični muzički online radio bez reklama!
 

 
       

Sponzori sajta

SBB CS 1.6 game server: 82.117.200.1
 
Connectivity by SBB

 


 

Informacije

NOVOSTI

I još dva nova priloga o Excelu
Novi prilozi o Wordu
Novi i prilozi u temi "razno o Officeu"
Novi članci o novostima u Officeu 2010!

SADRŽAJI ZA PREUZIMANJE

Lokalizacija Total Commandera 7.51Obe jezičke školjke za popularni program na srpskom sad funkcionišu u bilo kojoj varijanti Windowsa!
RNDalica.ExcelDodatak za Excel 2007/2010 za generisanje slučajnih podataka!
YuConv.ExcelDodatak za Excel 2007/2010 za konverziju pisama!
YuConvNetDodatak za Word 2007/2010 za konverziju pisama i kodnih rasporeda!

SKREĆEMO PAŽNJU

Kako pretraživati MSKB
a pronaći ćete i još mnogo novih sadržaja...

KONTAKT

Da li znate za pravila koja važe pri kontaktu sa nama? Molimo vas da se obavestite o tome!
 
POZIVAMO VAS

i prenesite svoja iskustva. Najbolji prilozi će biti objavljeni.

  (C) 2000-2010 Praktikum na Webu
 

Visual Studio Tools for Office: Programirani dokumenti

Nivo:  NIVO 4 - klinite za objašnjenje


Piše: Dragan Grbić

Visual Studio Tools for Office uvodi mnoge nove elemente u projektovanje i implementaciju integrisanih rešenja. Upoznajte se sa tim novim načelima: otkrijte prednosti i zamke ove razvojne platforme

Govoreći o novom razvojnom paketu za sistem Microsoft Office u prošlom broju, jedan od zaključaka koje smo izveli beše onaj koji kaže kako se brišu granice između "klasičnog" programiranja i pripreme Office rešenja u novom ambijentu. Visual Studio Tools for Office 2003 (VSTO) je prva generacija realno integrisane platforme za Microsoft Office u sistemu Visual Studio .NET. To iziskuje od Office projektanata da se upoznaju sa novostima; u pokušaju da na čas rasvetlimo mogućnosti novih integrisanih rešenja, govorimo o nekim metodama njihovog razvoja, angažovanja i primene.

Da ne bi bilo zabune, odmah razjasnimo: i dalje opstaje lokalni, "mali" razvoj rešenja u sistemu Visual Basic for Applications (VBA), koji se implementira na nivou dokumenta. VBA i VSTO se međusobno ne isključuju; na izvestan način, čak ih je neumesno i porediti. Umesto toga, dva oblika gradnje rešenja za Office treba da posmatrate kao komplementarne celine, utvrđujući koji od njih je celishodniji za posao koji želite da automatizujete. Možete čak i planirati rešenja koji podrazumevaju prisustvo oba programska oblika, pod uslovom da poštujete specifičnosti i razlike koje postoje među njima.

Pogledajte uporednu tabelu dve razvojne platforme: rasprava o ovim razlikama predstavlja okosnicu teme kojom se bavimo ovog puta.

VBA VSTO
programski kôd čuva se u dokumentu u izvornom obliku, odakle se interpretira čuva se u kompajliranom obliku kao sadržaj odvojen od dokumenta
mogućnosti snimanje makroa i pisanje jednostavnih modula puni pristup svim funkcijama platforme .NET Framework
sigurnost korisnik sam definiše nivo sigurnosti rada makroa u programu administrator definiše polise pristupa i izvršenja programskog koda
angažovanje ograničene mogućnosti u lokalnom okruženju mogućnost primene različitih modela angažovanja, uključujući i offline pristup
održavanje manuelna prerada ili zamena sadržaja modula različiti oblici održavanja, uključujući transparentne oblike automatske zamene

 

Šta se pravi i kako radi

Podsetićemo vas kratko na preduslove za pripremu razvojne platforme za VSTO. Pre instalacije sistema Microsoft Office 2003 u varijetetu Professional (koji je neophodan), treba da instalirate .NET Framework 1.1. Redosled je bitan, kako biste u toku instalacije Officea dobili opciju izbora .NET Programmability Support; reč je o postavljanju veznih modula klasa po imenu primary interop assemblies (PIA). Sledi instalacija neke od varijanti paketa Visual Studio .NET; pri izboru platforme treba da razmišljate da je VSTO pripremljen za Visual Basic .NET i za Visual C# .NET; neki minimalni izbor (po mogućnostima, ali i po ceni) bio bi u instalaciji samostalnog paketa Visual Basic .NET. Sledi instalacija paketa VSTO, a ne treba zaboraviti ni na referentnu literaturu u obliku MSDN Library, bez koje nećete daleko stići. Postoje još neke preporučene komponente (MSDE, IIS), a prošli put smo govorili još o nekim elementima razvoja koji proširuju radni ambijent za razvijanje Office rešenja; to su opcije koje ćete već izabrati prema sopstvenim potrebama.

Najkraće rečeno, VSTO je programski dodatak za Visual Studio .NET koji služi kao potpuno novo okruženje za razvoj programskih rešenja u Wordu i Excelu. Iz ugla .NET programiranja, ti programi su "bogati front-end" koji čini integrisano rešenje prepoznatljivim i jednostavnim za korišćenje. Zato nema potrebe za programiranjem svake sitnice, nego se uspostavlja mogućnost rapidne izrade funkcionalnih rešenja koja proširuju postojeće okruženje korisnika. Kada kreirate rešenje u VSTO, vi zapravo pravite assembly, nezavisnu komponentu koja se povezuje sa određenim dokumentom. U tome je jedna od ključnih razlika u odnosu na VBA module, koji se čuvaju kao deo dokumenta; štaviše, dokument i assembly uopšte ne moraju da funkcionišu sa istog mesta. Ovo je ključna osobina VSTO arhitekture, koja donosi mnoge prednosti na planovima sigurnosti i angažovanja. U razvojnom okruženju za Office, princip COM (component object model) je još uvek najvažniji: kada klijentski modul stupa u interakciju sa Office programom, to se obavlja kroz tzv. COM interop layer. Programski poziv bilo kog COM objekta se izvršava posredstvom modula po imenu interop assembly (drugi naziv je runtime callable wrapper, RCW). Za svaki COM objekat, samo jedan interop assembly je primarni i to je, kao što je pomenuto, predefinisano instalacijom sistema Microsoft Office.

U pojavnom obliku, VSTO 2003 sadrži predloške projekata za C# i Visual Basic čiji nosioci su Word dokument, Word predložak i Excel dokument. U aktuelnoj verziji VSTO postoji, zapravo, i način da radite sa Excel predlošcima, ali to nije očigledno. Našli smo na nezvanični podatak da je bila reč o kašnjenju u razvoju tog dela pred izlazak produkcione verzije VSTO, pa "samo" nedostaje predložak projekta. Kako god, predlošci projekta obezbeđuju vrlo brzu pripremu kostura za Office rešenje, dovoljnog za direktan nastavak pisanja namenskog koda. Da bi sve prošlo bez greške, prvi koraci su upakovani u Office Project Wizard u kome ćete lako definisati sve relevantne podatke. Osobine radnog ambijenta su već odavno poznate "pravim" programerima; dobit za vas, ako ste Office programer, jeste u najmanje dve novosti. Prvo, na raspolaganju vam je bogata integrisana dokumentacija, koja osim referentnih priručnika sadrži i biblioteke dobro objašnjenih primera; njih možete analizirati, isprobavati i menjati i tako mnogo naučiti u hodu. Druga ključna novost je interakcija saveta u toku lova na greške; na kakav god problem da naiđete u toku pisanja, kompilovanja ili izvršenja programa, dobićete barem jednu ili dve reference koje se odnose na nastalu situaciju.

 Kostur programskog koda Ako imate iskustva u pisanju VBA procedura, već imate izvesno predznanje u raspoznavanju strukture kodnog kostura. Automatske reference na assembly komponente, kojih ima četiri, obezbeđuju korišćenje potrebnih struktura: Windows.Forms je sistemska biblioteka za crtanje opštih elemenata radne površine; Office.Core je glavni vezni element ka objektima Office sistema; sledi poziv za assembly programa koji je deo rešenja i, najzad, MSForms povezuje ostale ActiveX kontrole koje ćete možda koristiti u svom dokumentu. Atribut Office integracije je generički deo koda koji identifikuje klasu kao kodnu komponentu dokumenta. Klasa podrazumevanog imena OfficeCodeBehind najpre sadrži grupu generičkih procedura i funkcija. Njihova imena su rezervisana, a menjaćete ih kada poželite da utičete na razne događaje. Word i Excel će upotrebiti klauzulu Startup pri inicijalizaciji IA komponente; ovde se postavljaju svi okidači događaja na globalnom nivou aplikacije. Slično tome, procedura Shutdown se izvršava pri zatvaranju dokumenta. Posebno je zanimljiva klauzula FindControl; to je pomoćna funkcija koja služi za nalaženje i referenciranje ActiveX kontrola u dokumentu i dodeljivanje događaja pri njihovoj upotrebi. Na primer, ako želite da uhvatite klik mišem u okvir teksta u Word dokumentu, tu ćete definisati akciju kada se to desi. Najzad, na raspolaganju vam je i skup procedura za programiranje uobičajenih događaja; neke se već pojavljuju u kosturu kao prazne, a druge možete i sami definisati po potrebi.

Bezbednost pre svega

Integrisano okruženje obezbeđuje punu funkcionalnost prototipskog razvoja rešenja. Nalik programiranju klasičnih aplikacija, klik na komandu Run će pokrenuti ciljni dokument, pri čemu izvršenje ostaje pod nadzorom razvojnog okruženja. Drugim rečima, na raspolaganju su sve metodologije i alatke za lov na greške (debugging), nadzor promenljivih, tačke prekida i ostale tehnike. Uobičajeni princip pripreme kritičnih operacija jeste da se one ugnezde u klauzule Try...Catch u kodu; u protivnom, greške koje se dešavaju u Wordu i Excelu bi mogle da promaknu bez uvida u njihovo dešavanje u času "pada" programa. Druga metoda se ređe primenjuje, ali je jednako efikasna: lov na izuzetke (exceptions) obezbeđuje just-in-time lov na greške, uz mogućnost postavljanja složenijeg skupa opcija u zavisnosti od uhvaćenog izuzetka.

Arhitektura integrisanog rešenja je principijelno prosta. Rešenje čine dve namenske komponente: to su Office dokument, koji služi kao front end rešenja, i assembly komponenta (kompilovana kao DLL datoteka), koja sadrži izvršni deo. Veza između dve komponente rešenja se održava na zanimljiv način: Office Project Wizard postavlja dva posebna svojstva dokumenta: AssemblyName0 sadrži ime IA komponente, a AssemblyLocation0 tačnu lokaciju, u vidu relativne ili apsolutne putanje na disku, kao UNC u lokalnoj mreži ili kao URL adresa do koje se stiže HTTP protokolom. Ova svojstva se mogu ažurirati na više načina; optimalno je, naravno, da to prepustite automatici integrisanog razvojnog okruženja, jer se vrednosti ažuriraju u toku svakog kompilovanja rešenja. Drugi način je manje fleksibilan: otvorićete dijalog File / Properties u Office programu i na kartici Custom zateći svojstva čije vrednosti možete menjati. Vredi pomenuti još i kontrolu Persistence koja je uključena u VSTO, a čijom upotrebom možete menjati svojstva za više rešenja odjednom, izradom namenske batch procedure.

 Dijagram pokretanja integrisanog rešenja Prepustićemo vam da proanalizirate scenario ponašanja integrisanog rešenja na priloženom dijagramu. Obratite pažnju na korake odlučivanja o poverljivosti: to su ključni momenti koji čine model bezbednosti VSTO rešenja veoma različitim od VBA i atraktivnim kao mogućnost, pogotovo u složenim korporativnim mrežama. Administrator upravlja polisama sigurnosti tako što forsira rad rešenja isključivo sa standardnih poverljivih lokacija ili tako što proglašava posebne lokacije poverljivim. Te polise se postavljaju kao deo integralne bezbednosti (npr. u aktivnom direktorijumu domena), čime se postiže nivo sigurnosti koji bi bio teško ostvariv na drugi način (ili barem ne bi bio transparentan za krajnjeg korisnika). Štaviše, za VSTO postoje bitni preduslovi za izvršavanje koda čak i na lokalnoj mašini. Naime, podrazumevane polise za lokalno izvršavanje CLR komponenti su takve da se implicitno podrazumeva poverenje u sav kôd na lokalnom računaru; VSTO generiše upravljani kôd (managed code), što znači da je za njegov rad potrebno da postoji polisa FullTrust. Prostim rečnikom govoreći: ako je vaš domen propisno administriran, VSTO neće biti izvor malicioznog koda, tj. virusa.

Bezbednost za integrisana rešenja se može implementirati na više načina, s obzirom na to da postoji više opcija za nosioca bezbednosti (folder aplikacije, elektronski potpis komponente, pouzdani izdavač, polisa imenovanja, bezbedni URL ili zona, itd). Polisa bezbednosti mora biti postavljena sa administratorskog naloga na svakom ciljnom računaru ponaosob. Metode mogu biti različite: uobičajeni manuelni koraci se obavljaju konfiguracionom alatkom za .NET Framework ili programom CASPOL.EXE na komandnoj liniji. Pošto je to uglavnom suviše posla u većim mrežama, možda je najefikasniji način da se polise postave kao deo instalacionog skripta, tako da Windows Installer postavi sva potrebna podešavanja kada se na ciljnom računaru pokrene MSI datoteka. Jednom definisane, polise sigurnosti mogu biti očuvane i ukoliko kasnije dođe do izmene verzije assembly komponente; ukoliko dođe do bilo kakve promene u polisi, neophodno je restartovati Office programe koji je koriste.

Načini angažovanja

Preduslovi platforme za rad klijenata, naravno, nisu toliko obimni kao kada je reč o razvojnoj platformi. Međutim, i dalje važi nužan preduslov za redosled instalacije, pa se morate pobrinuti oko pravilne postavke softvera na radnim stanicama. Mogući operativni sistemi za rad integrisanih rešenja su Windows 2000, Windows XP i Windows Server 2003 na kojima je instaliran .NET Framework 1.1. Nije neophodno da se instalira kompletan Microsoft Office: moguće je da vašim potrebama odgovara samostalni Word 2003 ili Excel 2003. Koju god varijantu da iskoristite, takođe morate instalirati i Office 2003 PIA, jer se te komponente uvek referenciraju u rešenju kao osnovne.

S obzirom na to da rešenje sadrži dve komponente, postoje tri osnovna scenarija njihovog postavljanja u odnosu na mrežno okruženje. Koji scenario ćete primeniti, zavisiće prevashodno od realnih potreba; svaka postavka ima svoje "za i protiv". Osnovni model angažovanja je da i dokument i assembly počivaju na lokalnom računaru. Glavna prednost rešenja je u tome da računari ne moraju biti u jedinstvenoj mreži, pa se ovom modelu pribegava za potrebe heterogenih grupa korisnika na raznim lokacijama. Najveća mana modela "lokal/lokal" je u tome što morate distribuirati primerke rešenja za svakog korisnika, što može da bude naporan proces.

 Modeli angažovanja integrisanih rešenja U praksi je možda najčešći vid angažovanja rešenja koje podrazumeva dokument u lokalu, a assembly na mrežnom resursu. Za većinu projektanata rešenja, ovo je idealna situacija: ako je potrebno prepraviti assembly, samo ćete postaviti novu verziju na server. Nećete morati da brinete o izmenama na klijentskim računarima, jer kada korisnici pokrenu rešenje, novi DLL će biti automatski povučen sa matične lokacije. Još jedna prednost ovakvog načina je u tome što, ako tako želite, možete dozvoliti korisnicima da menjaju matični dokument rešenja prema potrebi ili nahođenju. Naličje medalje je u tome što morate biti sigurni da svi korisnici imaju permanentni pristup mrežnom resursu na kome se assembly nalazi. Doduše, rad nekog korisnika van mreže ne mora znači i nemogućnost primene rešenja: ako je tako predviđeno, assembly komponente se mogu keširati u lokalu (poput Web stranica i komponenti sa Interneta), a dokument može pristupiti keširanoj DLL datoteci kada je računar van mreže.

Treći model je, naravno, onaj koji podrazumeva da se i dokument i assembly nalaze na nekom serveru, a da im korisnici uvek pristupaju direktno. To podrazumeva obaveznu vezu sa matičnom lokacijom, što može da bude otežavajuća okolnost. Zauzvrat, tako angažovano rešenje obezbeđuje najviši stepen sigurnosti, i to ne samo iz ugla bezbednosti pristupa i izvršavanja, nego i kada je reč o eksploataciji rešenja. Dokument na mreži se postavlja kao master, dok korisnici čuvaju rezultujuće sadržaje u lokalu ili na mreži kao posebne dokumente; ovo je, recimo, prikladno kao mera zaštite integrisanog rešenja zasnovanog na predlošku dokumenta.

Varijante angažovanja u odnosu na mrežnu okolinu mogu da budu opredeljene i željenim nivoima polisa sigurnosti; reč je o tome da se principijelno definišu različite polise za dokument i za assembly. Ako dokument počiva na lokalnom računaru, polisa nije potrebna, nego je dovoljno postavljanje u pouzdanu lokaciju za korisnika (npr. My Documents). Ako je dokument na mreži, neophodna je polisa sigurnosti FullTrust na nivou mašine. Uzgred, ovakve postavke opredeljuju i način distribucije dokumenta: recimo, ako pošaljete nekome dokument rešenja kao prilog e-poštom, on se neće smatrati poverljivim i neće moći da bude angažovan. Uslovi za assembly su rigidniji: lokalno postavljena DLL datoteka zahteva FullTrust na nivou korisnika; ako je na nekom serveru, polisa sigurnosti mora da postoji na nivou mašine, kao za mrežni dokument.

Suština napretka

Da VSTO ima ozbiljnu perspektivu, govori nam i podatak da se ubrzano radi na razvoju nove verzije sa oznakom 2005, koja već postoji u Beta verziji. Ima sve više informacija o mogućnostima sledeće platforme, a neka prototipska rešenja privlače interesovanje šireg kruga Office projektanata nego aktuelna verzija. Recimo, razvijen je ceo podsistem za napredniju gradnju Access aplikacija (mnogi su zamerili zbog sadašnjeg odsustva tog dela) i zna se da će biti deo sledećeg izdanja VSTO. Prema najavi, osim uobičajenog royalty-free modula za rad Access baza na "golim" mašinama, Access 2003 Developer Extensions će sadržati unapređeni Package Wizard; Property Scanner Add-In koji će sadržati heurističke elemente za analizu komponenti Access aplikacije; Custom Startup Wizard je namenjen pripremi kolekcije MDE datoteka koje će poslužiti za vrlo olakšano testiranje prototipa aplikacije; veoma je unapređen i način upravljanja izvornim kodom u finalnoj aplikaciji. Šlag na tortu: sve alatke će biti isporučene i u izvornom kodu, što će biti vrhunska literatura za majstore Accessa.

Uvođenjem VSTO u paket razvojnih alata, Microsoft je postigao niz dobrih pogodaka, a ukupni napredak je lako vidljiv. Teško je opredeliti se za ključni argument poželjnosti primene ovog principa: za neke, to će biti kvalitet integrisanog okruženja koje daje Visual Studio .NET; za druge, bitno je ozbiljno angažovanje bezbednosti. Većina će se, pak, složiti da najveću dobit predstavlja mogućnost potpune integracije de facto celokupne Windows platforme u integrisano rešenje, i to na vrlo efikasan način. Verujemo da ste stekli utisak da možete postati vrlo produktivan projektant kvalitetnih rešenja u svom poslovnom okruženju ako koristite paket Visual Studio Tools for Office kao alatku. Moglo bi se još mnogo reći o tehnologijama koje su prirodni ambijent za primenu VSTO u praksi, ali to je druga priča kojoj ćemo se vratiti drugom prilikom.

 

  (C) 2000-2010 Praktikum na Webu

Objavljeno u časopisu PC #108, februara 2005.


 
 

Vrh stranice  Prethodna stranica  Naslovna strana  Mapa sajta  Pretraga

AFORIZAM ZA DANAS OVIH DANA SLUŠAMO...

Copyright © Praktikum na Webu, 2000-2010; Valinor Design; sva prava pridržana.