Ohjelmistokehitys COM-komponenttien avulla

Samankaltaiset tiedostot
Sovellusarkkitehtuurit

Integrointi. Ohjelmistotekniikka kevät 2003

Tietojärjestelmäarkkitehtuurit

HOJ J2EE & EJB & SOAP &...

Ohjelmistoarkkitehtuurit. Syksy 2008

Visma Software Oy

Concurrency - Rinnakkaisuus. Group: 9 Joni Laine Juho Vähätalo

Järjestelmäarkkitehtuuri (TK081702)

ELM GROUP 04. Teemu Laakso Henrik Talarmo

Käyttäjien tunnistaminen ja käyttöoikeuksien hallinta hajautetussa ympäristössä

Hajautettujen järjestelmien rakentaminen - Jini. Ohjelmistotuotantovälineet-seminaarin esitelmä

Sisällys. JAVA-OHJELMOINTI Osa 7: Abstrakti luokka ja rajapinta. Abstraktin luokan idea. Abstrakti luokka ja metodi. Esimerkki

Järjestelmäarkkitehtuuri (TK081702) Avoimet web-rajapinnat

Visual Basic -sovelluskehitin Juha Vitikka

Computing Curricula raportin vertailu kolmeen suomalaiseen koulutusohjelmaan

Ohjelmien. Rakenna palikoista pilvenpiirtäjä. Komponentit tehostavat ohjelmointia. Komponenttiohjelmointi. tuotteistukseen

Ohjelmistoarkkitehtuurit. Syksy 2010

Digi-tv vastaanottimella toteutetut interaktiiviset sovellukset

Visma Nova Webservice Versio 1.1 /

IoT-järjestelmän ja ulkovalaistuksen ohjauksen hankinta -markkinavuoropuhelutilaisuus

Windows Server 2012 asentaminen ja käyttöönotto, Serverin pyörittämisen takia tarvitaan

812347A Olio-ohjelmointi, 2015 syksy 2. vsk. IX Suunnittelumallit Proxy, Factory Method, Prototype ja Singleton

Action Request System

Tekninen suunnitelma - StatbeatMOBILE

Ohjelmistoarkkitehtuurit. Syksy 2007

Malliperustainen ohjelmistokehitys - MDE Pasi Lehtimäki

FuturaPlan. Järjestelmävaatimukset

Opetusteknologian standardoinnin tilanne. Antti Auer

Ohjelmistoarkkitehtuurit. Kevät

Järjestelmäarkkitehtuuri (TK081702) Lähtökohta. Integroinnin tavoitteet

Yhteentoimivuusalusta: Miten saadaan ihmiset ja koneet ymmärtämään toisiaan paremmin?

Tekninen suunnitelma - StatbeatMOBILE

Avoimen ja yhteisen rajapinnan hallintasuunnitelma v.1.4

15. Ohjelmoinnin tekniikkaa 15.1

Uutta Remote Support Platform 3.0 -versiossa

Sisäänrakennettu tietosuoja ja ohjelmistokehitys

Järjestelmäarkkitehtuuri (TK081702) Web Services. Web Services

Harri Kaukovuo Senior Sales Consultant Technology Sales Oracle Finland Oy

HSMT J2EE & EJB & SOAP &...

J2EE vs..net Olli Sakari

Ohjelmistoarkkitehtuurit Syksy 2009 TTY Ohjelmistotekniikka 1

Ohjelmistojen suunnittelu

Ohjelmiston testaus ja laatu. Ohjelmistotekniikka elinkaarimallit

Järjestelmäarkkitehtuuri (TK081702) Järjestelmäarkkitehtuuri. Järjestelmäarkkitehtuuri

ohjelman arkkitehtuurista.

Ohjelmistojen mallintaminen. Luento 11, 7.12.

Tiedonsiirto- ja rajapintastandardit

L models. Käyttöohje. Ryhmä Rajoitteiset

Järjestelmäarkkitehtuuri (TK081702) SOA, Service-oriented architecture SOA,

ANVIA PILVI. kotimaisia pilvipalveluita yrityksille 24/7

Qt kaikkialla?

