Dela via


Översikt över integrering med COM-program

Windows Communication Foundation (WCF) ger den hanterade kodutvecklaren en omfattande miljö för att skapa anslutna program. Men om du har en betydande investering i ohanterad COM-baserad kod och inte vill migrera kan du fortfarande integrera WCF-webbtjänster direkt i din befintliga kod med hjälp av WCF-tjänstens moniker. Tjänstmonikern kan användas från en mängd olika COM-baserade utvecklingsmiljöer, till exempel Office VBA, Visual Basic 6.0 eller Visual C++ 6.0.

Anmärkning

Tjänstmonikern använder en WCF-kommunikationskanal för all kommunikation. Säkerhets- och identitetsmekanismerna för kanalen skiljer sig från de som används i COM- och DCOM-standardproxy. Eftersom tjänstmonikern dessutom använder en WCF-kommunikationskanal är standardtidsgränsen en minut för alla anrop.

Tjänstmonikern används med GetObject funktionen för att ge den ohanterade utvecklaren en starkt typad, COM-specifik metod för att anropa WCF-webbtjänster. Detta kräver en lokal, COM-synlig definition av WCF-webbtjänstkontraktet och bindningen som ska användas. Liksom andra WCF-klienter måste tjänstmonikern konstruera en typad kanal till tjänsten, även om kanalkonstruktionen sker transparent för COM-programmeraren vid det första metodanropet.

I likhet med andra WCF-klienter anger program, när de använder monikern, adressen, bindningen och kontraktet för att kommunicera med en tjänst. Kontraktet kan anges på något av följande sätt:

  • Skrivet kontrakt – kontraktet registreras som en SYNLIG COM-typ på klientdatorn.

  • WSDL-kontrakt – kontraktet tillhandahålls i form av ett WSDL-dokument.

  • MEX-kontrakt – kontraktet hämtas vid körning från en MEX-slutpunkt (Metadata Exchange).

Parametrar som stöds av Service Moniker

I följande tabell visas de parametrar som stöds av tjänstmonikern.

Parameter Beskrivning
address URL-platsen för tjänsten.
binding Namn på bindningsavsnitt från programkonfigurationen.
bindingConfiguration Namngivna bindningsinstanser från det namngivna bindningsavsnittet.
contract Gränssnittsidentifierare (IID) som representerar tjänstkontraktet eller kontraktsnamnet (från MEX).
wsdl WSDL-dokument som tillhandahåller en alternativ form av kontraktsdefinition.
spnIdentity SpN-identitet (Server Principal Name) som ska användas för att kommunicera med tjänsten.
upnIdentity UPN-identitet (User Principal Name) som ska användas för att kommunicera med tjänsten.
dnsIdentity DNS-identitet som ska användas för att kommunicera med tjänsten.
mexAddress URL-platsen för tjänstens MEX-slutpunkt (Metadata Exchange).
mexBinding Namn på bindningsavsnitt från programkonfigurationen för att ansluta till MEX-slutpunkten.
mexBindingConfiguration Namngivna bindningsinstanser från det namngivna bindningsavsnittet för att ansluta till MEX-slutpunkten.
bindingNamespace Namnområdet för bindningsavsnittets namn från den hämtade MEX-filen.
contractNamespace Namnområdet för kontraktet från den hämtade MEX-filen.
mexSpnIdentity SPN (Server Principal Name)-identitet som ska användas för att kommunicera med MEX-slutpunkten.
mexUpnIdentity UPN-identitet (User Principal Name) som ska användas för att kommunicera med MEX-slutpunkten.
mexDnsIdentity DNS-identitet som ska användas för att kommunicera med MEX-slutpunkten.
serializer Ange användning av antingen serialiseraren "xml" eller "datacontract".

Anmärkning

Även om den används med helt COM-baserade klienter kräver tjänstmonikern att WCF och den stödande .NET Framework 2.0 installeras på klientdatorn. Det är också viktigt att klientprogram som använder tjänstmonikern laddar rätt version av .NET Framework-körtiden. När du använder monikern i Office-program kan det krävas en konfigurationsfil för att säkerställa att rätt ramverksversion läses in. Med Excel ska till exempel följande text placeras i en fil med namnet Excel.exe.config i samma katalog som Excel.exe-filen:

<?xml version="1.0" encoding="utf-8"?>

<configuration xmlns= http://schemas.microsoft.com/.NetConfiguration/v2.0 >

<startup>

<requiredRuntime version="v2.0.50727" />

</startup>

</configuration>

Se även