Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Implementeer waar mogelijk een nieuwe interface voor uw toepassing in plaats van wijzigingen aan te brengen in een bestaande interface. Als u niet kunt voorkomen dat u een bestaande interface wijzigt, gebruikt u alleen nieuwe gegevenstypen in nieuwe methoden. Het introduceren van een nieuw gegevenstype of het wijzigen van een bestaand type is de meest voorkomende bron van incompatibiliteitsproblemen. Bij het RPC-runtimemodel wordt ervan uitgegaan dat de ontvangende toepassing weet van de typen gegevens die het ontvangt, zodat gegevens op de draad worden geplaatst zonder een algemene gegevensbeschrijving. Wanneer de ontvanger een ander gegevenstype verwacht dan wat de afzender op de lijn heeft geplaatst, wordt er een uitzondering gegenereerd (of de verzending mislukt op een andere, minder elegante manier).
Een RPC-interface wordt gedefinieerd door de UUID en de primaire en secundaire versienummers. Wanneer u een bestaande interface wijzigt, moet u de nieuwe methoden aan het einde van de interface toevoegen en het secundaire versienummer wijzigen. Als u methoden ergens anders toevoegt of andere wijzigingen aanbrengt in de interface, moet u ook het primaire versienummer wijzigen.
Realistisch gezien zijn er momenten waarop u zelfs het secundaire versienummer niet kunt wijzigen, omdat een nieuwe client niet kan communiceren met een oude server en u de server niet kunt bijwerken. De RPC-uitvoeringstijd genereert een uitzondering, RPC_S_PROCNUM_OUT_OF_RANGE, wanneer een client een methode aanroept buiten de methode die is opgegeven voor de interface met de server. De tijdelijke oplossing is om de versienummers ongewijzigd te laten en uw clientcode zo te schrijven dat deze de uitzondering soepel afhandelt—bijvoorbeeld door de prestaties van de client te verminderen of op een andere manier die geschikt is voor uw toepassing.
Er is een vergelijkbare tijdelijke oplossing voor een speciaal geval van het wijzigen van een gegevenstype in een bestaande methode. Als u een -samenvoeging hebt waarvan de vertakkingen aanwijzers zijn en die geen standaardbranch hebben voor niet-herkende typen, kunt u een nieuwe vertakking toevoegen die gebruikmaakt van het nieuwe gegevenstype. Hierdoor wordt de grootte van de gegevensstructuur niet gewijzigd. Wanneer uw client met een nieuwe server praat, kan het nieuwe gegevenstype worden gebruikt. Wanneer uw client echter met een oude server praat, wordt de uitzondering RPC_S_INVALID_TAG gegenereerd. Ook hier moet u uw clientcode schrijven om deze uitzondering op de juiste wijze af te handelen.
Een DCOM-interface wordt geïdentificeerd door de GUID. In DCOM worden interfaces als onveranderbaar beschouwd en kunt u alleen wijzigingen aanbrengen door een nieuwe interface te maken die overgaat van de oude interface. Deze regels zorgen ervoor dat clients en servers compatibel blijven.