Rajapinnasta ei voida muodostaa olioita. Voidaan käyttää tunnuksen tyyppinä. Rajapinta on kuitenkin abstraktia luokkaa selvästi abstraktimpi tyyppi.

Työkalut ohjelmistokehityksen tukena

Aurinkoenergiajärjestelmien etäseurantajärjestelmä

SISÄLLYSLUETTELO. Sisällysluettelo. ALKUSANAT... III Palaute... III Kirjailijat... III

812347A Olio-ohjelmointi, 2015 syksy 2. vsk. VII Suunnittelumallit Adapter ja Composite

Software engineering

Ohjelmistoarkkitehtuurit Kevät käytäntöjä

Directory Information Tree

Jouko Nielsen. Ubuntu Linux

Avoimen ja yhteisen rajapinnan hallintamalli

13/20: Kierrätys kannattaa koodaamisessakin

.NET ajoympäristö. Juha Järvensivu 2007

Web-palvelukonsepti tarjoaa yhden tavan toteuttaa SOA. Tämä tapa perustuu Web-palvelustandardien käyttöön: palvelut kuvataan WSDL-kielen avulla ja

15. Ohjelmoinnin tekniikkaa 15.1

Toimilohkojen turvallisuus tulevaisuudessa

T SEPA - päiväkirja: Design Patterns. ETL työkalu

Microsoft Visual J++ ohjelmointiympäristö

Vaatimusmäärittely Ohjelma-ajanvälitys komponentti

Visual Case 2. Miika Kasnio (C9767)

Liite 1: KualiKSB skenaariot ja PoC tulokset. 1. Palvelun kehittäjän näkökulma. KualiKSB. Sivu 1. Tilanne Vaatimus Ongelma jos vaatimus ei toteudu

Tietokanta (database)

Alkuraportti. LAPPEENRANNAN TEKNILLINEN YLIOPISTO TIETOJENKÄSITTELYN LAITOS CT10A Kandidaatintyö ja seminaari

812341A Olio-ohjelmointi Peruskäsitteet jatkoa

TIE Principles of Programming Languages CEYLON

Interfacing Product Data Management System

Ohjelmistoarkkitehtuurit Kevät käytäntöjä

S11-09 Control System for an. Autonomous Household Robot Platform

Pilvi mitä, miksi ja miten

Tulevaisuuden Internet. Sasu Tarkoma

MagiCAD Toimintaympäristö ja yhteensopivuus MagiCAD AutoCADille ja MagiCAD Revitille

WINE API ja Virtualisointiohjelmistot

Uutta Remote Support Platform 3.1 -versiossa

MagiCAD 2020 Toimintaympäristö ja yhteensopivuus. MagiCAD Revitille ja AutoCADille

Hajautettujen järjestelmien hajautettu kehittäminen

Ohjelmistoarkkitehtuurit. Kevät

Sopimusten Verkkopankki

Interaktiivisten järjestelmien arkkitehtuuriratkaisu, jolla käyttöliittymä erotetaan sovelluslogiikasta.

Office ohjelmiston asennusohje

Pilvipalvelujen tietoturvasta

Arkkitehtuurikuvaus. Ratkaisu ohjelmistotuotelinjan monikielisyyden hallintaan Innofactor Oy. Ryhmä 14

JHS 179 Kokonaisarkkitehtuurin suunnittelu ja kehittäminen Liite 9. Virtualisointi ja pilvipalvelut teknologia-arkkitehtuurin suunnittelussa

Käyttöjärjestelmät. 1pJÄKÄ1 KÄYTTÖJÄRJESTELMÄN HALLINTA, 12 OSP

jotakin käyttötarkoitusta varten laadittu kokoelma toisiinsa liittyviä säilytettäviä tietoja

Hajautettujen sovellusten muodostamistekniikat, TKO_2014 Johdatus kurssiin

Suunnitteluvaihe prosessissa

Ohjelmistoarkkitehtuurit Syksy 2009 TTY Ohjelmistotekniikka 1

Helsingin yliopisto/tktl DO Tietokantojen perusteet, s 2000 Johdanto & yleistä Harri Laine 1. Tietokanta. Tiedosto

