En artikkel utformet av Jakob Breivik Grimstveit
(www.grimstveit.no & jakob@grimstveit.no)
Artikkelen skal gi svar på dette: "Hva er egentlig mellomvare, et forsøk
på klassifisering"
Sist oppdatert torsdag, 3. februar 2000
Hva er det vi egentlig streber etter i hverdagens kjas og mas? Jo, hver og en gjør sitt ytterste for å at man selv er tilfreds, samt at man er viss på at menneskene rundt en føler det samme. Faktisk (tro det eller ei) - det er dette man ønsker å oppnå i forbindelse med informasjonsteknologi også; alt går ut på at hvert enkeltindivid har mest mulig frihet. I en perfekt verden kunne man hanvendt seg til en datamaskin i en eller annen form, knottet inn en forespørsel etter noe ønskelig informasjon (ikke bare uvaskede data, fri bevares!), og vips så var man halvveis med å utføre oppgaven man ønsket å utføre.
Du er kanskje naiv og tror det kommer til å bli slik i den nærmeste framtid. Beklager. Lunsjen får du ta senere, for vi har noe som heter markedsinteresser. Alle ønsker å tjene penger på dine ønsker og interesser (m.m.!). Det er rett og slett flere om beinet. Ett bein og mange interessenter, og vips har vi selskaper som gjør alt for å tjene seg selv og ingen andre. Her kommer faktisk mellomvare inn.
Ettersom alle selskapene nekter å snakke sammen (i alle fall ikke noe særlig bra), kommer faktisk en ny næring opp til overflaten - mellomvare. Ettersom de motstridene markedskreftene ikke vil snakke sammen, får vi skape en forhandler i mellom som tvinger dem til å snakke sammen, om de vil de eller ei. Analyseselskaper sier at det er her fremtiden ligger - mellomvaren. Store penger er å tjene her, ettersom det er når flere informasjonskilder konvergerer at man får ekspert-informasjon som man kan utnytte til virksomhetens fordel ovenfor andre virksomheter. Her slutter forresten tåkepratet, fakta og oppgavebesvarelsen kommer i kapitlene fremover. Stay tuned.
Mellomvare er en svært generell term, og blir dermed ikke enkelt å forklare, faktisk langt derifra. Like fullt er alle enige om at mellomvare er nøkkelelementet for å imøtekomme distribuert databehandling (med andre ord at applikasjonen og data som applikasjonen jobber med ligger på flere forskjellige steder rundt på et system eller nettverk).
Først og fremst er det kanskje litt greitt å få en oversikt over hva ordbøker og lignende sier om nettop mellomvare. PCWorld Norges Mitt Dataleksikon av Arne Uppheim sier følgende: "eng. middleware. Programvare som ligger i mellom to eller flere typer (ellers separate) applikasjoner. Et eksempel kan være programvare som linker et databasesystem til en Web-tjener. Brukeren kan dermed hente data fra databasen via skjemaer i en Web-leser. Begrepet mellomvare benyttes til å beskrive en rekke ulike produkter som fungerer som 'lim' mellom to applikasjoner. CORBA er et annet eksempel på mellomvare."
Dette må man nok si at var en litt for kortfattet innfallsvinkel på temaet mellomvare. En grundigere definisjon følger derfor her:
Noen ganger blir mellomvare spesifisert av programmerere som den samlingen med programkode som muliggjør faktisk kommunikasjon mellom et program og en fysisk enhet. Dette blir helst kalt for en driver, og faller litt utenfor det vi har tenkt å snakke om.
En klassisk definisjon på mellomvare er at den skal fungere som laget mellom en applikasjon og transportsystemet, og skal kunne støtte gjennomsiktighet innen følgende områder:
Sett fra en generell IT-synsvinkel er mellomvare en generell term for programvare som kobler sammen to (eller flere) viktige applikasjoner, som ellers ville vært totalt adskilte. Med andre ord velger man å dele applikasjonen i to eller flere deler langs klient/tjener-skillelinjen. Termen mellomvare blir brukt for å beskrive separate produkter som fungerer som kontaktlim mellom to eller flere applikasjoner. Hvorfor kontaktlim? Jo, fordi man må ha støtte for mellomvare både hos klienten og tjeneren for at kommunikasjonen skal kunne fungere.
Man kan også si at mellomvare er en vag betegnelse for all distribuert programvare som er må kunne støtte samhandlinger mellom klienter og tjenere. Mellomvaren starter med programkallet hos brukeren, via overføringen til tjeneren, utførelsen hos tjener, samt retur av resultat av forespørselen.
Konseptet mellomvare har også blitt omtalt som 'plumbing', fordi det blir koblet sammen to adskilte applikasjoner og data blir sendt mellom disse gjennom koblingen.
Joda, mellomvaren finnes mange steder den, selv om man ikke tror man ser den til daglig. Vi kan nevne blant annet disse som alle tjener innenfor mellomvare-problematikken:
Spesielt er mellomvare designet til å muliggjøre kommunikasjon mellom databaser av forskjellige standarder/produsenter veldig i skuddet.
Det er viktig å forstå at det finnes to grupper med mellomvare, en i klient/tjener-området, og en i tjener/tjener-området. Den mellomvaren som brukeren benytter seg av (grensesnittet) skaper en enhetlig front mot tjeneren. Om det finnes flere tjenere som samarbeider mot et felles mål på grunnlag av hva brukeren har gitt beskjed om, nei det er det ingen som vet (i alle fall i teorien, realiteten er alltid litt ullen). Man må derfor ha en mellomvare som kan hjelpe tjenerene til å samarbeide og jobbe mot et felles mål (som altså er å tilfredstille brukeren). Det er her man finner tjener/tjener-mellomvare.
Noe av det geniale med mellomvare, er at det faktisk tilbyr en skalerbar løsning til databehandling generelt. Ideen bak mellomvaren blir å usynliggjøre vanskelighetsgraden til operativsystemet og nettverket, slik at forskjellige systemer kan samkjøres. Ettersom mellomvare skal få adskilte applikasjoner til å kommunisere/samhandle, kan man utnytte de utallige ressursene som finnes i forskningsmiljøer (universiteter, forskningsparker osv.) innen feltet spesialiserte nettverksressurser. Ettersom applikasjoner de senere tiårene har blitt så enormt omfangsrike (både med tanke på kodelinjer og omfang) at man rett og slett ikke kommer unna mellomvaren. Mellomvare har man nå jobbet med i over 15 år, og man er langt fra i mål ennå. En stor del av problemet er at mellomvaren er nødt til å bli såpass skreddersydd at den blir produktspesifikk. Så vanskelig er det altså å komme til en god løsning når grensesnittene som mellomvaren skal forholde seg til hele tiden blir forskøvet. Like fullt er det viktig å presisere at uten å adskille mellomvaren fra de enkelte applikasjonene, ville de stakkars programmererene aldri kommet i mål - det finnest et vell av protokoller og grensesnitt mellom forskjellige system og platformer som ville gjort jobben for en enkelt gruppe programmerere til et sant mareritt. Utviklere i et distribuert system bruker API til å sende en melding videre. Nettlagene oversetter meldingen til passende protokoll til sendingen. (Disse kan være TCP/IP, HTTP, NetBIOS). Mellomvare er også ansvarlig for oversetting av data mellom systemer, slik som for eksempel UNIX systemer og Windows. Denne oversettingen skjer i bakgrunnen "usynlig" for brukerne av systemet.
Ifølge BEAs strategisjef Jeri Edwards, kan mye av utviklingsarbeidet endres fra koding til det å sette attributter. "Det er som et isfjell, der utvikleren ikke behøver å forholde seg aktivt til annet enn det som er synlig, det vil si CORBA og programmeringsgrensesnittet mot klienten," forklarer hun. "Alt som har med forretningskritiske egenskaper, håndteres av den delen som er usynlig."
Vi vet det; det kan nok være litt vanskelig å se for seg hvor man faktisk bruker mellomvare. Her kommer et svært konkrete eksempel som de aller fleste kjenner seg igjen i. Man kan for eksempel se på alle koblingene man har mellom internett-klienten (som W3-browserene Mozilla Seamonkey, NSCA Mosaic eller Opera) og en eventuell databasetjener (Oracle, mySQL, Sybase). Klienten tilbyr brukeren et grafisk grensesnitt mot databasetjeneren i form av et skjema/en form. Via dette skjemaet/denne formen kan man be om eller legge til informasjon i databasen. Dette gjør at en bruker benytter seg av dynamiske websider basert på brukerens valg, preferanser og profil. Uten mellomvare hadde dette trolig ikke vært mulig.
Det kan også nevnes at både epost og filoverføring er gode eksempler på andre bruksområder for mellomvare.
Nå har vi sett på hva som har skjedd opp til dagens mellomvare-teknologi. Det lurer nok likevel mørke skyer for mellomvare-produsentene, sett fra mitt standpunkt. Internet er kommet for å bli, og blir nå gradvis en større del av folks hverdag. Det er her de store utfordringene (og de store pengesummene) i tiden fremover kommer til å være. Problemet er nemlig at internet har potensialet til å skvise ut en god del av dei eksisterende mellomvare-teknologiene som finnes. Ved innføring av internet i visse sammenhenger, så trenger man knapt noe mellomvare lengre. Internet kan tilby både skalering av tjenester, åpenhet og integritet - på lik linje med mye mellomvare. Forskjellen ligger i at internet som konsept er gratis, noe standard mellomvare ikke er.
Jeg ser en lys fremtid uten mellomvare. En perfekt verden. Kanskje jeg tar feil?
Emne |
URL |
mySQL |
|
Sybase |
|
Oracle |
|
Opera |
|
COM/DCOM |
|
Object Management Group |
|
CORBA |
|
BEA |
|
NSCA Mosaic |
|
DVD-saken |
|
Microsoft |
|
MoRE |
|
Jon Johansen |
|
Mozilla Seamonkey |
Bok: "Client/Server Survival Guide" av Robert Orfaili, Dan Harkley og Jeri Edwards (ISBN 0-471-31615-6)
Ressurs |
URL |
Brukte artikler |
Byte Magazine |
http://www.byte.com/art/9604/sec9/art1.htm http://www.byte.com/art/9604/sec9/art2.htm |
|
DBMS
Magazine |
http://www.dbmsmag.com/9801d04.html |
|
digi.no |
||
Webopedia |
http://webopedia.internet.com/Computer_Science/ |
|
Network
Computing |
http://www.networkcomputing.com/811/811f2.html |
|
Princeton
University |
http://webware.princeton.edu/howard/slides/ |
|
WhatIs |
||
Hamburg
Universitet |
http://avs-www.informatik.uni-hamburg.de/ |
|
Level8
Systems |