DCOM

Den aktuelle version af siden er endnu ikke blevet gennemgået af erfarne bidragydere og kan afvige væsentligt fra den version , der blev gennemgået den 17. august 2017; checks kræver 4 redigeringer .

DCOM ( engelsk  distribueret COM ) er en udvidelse af Component Object Model- standarden til at understøtte kommunikation mellem objekter på forskellige computere over et netværk .

Sådan virker det

For at oprette et objekt på en ekstern maskine, ringer COM-biblioteket til Service Control Manager (SCM) på den lokale computer, som kontakter serverens SCM og sender den en anmodning om at oprette et objekt. Servernavnet kan angives, når funktionen til oprettelse af objekter kaldes, eller gemmes i registreringsdatabasen.

For at kalde et eksternt objekt skal parametre hentes fra stakken (eller fra processorregistre ), placeres i en buffer og transmitteres over netværket. Processen med at udtrække parametre og placere dem i en buffer kaldes marshaling . Denne proces er ikke triviel, da parametre kan indeholde pointere til arrays og strukturer, som igen kan indeholde pointere til andre strukturer. På serveren udføres den omvendte proces med at genskabe stakken, kaldet unmarshaling, hvorefter det påkrævede objekt kaldes. Når opkaldet er afsluttet, samles returværdien og outputparametrene og sendes til klienten .

For at udføre marshaling og unmarshaling skal du have en nøjagtig beskrivelse af metoden, herunder alle datatyper og arraystørrelser. Beskrivelsen bruger Interface Description Language (IDL), der er inkluderet i DCE RPC -standarden . De resulterende beskrivelsesfiler kompileres af en speciel IDL - compiler til C -kildekode, der samler og unmarshaler for de angivne grænseflader . Koden, der kører på klientsiden, kaldes en "proxy", på objektsiden kaldes den " stub ", og indlæses af COM-biblioteket efter behov.

Objekt RPC

DCOM-protokollen, kendt som Object RPC (ORPC), er en udvidelse af DCE RPC-protokollen. ORPC bruger standard RPC-pakker med yderligere oplysninger, der kræves af DCOM. Opkaldshovedet indeholder en interface pointer identifier (IPID), der bruges til at identificere den nødvendige grænseflade for det påkrævede objekt på serveren, og parametrene begynder med et yderligere implicit argument.

Dataene i ORPC-pakken transmitteres i standard NDR-formatet med en ekstra datatype, der repræsenterer objektidentifikatoren.

Klienten skal med jævne mellemrum bekræfte sin aktivitet ved at "pinge" serveren. Hvis ping-perioden udløber uden at modtage et ping, anses klienten for at være gået ned, og alle dens referencer til objektets grænseflader er ødelagt.