Ohjelmistojen mallintaminen, mallintaminen ja UML

Transkriptio:

hyväksyjä: arvosana: päivämäärä: Ohjelmistokehitys COM-komponenttien avulla Isto Nikula Helsinki 05.12.2000 Ohjemistotuotantovälineet, seminaarialustus HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos

Ohjelmistokehitys COM-komponenttien avulla Isto Nikula Ohjelmistotuotantovälineet, seminaarialustus Tietojenkäsittelytieteen laitos Helsingin yliopisto 05.12.2000, 10 sivua Tässä seminaarialustuksessa käsitellään Microsoftin Component Object Model:ia (COM). Alustus keskittyy mallin perusteiden ja arkkitehtuurin esittelyyn yleisellä tasolla. Lisäksi esitetään COM:in ratkaisut yleisiin ongelmiin, jotka komponenttipohjaisen arkkitehtuurin tulisi ratkaista. Lopuksi tarkastellaan lyhyesti COM:in kanssa kilpailevia teknologioita. Seminaariesityksessä käsitellään edellisten lisäksi käytännön esimerkkejä COM:in käytöstä Windows-alustalla. Avainsanat: ohjelmistotuotanto, komponenttipohjaiset arkkitehtuurit, binääristandardi II

SISÄLTÖ 1 JOHDANTO...1 2 YLEISKATSAUS...1 2.1 Binääristandardi...1 2.2 Rajapinnat...2 2.3 Tunniste...3 2.4 Lyhyesti arkkitehtuurista...3 3 ONGELMAKENTTÄ...5 4 KÄYTETTÄVYYS...6 4.1 Alustat...6 4.2 Kehitysympäristö...7 4.3 Vaihtoehtoiset ratkaisut...7 5 YHTEENVETO...8 LÄHTEET...9 III

1 JOHDANTO Component Object Model (COM [Com95]) on Microsoftin määrittelemä ja toteuttama ohjelmistoarkkitehtuuri, joka helpottaa komponenttien yhteiskäyttöä. COM:in avulla eri valmistajien tekemät komponentit voidaan yhdistää toimivaksi kokonaisuudeksi. Distributed Component Object Model (DCOM [BrK98]) on COM:in laajennos, jota käyttämällä ei tarvitse rajoittua samalla koneella oleviin komponentteihin, vaan yhteiskäyttöiset komponentit voivat sijaita myös verkossa. COM kuuluu ns. keskikerrosohjelmistoihin (engl. middleware). Näiden tarkoitus on peittää ohjelmoijilta alla olevan alustan erikoisuudet ja antaa yhtenäinen rajapinta sovellusten toteuttamiseen [Mil99]. 2 YLEISKATSAUS Microsoft kehitti kehyksen dokumenttien yhdistämiseen ja hallintaan toimistosovelluspakettiaan (Microsoft Office suite) varten vuonna 1991. Myöhemmin tajuttiin, että tämä kehys, OLE versio 1, oli vain erikoistapaus komponenttien yhteiskäytöstä [Bro96]. Vuonna 1996 julkaistu OLE:n versio 2 sisälsi suuria muutoksia edeltäjäänsä nähden. Se käytti alustanaan komponenttien yhteiskäyttöä helpottavaa mekanismia, COM:ia. COM:in aikaiset versiot eivät juurikaan tukeneet komponenttien hajautusta ja tätä varten arkkitehtuuria laajennettiin vuonna 1996 hajautettujen komponenttien tuella (DCOM). COM- ja DCOM-teknologioita on järkevää käsitellä yhtenä teknologiana [MoL97], joka tarjoaa palvelut komponenttien väliseen yhteiskäyttöön. Kun jatkossa viitataan COM-teknologiaan, tarkoitetaan tällä sekä COM- että DCOM-teknologioita. 2.1 Binääristandardi COM määrittää ohjelmointirajapinnan (API), jota noudattamalla eri ohjelmointikielillä toteutetut komponentit voivat toimia yhdessä. Jotta yhteistoiminta olisi mahdollista, on komponenttien käytettävä Microsoftin määrittämää 1

