Sdílet prostřednictvím


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

  1. 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.

  2. 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)]
    
  3. 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.

  4. Pomocí nástroje Registrace sestavení (Regasm.exe) s -tlb možností zaregistrovat typy v sestavení pomocí modelu COM.

  5. 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++.

Viz také