Postupy: Registrace a konfigurace monikeru služby
Před použitím monikeru služby Windows Communication Foundation (WCF) v rámci aplikace MODELU COM s typem kontraktu musíte zaregistrovat požadované atributy typy com a nakonfigurovat aplikaci COM a moniker s požadovanou konfigurací vazby.
Registrace požadovaných atributů u modelu COM
Pomocí nástroje ServiceModel Metadata Utility Tool (Svcutil.exe) načtěte kontrakt metadat ze služby WCF. Tím se vygeneruje zdrojový kód pro sestavení klienta WCF a konfigurační soubor klientské aplikace.
Ujistěte se, že jsou typy v sestavení označené jako
ComVisible
. Uděláte to tak, že do souboru AssemblyInfo.cs v projektu sady Visual Studio přidáte následující atribut.[assembly: ComVisible(true)]
Zkompilujte spravovaného klienta WCF jako sestavení se silným názvem. To vyžaduje podepisování pomocí páru kryptografických klíčů. Další informace naleznete v tématu Podepsání sestavení se silným názvem.
Pomocí nástroje Registrace sestavení (Regasm.exe) s
-tlb
možností zaregistrovat typy v sestavení pomocí modelu COM.Pomocí nástroje Global Assembly Cache (Gacutil.exe) přidejte sestavení do globální mezipaměti sestavení.
Poznámka:
Podepsání sestavení a jeho přidání do globální mezipaměti sestavení jsou volitelné kroky, ale mohou zjednodušit proces načítání sestavení ze správného umístění za běhu.
Nakonfigurujte aplikaci COM a moniker s požadovanou konfigurací vazby.
Definice vazeb (vygenerované nástrojem ServiceModel Metadata Utility Tool (Svcutil.exe) umístěte do vygenerovaného konfiguračního souboru klientské aplikace) do konfiguračního souboru klientské aplikace. Například pro spustitelný soubor jazyka Visual Basic 6.0 s názvem CallCenterClient.exe by se konfigurace měla umístit do souboru s názvem CallCenterConfig.exe.config ve stejném adresáři jako spustitelný soubor. Klientská aplikace teď může použít moniker. Mějte na paměti, že konfigurace vazby není nutná, pokud používáte jeden ze standardních typů vazeb poskytovaných WCF.
Následující typ je registrován.
using System.ServiceModel; [ServiceContract] public interface IMathService { [OperationContract] public int Add(int x, int y); [OperationContract] public int Subtract(int x, int y); }
Aplikace je vystavena pomocí vazby
wsHttpBinding
. Pro daný typ a konfiguraci aplikace se používají následující příklady řetězců monikeru.service4:address=http://localhost/MathService, binding=wsHttpBinding, bindingConfiguration=Binding1
nebo
service4:address=http://localhost/MathService, binding=wsHttpBinding, bindingConfiguration=Binding1, contract={36ADAD5A-A944-4d5c-9B7C-967E4F00A090}
Po přidání odkazu na sestavení, které obsahuje
IMathService
typy, můžete použít některý z těchto řetězců monikeru z aplikace Visual Basic 6.0, jak je znázorněno v následujícím vzorovém kódu.Dim mathProxy As IMathService Dim result As Integer Set mathProxy = GetObject( _ "service4:address=http://localhost/MathService, _ binding=wsHttpBinding, _ bindingConfiguration=Binding1") result = mathProxy.Add(3, 5)
V tomto příkladu je definice konfigurace
Binding1
vazby uložena v vhodně pojmenovaném konfiguračním souboru pro klientskou aplikaci, například vb6appname.exe.config.Poznámka:
Podobný kód můžete použít v jazyce C#, C++ nebo jakékoli jiné jazykové aplikaci .NET.
Poznámka:
Pokud je moniker poškozený nebo pokud služba není k dispozici, volání vrátí
GetObject
chybu Neplatná syntaxe. Pokud se zobrazí tato chyba, ujistěte se, že je název, který používáte, správný a že je služba dostupná.I když se toto téma zaměřuje na použití monikeru služby z kódu jazyka Visual Basic 6.0, můžete použít moniker služby z jiných jazyků. Při použití monikeru z kódu C++ by Svcutil.exe generované sestavení mělo být importováno s "no_namespace named_guids raw_interfaces_only", jak je znázorněno v následujícím kódu.
#import "ComTestProxy.tlb" no_namespace named_guids
Tím se upraví definice importovaného rozhraní tak, aby všechny metody vrátily znak
HResult
. Všechny ostatní návratové hodnoty se převedou na výstupní parametry. Celkové provádění metod zůstává stejné. To vám umožní určit příčinu výjimky při volání metody na proxy serveru. Tato funkce je k dispozici pouze z kódu jazyka C++.