binäärirakennetta. Komponenttien funktioita tulee kutsua muistissa sijaitsevien virtuaalitaulujen kautta ja tästä johtuen käytettävän ohjelmointikielen on tuettava funktiokutsuja osoittimien kautta [WiK94]. Morrisin ja Litvakin [MoL97] mukaan riittää, että kääntäjä osaa muuttaa kielen rakenteet binäärirakennetta vastaavaksi. Toinen binääristandardin vaatimus on, että kaikkien komponenttien on toteutettava IUnknown-rajapinta [WiK94]. IUnknown sisältää metodien QueryInterface, AddRef ja Release esittelyt. QueryInterface-metodia käyttäen asiakkaan tulee voida tarkastaa tukeeko komponentti jotain tiettyä rajapintaa ja saada osoitin kyseiseen rajapintaan. Muut rajapinnan metodit liittyvät komponentin elinkaaren hallintaan. 2.2 Rajapinnat Komponenttia käytetään aina jonkun sen toteuttaman rajapinnan metodin kautta (kuvio 1). Rajapinnat noudattavat binääristandardissa kuvattuja periaatteita (ks. 2.1). Kutsujalla on siis osoitin johonkin komponentin toteuttamaan rajapintaan ja se käyttää tätä osoitinta kutsuessaan rajapinnan määrittämiä palveluja. Esimerkiksi kaikki OLEpalvelut ovat COM-rajapintoja. Williams ja Kindel [WiK94](käännös kirjoittajan) määrittelevät COM-rajapinnan seuraavasti: COM-rajapinta on vahvasti tyypitetty sopimus ohjelmistokomponenttien välillä, joka sisältää pienen mutta hyödyllisen kokoelman semanttisesti samankaltaisia operaatioita. Vahva tyypitys viittaa määritelmässä siihen, että jokaisella rajapinnalla on yksilöllinen tunniste (ks. 2.3). Lisäksi huomattavaa on, että rajapinta ei ole luokka eikä komponentti. COM-komponentti voi toteuttaa useita rajapintoja (kuvio2). Tämä piirre on olennainen sen takia, että rajapinnat ovat loogisesti muuttumattomia. Loogisuus tarkoittaa tässä sitä, että teknisesti rajapinnan muuttaminen ei ole mahdotonta, mutta komponenttien kehittäjien tulisi noudattaa rajapinnan muuttumattomuuden periaatetta [WiK94]. Muutokset johonkin olemassa olevaan rajapintaan tulisi toteuttaa uutena 2

rajapintana (tai uusina rajapintoina). Näin säilytetään yhteensopivuus vanhaa rajapintaa käyttävien komponenttien kanssa eli ratkaistaan versionhallintaan liittyvät ongelmat. Osoitin rajapintaan komponentti Kuvio 1: Asiakas käyttää COM-komponenttia rajapintaosoittimen kautta [Com95]. IClock ITimer IAlarm Asiakassovellus Kellokomponentti Kuvio 2: Kello-komponentti. IClock-rajapinta tarjoaa metodit ajan asettamiseen ja lukemiseen, IAlarm ja ITimer tarjoavat herätys- ja ajanottopalvelut [MoL97]. 2.3 Tunniste Jokainen COM-rajapinta ja -komponentti on voitava tunnistaa yksikäsitteisesti, jotta palvelupyynnöt ohjautuvat oikeille komponenteille. COM:ssa käytetään 128-bittisiä kokonaislukuja tähän tarkoitukseen. Näistä tunnisteista käytetään lyhennettä GUID (Globally Unique IDentifier). GUID:t jakaantuvat edelleen komponentti- (CLSID) ja rajapintatunnisteeseen (IID). Microsoft tarjoaa työkalun (uuidgen) tunnisteiden automaattiseen generoimiseen. Ohjelmoijat voivat generoida tunnisteita myös COM:n API-funktion CoCreateGuid avulla. 2.4 Lyhyesti arkkitehtuurista Komponentin ja komponentin käyttäjän välinen yhteistoiminta pohjautuu asiakaspalvelin-malliin [Wac98, WiK94]. Asiakas on palvelun kutsuja ja komponentti sen tarjoaja eli palvelin. Monissa käytännön toteutuksissa kaksi komponenttia käyttävät 3

