Distributed Component Object Model. Utvikling av distribuerte applikasjoner. Utvidelse av COM for støtte av distribuerte objekter

Like dokumenter
Java RMI. Introduksjon. Markus Foss Hans-Gunnar Vold

DCOM. 21. oktober Mai et al. Hva er egentlig en komponent?

Hentet fra Suns Totorial:

Stein Gjessing. Institutt for informatikk. Universitetet i Oslo. Institutt for informatikk

CORBA Objektmodell (Java RMI)

Java RMI (Remote Method Invocation) Gruppe 9: Ivar Steien Rasmussen Tom Anders Dalseng Andreas Petlund

Basert på en artikkel fra Microsoft propaganda November 1996

CORBA Component Model (CCM)

2. HVA ER EN KOMPONENT?

Gruppe 11. Frank Petter Larsen Vegard Dehlen

Distribuerte objekter og objekt-basert mellomvare

Distribuerte objekter og objekt-basert mellomvare

Distribuerte objekter og objekt-basert mellomvare

INF Notater. Veronika Heimsbakk 10. juni 2012

OOT Seminar H-97 CORBA. Praktisk del

J2EE. CMP Entity Beans, Transaksjoner, JSP

Løsningsforslag Test 2

Gjøre noe i hele treet = kalle på samme metode i alle objekten. Java datastruktur Klassestruktur

2 Om statiske variable/konstanter og statiske metoder.

INF1010. Grensesnittet Comparable<T>

Distributed object architecture

INF1010, 15. januar time. Parametriserte klasser (generiske klasser) Stein Gjessing Inst. for Informatikk Universitetet i Oslo

COM. Hva er COM? The Component Object Model. Microsoft sitt rammeverk for å lage og bruke komponenter

Eks 1: Binærtre Binærtretraversering Eks 2: Binærtre og stakk

Løsningsskisse, eksamen J2EE og distribuerte systemer 19.mai 2004

INF1010, 21. februar Om å gå gjennom egne beholdere (iteratorer) Stein Gjessing Inst. for Informatikk Universitetet i Oslo

Avdeling for ingeniørutdanning Institutt for teknologi

Array&ArrayList Lagring Liste Klasseparametre Arrayliste Testing Lenkelister

UNIVERSITETET I OSLO

1- og 2-veis Innkapsling Java Stabel Kø Prio-kø Iterator. Enveis- og toveislister Innkapsling («boxing») (Big Java 6.8.5)

Fra Python til Java, del 2

Kapittel 9. Distribusjon. Fjernbruker. Tjenermaskin LAN WAN. Nærbruker. Figur 9-1: En enkel klient/tjener distribusjon

Utfordringer til mellomvare: Multimedia

Array&ArrayList Lagring Liste Klasseparametre Arrayliste Testing Lenkelister Videre

1- og 2-veis Innkapsling Java Stabel Kø Prio-kø Iterator. Enveis- og toveislister Innkapsling («boxing») (Big Java 6.8.5)

Oppsummering. Kort gjennomgang av klasser etc ved å løse halvparten av eksamen Klasser. Datastrukturer. Interface Subklasser Klasseparametre

2 Om statiske variable/konstanter og statiske metoder.

INF1010, 22. mai Prøveeksamen (Eksamen 12. juni 2012) Stein Gjessing Inst. for Informatikk Universitetet i Oslo

Implementering av caching ved hjelp av Spring. Christian Vestøl

Eksamen i Internetteknologi Fagkode: ITE1526

Introduksjon til objektorientert programmering

NB!!! Veldig korte svar er gitt her. Disse burde det vært skrevet mer på ved en eksamen..

Eksekveringsrekkefølgen (del 1) Oppgave 1. Eksekveringsrekkefølgen (del 2) Kommentar til oppgave 1. } // class Bolighus

Kapittel 8: Programutvikling

Diverse eksamensgaver

Objekt med Java. Harald Yndestad Høgskolen i Ålesund

Å lese tall fra en fil, klassen Scanner

INF1010, 21. januar Klasser med parametre = Parametriserte klasser = Generiske klasser

INF1000 EKSTRATILBUD. Stoff fra uke 1-5 (6) 3. oktober 2012 Siri Moe Jensen

Hittil har programmene kommunisert med omverden via tastatur og skjerm Ønskelig at data kan leve fra en kjøring til neste

UNIVERSITETET I OSLO

(MVC - Model, View, Control)

Kapittel 9: Sortering og søking Kort versjon

Tilstandsmaskiner med UML og Java

Forkurs INF1010. Dag 2. Andreas Færøvig Olsen Gard Inge Rosvold Institutt for Informatikk, 14.

GUI («Graphical User Interface») del 2

LocalBank Prosjektbeskrivelse

INF1010 Binære søketrær ++

Introduksjon til objektorientert. programmering. Hva skjedde ~1967? Lokale (og globale) helter. Grunnkurs i objektorientert.

