Ö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.
Kommentar
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 | Description |
---|---|
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-identitet (Server Principal Name) 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". |
Kommentar
Ä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 läser in rätt version av .NET Framework-körningen. När du använder monikern i Office-appen likeringar 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 den 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>