toistensa palveluja ristiin eli toimivat samaan aikaan sekä asiakkaana että palvelimena. Käyttöjärjestelmän osana tulee olla toteutettu komponenttikirjasto, jotta COM:ia voidaan käyttää. Esimerkiksi Windows 9x - ja NT -järjestelmissä komponenttikirjasto on toteutettu tiedostossa ole32.dll. Komponenttikirjaston ansiosta komponenttien yhteiskäyttö on mahdollista ja ohjelmoijan kannalta samanlaista komponentin sijainnista riippumatta. Jokainen komponentti on rekisteröitävä, jotta sitä voidaan kutsua. Komponentin luominen tapahtuu seuraavien askelien kautta (kuvio 3) [MoL97]: 1. Asiakas käynnistää COM API:n luodakseen uuden komponentin. 2. COM paikallistaa komponentin toteutuksen ja käynnistään palvelinprosessin komponenttia varten 3. Palvelinprosessi luo komponentin ja palauttaa osoittimen pyydettyyn rajapintaan. 4. Asiakas voi tämän jälkeen käyttää luotua komponenttia saamansa osoittimen kautta. 4) komponentti asiakas 3) palvelin 1) COM 2) Kuvio 3: Komponentin luominen [Com95]. Jokainen komponentti suoritetaan palvelimessa ja yksi palvelin voi tukea useita komponentteja. Asiakkaan ja palvelimen väliseen kommunikaatioon on 3 erilaista tapaa [MoL97] (taulukko 1). 4

Taulukko 1: Asiakkaan ja palvelimen kommunikontitavat. Palvelimen sijainti asiakkaaseen verrattuna Kommunikointimekanismi Palvelintiedoston muoto (Windows) samassa prosessissa Funktiokutsut.DLL samalla koneella eri prosesseissa RPC.EXE eri koneilla DCE RPC (DCOM).EXE 3 ONGELMAKENTTÄ Tässä kappaleessa keskitytään ongelmiin, jotka yleiskäyttöisen komponenttipohjaisen arkkitehtuurin tulisi ratkaista. Jokaisen ongelman kohdalla kuvataan, miten ongelma on ratkaistu COM:ssa. Ongelma - Yhteiskäyttöisyys: miten ohjelmistosuunnittelijat voivat luoda omia yksilöllisiä komponentteja ja silti olla varmoja siitä, että näitä komponentteja voidaan käyttää yhdessä toisten ohjelmistosuunnittelijoiden tekemien komponenttien kanssa? Ratkaisu: Komponenttien metodeja kutsutaan COM:ssa aina rajapintojen kautta ja rajapinnat noudattavat binääristandardia (ks. 2.1, 2.2) [WiK94]. Näin ollen eri ohjelmistosuunnittelijoiden tekemät komponentit toimivat yhdessä, jos ne noudattavat COM:in määrityksiä. Ongelma Versiointi: Miten voidaan päivittää yksi järjestelmän komponentti ilman, että tarvitsee päivittää kaikki järjestelmän komponentit? Ratkaisu: Rajapinnat ovat muuttumattomia ja uudet ominaisuudet toteutetaan uusina rajapintoina. Jos komponentin toteutusta muutetaan, niin komponentin on edelleen toteutettava vanhat rajapinnat. Asiakas aloittaa kommunikoinnin palvelimen kanssa aina tiedustelemalla tukeeko palvelin haluttua rajapintaa metodilla QueryInterface. Näin sekä uudet asiakkaat, jotka osaavat tiedustella uusia rajapintoja että vanhat asiakkaat, jotka käyttävät vanhoja rajapintoja, tulevat palvelluiksi oikealla tavalla [WaC98]. 5