Innhold uke 4. INF 1000 høsten 2011 Uke 4: 13. september. Deklarasjon av peker og opprettelse av arrayobjektet. Representasjon av array i Java

INF1010 våren 2017 Onsdag 25. januar. Litt om unntak i Java

I et Java-program må programmøren lage og starte hver tråd som programmet bruker. Er dette korrekt? Velg ett alternativ

< T extends Comparable<T> > Indre klasser mm. «Det du bør ha hørt om før oblig 4»

Post-it spørsmål fra timen (Arv og subklasser)

INF1010 Rekursive metoder, binære søketrær. Algoritmer: Mer om rekursive kall mellom objekter Ny datastruktur: binært tre

La oss begynne med en repetisjon av hva som skjer når du kjører Javaprogrammet

INF1010 våren Arv og subklasser del 1

Repitisjonskurs. Arv, Subklasser og Grensesnitt

Http- og WebServices funksjoner

UNIVERSITETET I OSLO

Av Stein Gjessing, Institutt for informatikk, Universitetet i Oslo

Time-Independent Invocation(TII) and Interoperable Routing

INF Våren Li' repe$sjon om Tråder og GUI. Stein Gjessing, Ins$tu' for informa$kk, Universitetet i Oslo. Ins$tu' for informa$kk

Objektorientert Programmering Ekstraordinær eksamen 2014

Sortering med Comparable og Comparator

Socket og ServerSocket

INF 1010, vår 2005 Løsningsforslag uke 11

UNIVERSITETET I OSLO

TOD063 Datastrukturer og algoritmer

Innføring i SOAP. Agenda

Endringer rundt aktivering av Microsoft Windows Vista

Eksamen Objektorientert Programmering 2012

Eksamen. Objektorientert Programmering IGR 1372

Konstruktører. Bruk av konstruktører når vi opererer med "enkle" klasser er ganske ukomplisert. Når vi skriver. skjer følgende:

Sortering med tråder - Quicksort

GUI («Graphical User Interface») del 2

Læringsmål uke 7. Objektorientert programmering i Python: Introduksjon. Innhold uke 7. Lite tilbakeblikk: Programflyt og skop

INF1010 Eksamenstips. Løsningsforslag prøveeksamen del 1.

OpenCOM. Del av et forskningsprosjekt ved Lancaster University, UK

1. Krav til klasseparametre 2. Om å gå gjennom egne beholdere (iteratorer) Stein Gjessing Inst. for Informatikk Universitetet i Oslo

Kapittel 7: Mer om arv

Læringsmål for forelesningen

Object interaction. Innhold. Abstraksjon Grunnleggende programmering i Java Monica Strand 3. september 2007.

Tråder Repetisjon. 9. og 13. mai Tråder

Installasjon av nettverkslås DDS-CAD 6.4.

En klasse som arver, eller selv deklarerer en abstrakt metode, må deklareres som abstrakt.

INF 1000 (uke 2) Variabler, tilordninger og uttrykk

IN1010. Fra Python til Java. En introduksjon til programmeringsspråkenes verden Dag Langmyhr

Program delegate. Lage et nytt prosjekt i Visual Studio

Hvorfor objektorientert programmering? Objektorientert programmering i Python: Introduksjon. Læringsmål uke 7. Undervisning og pensum IN1000

Transkript:

DCOM Distributed Component Object Model Almir Delkic og Frank Jensen Institutt for Informatikk, Universitetet i Oslo, oktober 2003 Introduksjon Utvikling av distribuerte applikasjoner Utvidelse av COM for støtte av distribuerte objekter Utviklet av Microsoft, men styres nå av ActiveX Consortium

Motivasjon Feil-tolerent ovenfor hardware feil Passer like bra til små og store nett Robust ved nettverksfeil Godt egnet til heterogene klienter Effektiv utnyttelse av nettverk COM Spesifikasjon for å bygge software komponenter Pakke eller modul (EXE/DLL) Binær standard Tillater sømløs sammarbeid mellom heterogene komponenter

Arkitektur 1 COM komponenter i samme prosess Direkte kommunikasjon mellom klient og komponent Kommuniserer uten overhead Arkitektur 2 COM komponenter i forskjellige prosesser Ikke mulig å kalle komponenter direkte COM tar seg av kommunikasjonen transperent for programmereren

Arkitektur 3 COM komponenter på forskjellige maskiner Interprosess kommunikasjon erstates med netverksprotokoll transperent for både klienten og komponenten Gjenbruk Direkte gjenbruk av COM komponenter Tredjepartskomponenter

Lokasjonsuavhengighet Skjult lokasjon Komponenter kan kjøre på lokasjoner som gir mest mening Språkuavhengighet COM utvikles vha valgfritt språk Dette gjør DCOM språkuavhengig

