DCOM - Distributed Component Object Model Hans Harald Wennersgård Jørn Anders Svendsen.

Slides:



Advertisements
Liknende presentasjoner
HVA ER ?.
Advertisements

Høgskolen i Oslo Webprogrammering Tilstandsbevaring Sessions og cookies.
Hvordan etablere nettbutikk med GoOnline Commerce
Kontoinnstillinger Slik kommer du til «Kontoinnstillinger»:
HVA ER ?.
Lag film. Lag video •Videoteknologien har utviklet seg raskt de siste årene. Digital video er i ferd med å avløse analoge systemer. Med digital video.
1 Objektorientert samvirke - del 4 av Arne Maus, Institutt for informatikk, Universitetet i Oslo.
Kapittel 6 Data Backup Service. Tradisjonell arkitektur •Mange klienter •En server (evt. et cluster) •Klientene tar backup m jevne mellomrom •Inkrementell.
Sikkerhet - bakgrunn og introduksjon til kryptosystemer
Tjenestebasert design med dynamiske proxyer og Spring Bjørn Vidar Bøe, JavaZone 2005.
Programmering i Java versjon januar 2005 Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else.
Gruppe 6 Gunnar Henrik Mathias Morten Ronny Svein Ivar.
Begrenset redigering “Klubbjournalister” For web ansvarlig klubb.
Objektorientert programmering i PHP del 2
IS-102 Klassedefinisjoner
Java Server Faces (JSF) en introduksjon Frode Eika Sandnes.
Databasehåndtering med MySQL
C# for javaprogrammerere
Aksess kontroll None shall pass.
Operativsystemer.  Tilstandsmaskiner kalles på engelsk Finite State Machines.  Tilstandsmaskiner er en metode til å beskrive systemer med logisk og.
Klient - server nettverk Et nettverk består (ofte) av en (eller flere) server(e), og mange klienter. Klientene bruker tjenester levert av servere(ne).
Klient - server nettverk Et nettverk består (ofte) av en (eller flere) server(e), og mange klienter. Klientene bruker tjenester levert av servere(ne).
Android-Programmering Våren Oversikt – PendingIntents Rollen til PendingIntents Vanlig bruk Deling Sending.
Oppkobling VPN.
IPSec og VPN.
Kryptering og nettverkssikkerhet Third Edition by William Stallings.
Gruppe 32E presenterer. Windows 2003 Server Novell Netware 6.5.
8.4 Sikkerhetshåndtering Nøkkelhåndtering Gruppe av servere skal legge til et nytt medlem Autentisering/delegering (kapabiliteter, sertifikater)
Løsning hos RSH Norge En gjennomgang av løsning hos Reitan Servicehandel Norge Edvard Gundersen – ProfitBase AS Løsningsarkitekt.
Gruppe 3 – Presentasjon 2 Henning Kristiansen, Mats Lindh, André Hauge og Vegard Simensen.
Testing av system Gruppe 6 Henrik Bækhus Morten A. Iversen Mathias Bondeson Gunnar K. Kulleseid Svein Ivar Kristiansen Ronny Hulthin.
DEKOMPONERING OG MODULARITET ~Gruppe 4~. Gjennomgang Designtyper/kriterier innen dekomponering Dekomponeringsspesifikasjon Strukturert og objektorientert.
Singleton & Adapter Pattern Gruppe 3. Singleton Pattern Sørger for at en klasse kun kan ha en instans Vanligvis implementert med globale variabler –Singleton.
Object Oriented Measurement
Programmering i Java versjon Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik.
Programmering i Java versjon desember 2002 Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else.
Active Server Pages Dynamic content in Microsoft Internet Information Server 4.0+
Høgskolen i Oslo Web-programmering Feilhåndtering i PHP.
Høgskolen i Oslo Webprogrammering Ajax og PHP. I dag l Hvordan få en bedre brukeropplevelse via Ajax- script l Gjennomgang av kode l Oppgaveløsning på.
Publisering på verdensveven Kursdag 2 VÅFF, våren 2002.
Dynamiske nettsider PHP Del 1 – variable. PHP  PHP (Personal Home Page)  Fritt tilgjengelig programmeringsspråk  åpen kildekode  Plattformuavhengig.
PARLAY/OSA Referanser: Referanser Foredraget er i all hovedsak basert på to artikler. Disse kan finnes på:
The Peer-to-Peer Architecture Av Ingunn Lund og Anja Lønningen.
INF 4130 Eksamen 2008 Gjennomgang.
Oppgaver til kodegenerering etc. INF-5110, 2013 Oppgave 1: Vi skal se på koden generert av TA-instruksjonene til høyre i figur 9.10 i det utdelte notatet,
SharePoint Server 2007 Office Communications Server 2007 Exchange Server 2007 Windows Server 2003 Office 2007 Hovedprosjekt 17E Installasjon, konfigurasjon.
CORBA Noen hull som må fylles: ORB Object Adapters CORBA services IDL Factory Objects.
PUG-NORWAY OKTOBER 2008 THOMAS SKJØRTEN, HILDE ANDREASSEN UML og OpenEdge OOABL.
Tabeller Dette er en tabell, eller array. Den kan defineres sånn som dette: public int[] heltallsTabell = new int[11]; //Her er 11 tabellens lengde for.
Bachelorprosjekt - Oppgave 17E
1 Java Database Connectivity (JDBC) Norvald H. Ryeng
Katalog med tjenester n Masse tjenester, men det er ikke lett å finne de. n Tjeneste tilbyder må selv kunne oppdatere. n Tjenesten selv forteller hva den.
Freenet A Distributed Anonymous Information Storage and Retrieval System.
Main metoden n public static void main(String[] args){ } n Inni denne metoden skjer alt! n Det kan bare finnes en main metode per program. n Den kan ligge.
RBA ved System Center Configuration Manager 2012 Ernesto Gonzalez USIT - Gruppe for Windowsdrift.
1 GeoPortal – Rammeverk Introduksjon. 2 Teknisk rammeverk - Interoperabilitet Interoperabilitet evne til å kommunisere, kjøre programmer, eller overføre.
Security Considerations for Peer- to-Peer Distributed Hash Tables TDT2 – Avanserte Distribuerte Systemer Lars-Erik Bjørk.
Web-grensesnitt Øyvind A. Bratne - April 2004.
Android-Programmering Våren Oversikt Ytelse vs responsivitet Strategier for og opprettholde responsiviteten Tråder Asynchronous Task.
Vibeke IT-seksjonen LU - LUVIT brukere våren PUS Luvit undervisning våren 2002 Hvordan lære opp studentene i LUVIT?
Vibeke IT-seksjonen LU - LUVIT brukere våren PUS Luvit undervisning våren 2001 Hvordan lære opp studentene i LUVIT?
Object  Klassen i java  Alle klasser arver fra denne om ikke noe annet blir spesifisert  ArrayList.add(Object instans)  Alle elementer formes til Object.
Prosjekt 52E Installasjon, konfigurasjon og bruk av System Management Server 2003.
Protokoller Pensum: Olsen, kap. 5 og 6. Kommunikasjonsprotokoll Rutiner for å administrere og kontrollere oversending av data Telefonsamtale (”Hallo”,
JADE-LEAP AmbieSense er et EU støttet forskningsprosjekt. I dette prosjektet prøver man å integrere nye typer teknologi for bruk på mobile enheter I den.
Kapittel 4 Skriving av klasser. 4.1 Anatomien til ein klasse Så langt har vi brukt ferdige klasser frå klassebiblioteket i Java Vi lagar objekt og brukar.
Android-Programmering Våren Oversikt Long-running operasjoner Introduksjon til Android services On-demand service Bruk av servicer på tvers av prosesser.
Trafikantens mobile sanntidssystem Presentasjon INF5261.
© UNIVERSITETETS SENTER FOR INFORMASJONSTEKNOLOGI UNIVERSITETET I OSLO USIT Side 1 Patching En patch er en fiks for en eller flere feil i et program/operativ.
Fagleg forum, 27. mars 2003 Tor Hovland
Utskrift av presentasjonen:

DCOM - Distributed Component Object Model Hans Harald Wennersgård Jørn Anders Svendsen

Introduksjon – DCOM bygger på COM-teknologi utviklet av Microsoft Corp., i motsetning til CORBA som er utviklet i fellesskap av en komité medført en mindre bra arkitektur og design men, pga Windows store utbredelse er den mye brukt

COM – Component Object Model (1) objekt/komponent er en bit kompilert kode som tilbyr en tjeneste hovedhensikten med COM er å lage komponenter som kan aktiveres dynamisk og kommunisere med hverandre app./komponenter kommuniserer gjennom ”interfaces” ved at klient- komponenten har interface-pekere

COM – Component Object Model (2) angir en binærstandard –komponenter kan implementeres i en rekke ulike språk –klienten som bruker komponentene kan igjen være skrevet i et helt annet språk –krever at språket støtter kall via pekere (C, C++, Ada, Smalltalk) interfacene er tabeller med pekere til implementasjonen av metodene.

Virtual function tables (VTBL) binærstandarden definerer hvordan utlegget av VTBL skal være i minnet og hvordan kallene gjøres

Interfaces som sagt: interfacene angir en komponents funksjonalitet interfacene defineres i IDL (Interface Description Language) interfacene endrer seg aldri interfacene er en ”kontrakt” ny funksjonalitet blir lagt til ved legge til nye interfacer [ object, //Use the GUID for the ILookup interface. uuid(c4910d71-ba7d-11cd-94e a8a3), pointer_default(unique) ] interface ILookup : IUnknown { import "unknwn.idl“ HRESULT LookupByName( [in] LPTSTR lpName, [out, string] WCHAR **lplpNumber); HRESULT LookupByNumber( [in] LPTSTR lpNumber, [out, string] WCHAR **lplpName); } IID alle komponenter arver fra IUnknown

Globally Unique Identifiers (GUIDs) identifiserer alle interfacene (IID) og alle COM-komponentene (CLSID) 128 bit integer genereres ut i fra: –stort random-nummer –lokaltid –nettverksadressen muligheten for at det finnes to like GUIDs tilnærmet lik 0. DEFINE_GUID(CLSID_PHONEBOOK, 0xc4910d70, 0xba7d, 0x11cd, 0x94, 0xe8,\ 0x08, 0x00, 0x17, 0x01, 0xa8, 0xa3); DEFINE_GUID(IID_ILOOKUP, 0xc4910d71, 0xba7d, 0x11cd, 0x94, 0xe8,\ 0x08, 0x00, 0x17, 0x01, 0xa8, 0xa3);

Microsoft IDL compiler ut i fra IDLen genereres: –header-filer : brukes av applikasjoner som bruker interfacen –kildekode til proxy- og stubobjekt : håndterer ”remote procedure calls” –type library (*.tlb) : informasjon om typer (aliases, enumerations, structures, or unions) og objekter (module, interface o.l)

IUnknown implementeres av alle COM-komponentene interface IUnknown { virtual HRESULT QueryInterface(IID& iid, void** ppvObj) = 0; virtual ULONG AddRef() = 0; virtual ULONG Release() = 0; } QueryInterface : lar klienten dynamisk finne ut om en interface er støttet av COM- komponenten AddRef og Release : teller antall referanser til komponenten. Når antallet referanser er 0 kan komponenten frigjøres fra minnet.

La oss se på et eksempel LPLOOKUP *pLookup; TCHAR szNumber[64]; HRESULT hRes; hRes = pPhoneBook->QueryInterface( IID_ILOOKUP, &pLookup); if( SUCCEEDED( hRes ) ) { pLookup->LookupByName("Daffy Duck", &szNumber); pLookup->Release(); } else { // Failed to acquire Ilookup interface pointer. } Fått tak i denne med kall til CreateInstance(CLSID_PHONEBOOK) Hei! Støtter du ILookup interfacet? Du støtter interfacet ja! Flott, fyll inn pekerverdien her er du snill. Done! Du kan ”unload’e” deg fra minnet nå for min del. Interface Identifier

Komponentaktivering sørge for at komponenten ”er lagd” og finnes i en prosess hvor den kan motta metodekall Eksempel (Windows): SCM Service Control Manager (Local or Remote) 1. CreateInstance(CLSID_TEST) 3. Path til implementasjonen 2. Lookup CLSID_TEST Windows Registry 5. Peker til IUnknown Server Component 4. Starter opp serveren komponeten hører til 3 typer servere: In-process (DLL, OCX) Local (EXE) Remote (EXE) Client app

3 type servere Client Process Client Application In-Process Server In-Process Object Local Object Proxy COM Remote Machine Remote Server Process Stub COM RPC Local Server Process Stub COM RPC Remote Object Proxy Local Server Local Object Remote Object Remote Server

Kommunikasjon (1) Opprinnelig var kommunikasjonen i DCOM synkron (dvs klienten blokkert inntil svar) Utvidet med callback interfaces (connectable objects) Connectable object Client Sink Incoming intf. Outgoing intf. I COM+ ble det mulig å avbryte synkron- kommunikasjon (cancel object) Asynkron: ved å angi async_iid() i IDL- fila vil det for hver metode i interfacen bli generert to metoder

Kommunikasjon (2) Eksempel (IDL-fil): HRESULT GetStudent([in] UINT uStudentID, [out] IStudent** ppStudent); async_iid(…) HRESULT Begin_GetStudent([in] UINT uStudentID); HRESULT Finish_GetStudent([out] IStudent** ppStudent); Kall til Begin_ returnerer øyeblikkelig Svar hentes ut ved kall til Finish_ (bufres inntil det hentes ut) Hvis Finish_ kalles før serverkomponenten er ferdig vil klienten blokkeres inntil svaret kommer (kan spørre ISynchronize om svaret har kommet) Krever at begge (klient og server) er ”oppe” (transient communication)

Events (1) publish/subscribe system avsender ikke direkte tilknyttet mottaker(ne) som var tilfelle med connectable objects en event class imellom avsender og mottaker håndterer kommunikasjonen mottakere implementerer event- interfacet og mottar events gjennom dette (distribuert fra event-klassen)

Events (2) event-klassen gjør det mulig for avsenderen og mottakerne og ha ulik ”levetid” mottakerne kan velge å abonnere på kun utvalgte metoder (filtrering) events kan lagres i event-klassen Publisher Event Class IMyEvents MyEvents Subscriber MyEvents Subscriber MyEvents Subscriber IMyEvents Subscribers Subscriptions

Messaging (1) persistent asynkron kommunikasjon vha Queued Components (QC) begrenset til interfaces med metoder som kun har inn- parametere (kun en vei) når en klient binder seg til en klient som støtter QC får den tilbake en interface-peker med metodene den kan kalle asynkront

Messaging (2) kallene lagres lokalt hos klienten (sendes ved kall til Release) det gis ingen garanti for at metodene kalles i samme rekkefølge, men det finnes støtte for transaksjonskøer passer for situasjoner som ikke krever øyeblikkelig respons garantert levering ligner på , men er mellom applikasjoner

Objekthåndtering alt rundt håndtering av objekter på serveren er i utgangspunktet overlatt til utvikleren utvikleren er selv ansvarlig for at serveren har nok tilgjengelig ressurser ved opprettelse av objekter men, DCOM tilbyr fasiliteter for objekthåndtering, JIT Activation.

Akkurat-Tidsnok-Aktivering serveren kontrollerer aktivering og destruering av objekter ved bruk av ATA kan serveren destruere et objekt når den vil, for eksempel når minnet begynner å gå fullt. når en klient da prøver å aksessere et objekt som er destruert, blir det bare opprettet et nytt objekt. fungerer bra med tilstandsløse objekter. hvis objektet ikke er tilstandsløst, må tilstanden skrives til disk før objektet destrueres og hentes inn igjen når nytt objekt opprettes.

Navngivning DCOM tilbyr bare lavnivå navngivning av objekter. interface-pekere er brukt for å referere til objekter DCOM tilbyr persistente objektreferanser, monikers, som kan deles mellom flere prosesser. DCOM kan benytte seg av Windows Active Directory som høynivå navngivningstjeneste.

Monikers en persistent objektreferanse som kan lagres på disk. hver moniker tilbyr en interface med metoder for å lagre innholdet av den på disk. flere typer monikers: –file moniker: refererer til et objekt som skal lages ut fra en fil i det lokale filsystemet. inneholder stien til filen som objektet skal lages fra og CLSID til klassen som objektet skal lages fra. –URL moniker: referanse til et objekt som skal konstruert fra en url. –Class moniker: referanse til et klasseobjekt brukt sammen med file eller url moniker. overskriver standard klasseid oppslagsmekanisme. –composite moniker: referanse til en samling med monikers –Item moniker: referanse til en moniker i en samling –Pointer moniker: referanse til et objekt i en fjernprosess.

Koble moniker til et objekt: (file moniker) klienten kaller BindToObject som er tilbudt gjennom interfacen iMoniker Moniker henter opp tilhørende CLSID og ber SCM å opprette objekt av klassen SCM oppretter objekt av klassen peker til objektets interface returneres til moniker-objektet moniker ber objektet laste tidligere lagret tilstand. objektet henter tilstand fra fil moniker returnerer interfacepekeren til klienten og legger objektet inn i Running Object Table (ROT)

Deling av objekter når en klient binder en moniker til et objektet, vil moniker først slå opp i Running Object Table hvis objektet finnes der (det er allerede opprettet), vil monikeren koble til den instansen av objektet. på den måten deles objekter mellom ulike prosesser på samme maskin.

Active Directory DCOM applikasjoner kan benytte seg av Windows Active Directory som katalogtjeneste Active Directory tillater mer generelle spørringer enn en DCOMs egen lavnivå navngivningstjeneste. (må ikke ha navnet eksakt)

Feiltoleranse DCOM tilbyr støtte for feiltoleranse på protokollnivå. En ping-mekanisme brukes for å detektere nettverk og klient-hardware-feil. Hvis nettverket kommer opp igjen innen en gitt timeout, gjenoppretter DCOM forbindelsen automatisk. feiltoleranse også støttet gjennom bruk av automatic transaction. Dette går ut på at utvikler kan gruppere flere metodekall, på ett eller flere objekter, til en transaksjon.

Sikkerhet DCOM gjør bruk av sikkerhetsrammeverket i Windows. To forskjellige metoder som blir brukt for sikkerhet i DCOM –Declarative security –Programmatic security

Declarative security for hver komponent defineres det i registeret hva som kreves mht: –aktivisering –aksesskontroll –autentisering. registeret vil da spesifisere hvilke brukere/brukergrupper som har rettigheter til å opprette objekt av komponenten etc. ulike nivåer av autentisering

Eksempel

Programmatic security ved siden av den deklarative sikkerheten, kan man la utviklerne av applikasjonene benytte seg av ulike sikkerhetstjenster i DCOM alle objekter innenfor en prosess har i utgangspunkt samme sikkerhetsinnstillinger utvikleren kan sette egne sikkerhetsinnstillinger på objekter ved å eksplisitt angi dette.

Autentisering og Autoriseringstjenester autentiseringstjenester i DCOM Autoriseringstjenester i DCOM

Eksempel