Ongelma Kieliriippumattomuus: Miten eri ohjelmointikielillä kirjoitetut komponentin voivat toimia yhdessä? Ratkaisu: COM määrittelee binäärisen komponenttistandardin eikä lähdekoodistandardia. Tästä johtuen komponentteja voidaan toteuttaa lukuisilla erilaisilla ohjelmointikielillä ja silti käyttää komponentteja yhdessä. Ongelma Läpinäkyvyys: Miten saadaan ohjelmoijan kannalta samankaltaiseksi komoponentin käyttö sen sijainnista riippumatta? Ratkaisu: COM tukee prosessien välistä yhteiskäyttöisyyttä ja sisältää kaikki tarvittavat mekanismit komponenttien paikallistamiseen ja kutsumiseen. Nämä mekanismit sijaitsevat komponenttikirjastossa, joka on toteutettu käyttöjärjestelmän palveluna (ks. 2.4). Komponenttia käytetään aina osoittimen kautta ja osoitin sisältää kaikki asiakkaan ja komponentin väliseen yhteydenpitoon tarvittavat tiedot: IP-osoite, portti ja komponentin ID [WaC98]. 4 KÄYTETTÄVYYS Tässä kappaleessa tarkastellaan COM:in käytön kannalta tärkeitä seikkoja. Näihin kuuluvat alustat, joilla COM:ia voidaan käyttää ja alustan COM:ia tukevat palvelut. Lisäksi tarkastellaan yleisimpiä vaihtoehtoja COM-arkkitehtuurille. 4.1 Alustat Komponentit eivät ole suoraan siirrettävissä alustalta toiselle, koska COM-perustuu binääristandardiin. Komponentit on käännettävä uudelleen tai vaihtoehtoisesti käytettävä binäärikooditulkkia. Binäärimuodon etuja ovat suoritusnopeus ja tehokas alustakohtaisten ominaisuuksien käyttö. Windows 9x ja NT -alustat tukevat COM:ia parhaiten [MoL97]. Microsoft on julkaissut COM:sta version myös MacOS:lle ja UNIX-versiota on kehittänyt Microsoftin kumppani Software AG. COM on saanut yleisen hyväksynnän 6

teollisuudessa Windows-alustoille tehtävässä ohjelmistokehityksessä ja COMyhteensopivia palveluja on kehitetty Windows-alustoille laajasti. 4.2 Kehitysympäristö Kehitysympäristöjen ja käyttöjärjestelmän tukipalveluiden olemassaolo ja niiden hankkimiskustannukset ovat ratkaisevia tekijöitä ohjelmistokehityksen tehokkuuden ja mielekkyyden kannalta. Microsoftin tarjoamat halvat kehitysvälineet, kuten Visual C++ ja Visual Basic, tekevät COM-komponenttien kehityksen ja käytön Windowsalustoilla helpoksi. Lisäksi Windows-alustoilla voidaan käyttää Microsoftin komponenttipalveluja [Mic98], jotka laajentavat komponenttien käyttömahdollisuuksia (taulukko 2). Muilla alustoilla tilanne ei ole yhtä hyvä. Taulukko 2: Microsoftin komponenttipalveluiden COM-komponenttien käyttöön tuomat lisäominaisuudet. Ominaisuus Transaktiot, tietoturva Komponenttien käyttö www-palveluissa Asynkroninen kommunikointi sovellusten välillä Mahdollistava tukipalvelu Microsoft Transaction Server Interner Information Server Microsoft Message Queue 4.3 Vaihtoehtoiset ratkaisut Hajautetuista komponenttiarkkitehtuurimalleista läheisesti Microsoftin COMarkkitehtuuria muistuttaa Object Management Group:in Common Object Request Broker Architecture (CORBA). Plášilin ja Stalin [PlS98] mukaan COM, CORBA ja Java RMI -tekniikat perustuvat samoihin periaatteisiin suunnittelumallien [Gam95] tasolla. Heidän mukaan nämä tekniikat jakavat yhteisen ongelma-avaruuden ja on toteutettu samojen periaatteiden pohjalta, mutta niiden kuvaukset puhuvat eri kieltä. Chung et al. [Chu98] yhtyy edellisten näkemykseen COM:n ja CORBA:n osalta. COM:in eduksi CORBA:an nähden voidaan katsoa myös alustakohtainen yhtenäisyys: COM:lle on yleensä yksi toteutus alustaa kohti kun taas CORBA:lle useita erilaisia. 7