Connection Management Teller antall tilkoblede klienter for hver komponent Hvis telleren går til null frigjøres komponenten Automatisk garbage collection Bruker ping protokoll Skalering 1 Symmetric Multiprocessing DCOM håndterer thread pool automatisk optimalisering i forhold til antall prosessorer

Skalering 2 Flexible Deployment Parallel deployment Skalering 3 Flexible Deployment Isolering av kritiske komponenter

Skalering 4 Flexible Deployment Pipelining Versjonshåndtering COM komponent kan tilby forskjellige grensesnitt til forskjellige klienter

Ytelse Metodekall i én prosess ingen overhead Interprosess metodekall ca 1000 ganger tregere metodekall må mellomlagres i buffer Fjerne metodekall ca 35% overhead over TCP/IP Båndbredde og latenstid foretrukket UDP protokoll bruker ping slår sammen pinger for samme klient som bruker flere komponenter forskjellige applikasjoner deler på en felles håndtering slår sammen flere metodekall i ett

Sikkerhet bruker innebygget sikkerhet i Windows NT Access Control Lists (ACL) for komponenter Blaster ormen: sårbarheter i protokollen RPC DCOM DCOM vs CORBA Binær standard Object Remote Procedure Call Verdi/referanse parameter er valgfritt Exceptions i IDL er ikke ok Exceptions kastes vha HRESULT return verdi Definerer eget interface ID Impl har Class IDs, CLSID, mappes i registry Distributed Garbage Collection (vha ping) Kun en spesifikasjon Internet Inter-ORB Protocol Kun interface typer sendes som referanse Exceptions i IDL er ok Exceptions kastes på vanlig måte Interface navn er ID Impl finnes vha Implementation Repository Ingen distribuert Garbage Collection

Grensesnitt (IDL) [ uuid(7371a240-2e51-11d0-b4c1-444553540000), version(1.0) ] library SimpleStocks importlib("stdole32.tlb"); [ uuid(bc4c0ab0-5a45-11d2-99c5-00a02414c655), dual ] interface IStockMarket : IDispatch HRESULT get_price([in] BSTR p1, [out, retval] float * rtn); [ uuid(bc4c0ab3-5a45-11d2-99c5-00a02414c655), ] coclass StockMarket interface IStockMarket; ; ; module SimpleStocks interface StockMarket float get_price(in string symbol); ; ; Klient import simplestocks.*; import com.ms.com.comfailexception public class StockMarketClient public static void main(string[] x) try IStockMarket market = (IStockMarket) new StockMarket(); float price = market.get_price("my_company") ); catch (ComFailException e) import org.omg.corba.*; import org.omg.cosnaming.*; import SimpleStocks.*; public class StockMarketClient public static void main(string[] x) try ORB orb = ORB.init(); NamingContext root = NamingContextHelper.narrow( orb.resolve_initial_references("names ervice") ); NameComponent[] name = new NameComponent("NASDAQ",""); StockMarket market = StockMarketHelper.narrow(root.resolve (name)); float price = market.get_price("my_company")); catch(exception e )

Server implementasjon import com.ms.com.*; import simplestocks.*; public class StockMarket implements IStockMarket private static final String CLSID = "BC4C0AB3-5A45-11d2-99C5-00A02414C655"; public float get_price( String symbol ) return 1.234; import org.omg.corba.*; import SimpleStocks.*; public class StockMarketImpl extends StockMarketPOA public float get_price( String symbol ) return 1.234; Server oppstart Internet Explorer In-process-server javareg Gjør endringer i registryen slik at komponentene alltid kjører Vanlige metodekall i en main - metode

Sammenligning: IDL Spesiell syntaks parametere returverdi, alltid vha parameter alle metoder returnerer HRESULT implementerer IDispatch diverse id er navn på klasse som skal implementere et grensesnitt (coclass) Spesiell syntaks Enkel parametere Sammenligning: Klient Referanse til objekt finnes automatisk av vha CLSID Lage objekt og caste til riktig grensesnitt Bruke metoder Mer automatisk Må initiere ORB Finne referanse til objekt F eks vha Naming Service Lage objekt og caste til riktig grensesnitt Bruke metoder Mer manuelt

Sammenligning: Server Må implementere metoder fra grensesnittet Må definere strengen CLSID Lik uuid fra IDL Må implementere metoder fra grensesnittet Må arve fra en Object Adapter e.l. f eks en POA-klasse Sammendrag Binært, slik at kildekode skjules Kan bruke gamle COMkomponenter Enkelt å lage klienter Flere ting er automatisk Garbage Collection Språkuavhenig Open source Flere ting er manuelt Kan lage grensesnitt til gamle klasser, indirekte Språkuavhengig

Referanser MSDN Library http://msdn.microsoft.com/library/default.asp?url=/library/backgrnd/html/ms dn_dcomtec.htm Gopalan Suresh Raj http://gsraj.tripod.com/misc/compare.html