Delen via


De OLE-handler

Een OLE-handler is een DLL met verschillende interactieonderdelen die worden gebruikt voor het koppelen en insluiten van inhoud. Om de kosten van constante communicatie tussen processen tussen een container en de server te voorkomen, wordt de handler in de procesruimte van de container geladen om namens een server te handelen als een soort surrogaatproces. De OLE-handler beheert containeraanvragen die niet de aandacht van de servertoepassing vereisen, zoals aanvragen voor tekenen. Wanneer een container iets aanvraagt dat de objecthandler niet kan leveren, communiceert de handler met de servertoepassing met behulp van het COM out-of-process communicatiemechanisme.

De OLE-handleronderdelen omvatten externe onderdelen voor het beheren van de communicatie tussen de handler en de server, een cache voor het opslaan van de gegevens van een object (samen met informatie over hoe die gegevens moeten worden opgemaakt en weergegeven), en een beheerobject dat de activiteiten van de andere onderdelen van de DLL coördineert. Als een object een koppeling is, bevat het DLL-bestand ook een koppelingsonderdeel of gekoppeld object, waarmee de naam en locatie van de koppelingsbron worden bijgehouden.

OLE biedt een standaardhandler die de meeste toepassingen gebruiken voor het koppelen en insluiten van inhoud. Als de standaardwaarde niet overeenkomt met de vereisten van uw server, kunt u de standaardhandler volledig vervangen of delen van de functionaliteit gebruiken die het biedt, indien van toepassing. In het laatste geval wordt de toepassingshandler geïmplementeerd als een geaggregeerd object dat bestaat uit een nieuw besturingsobject en de standaardhandler. Combinatietoepassing/standaardhandlers worden ook wel in-process handlersgenoemd. De remoting-handler wordt gebruikt voor objecten waaraan geen CLSID is toegewezen in het register van het systeem of waarvoor geen specifieke handler is opgegeven. Alles wat nodig is vanuit een handler voor dit soort objecten is dat ze informatie doorgeven over de procesgrens. Als u een nieuw exemplaar van de standaardhandler wilt maken, roept u OleCreateDefaultHandler-aan. Voor bepaalde speciale omstandigheden roept u OleCreateEmbeddingHelperaan.

Wanneer u een exemplaar van een handler voor één klasse maakt, kunt u deze niet gebruiken voor een andere klasse. Bij gebruik voor een samengesteld document implementeert de OLE-handler de gegevensstructuren aan de containerzijde wanneer objecten van een bepaalde klasse extern worden geopend.

OLE heeft de standaardhandler gedefinieerd voor clients van lokale servers voor samengestelde documenten. De standaardhandler heeft een aantal interfaces geïmplementeerd die de typische server niet heeft uitgevoerd. Wanneer OLE vervolgens in-process servers toestaat voor samengestelde documenten, moesten ze een insluitingshulp maken waarmee deze extra interfaces werden geïmplementeerd, zodat clients naadloos met hen konden werken.

Frameworkontwerpers die een handler aan de clientzijde definiëren en implementeren, moeten dit probleem in hun ontwerp overwegen en moeten om dezelfde redenen een equivalente helper voor processen bieden. Zelfs als de ontwerpers momenteel geen interfaces implementeren op de handler die de servers niet beschikbaar maken, willen ze mogelijk een helper definiëren, zodat ze ze in de toekomst kunnen toevoegen. U kunt ook de extra interfaces op het serverobject zelf implementeren.

De Lichtgewicht Client-Side Verwerker