Web-sovelluskehityksessä on havaittu jakaantumista kahteen teknologialeiriin, joista toinen on keskittynyt Microsoftin COM:in, Internet Exprolorer:in ja ActiveX:n ympärille, ja toinen taas CORBAn, Netscapen ja Java-teknologian ympärille [MoL97]. Selvyyttä siitä, kumpi näistä on parempi, ei kuitenkaan ole. 5 YHTEENVETO Microsoftin COM määrittelee arkkitehtuurin, binääristandardin ja infrastruktuurin komponenttiperustaisten ohjelmistojen kehittämiseen ja käyttöön. Malli erottaa toteutukset niiden rajapinnoista. COM on kieliriippumaton ja ratkaisee versioinnin ongelman komponenttien monirajapintaisuuden avulla. COM:in avulla hajautettujen komponenttiperustaisten palvelujen kehittäminen on helppoa, sillä ohjelmoijien ei tarvitse välittää komponenttien sijainnista. COM on tehokas ja toimiva ratkaisu Windows-alustalla. Windows-alustan lukuisat tukipalvelut ja erinomainen kehitysympäristö tekevät COM-komponenttien käytöstä ja kehityksestä helppoa ja nopeaa. COM:in käytettävyys muilla alustoilla riippuu alustakohtaisesta kehitysympäristöstä. Pelkkä mahdollisuus COM:in käyttöön jollakin alustalla ei välttämättä riitä, vaan myös tukipalveluja tarvitaan. Tärkeiksi seikoiksi käyttöönoton kannalta nousevat alkukustannukset. Windows-alustalla käyttöönottokustannukset ovat alhaiset. COM:in kanssa kilpailevat tekniikat kuten CORBA ja Java RMI keskittyvät samaan ongelma-avaruuteen. Selvää paremmuutta ei näiden välillä ole ja jokaisella näistä on omat etunsa ja ongelmansa. 8

LÄHTEET [BrK98] Brown, N., Kindel, C., The Distributed Component Object Model Protocol DCOM/1.0. Homepage for Microsoft COM/Resourses/Specs, http://www.microsoft.com/com/resources/specs.asp. [25.11.2000] [Bro96] Brockschmidt, K., What OLE is Really About. MSDN Online Library/Technical Articles/Component Object Model/OLE, http://msdn.microsoft.com/library/techart/msdn_aboutole.htm. [25.11.2000] [Chu98] Chung, P. et al., DCOM and CORBA. C++ Report 10, 1 (January 1998), 18-29. [Com95] The Component Object Model Specification. Homepage for Microsoft COM/Resourses/Specs, http://www.microsoft.com/com/resources/specs.asp. [25.11.2000] [Gam95] Gamma, E. et al., Design Patterns : elements of reusable objectoriented software. Addison-Wesley professional computing series, Addison-Wesley, 1995. [Mic98] Microsoft Component Services a Technical Overview. Homepage for Microsoft COM/White Papers, http://www.microsoft.com/com/wpaper/compsvcs.asp. [08.11.2000] [Mil99] Milojicic, D., Middleware s role, today and tomorrow. IEEE Concurrency 7, 2 (April-June 1999), 70-80. 9

[MoL97] Morris, E., Litvak, E., Component Object Model (COM), DCOM, and Related Capabilities. Carnegie Mellon Software Engineering Institute [online]/products and Services/Information Repositories/Software Technology Review/Technology Descriptions, http://www.sei.cmu.edu/str/descriptions/com_body.html. [08.11.2000] [PlS98] Plášil, F., Stal, M., An architectural view of distributed objects and components in CORBA, Java RMI and COM/DCOM. Software Concepts and Tools 19, 1 (June 1998), 14-28. [WaC98] Wang, Y., Chung, P., Exploring Customization of Distributed Systems using COM. IEEE Concurrency Magazine, (July/August/September 1998), -. http://research.microsoft.com/~ymwang/papers/html/comessay/s.htm. [08.11.2000] [WiK94] Williams, S., Kindel, C., The Component Object Model: A Technical Overview. MSDN Online Library/Technical Articles/Component Object Model, http://msdn.microsoft.com/library/techart/msdn_comppr.htm. [08.11.2000] 10