Sdílet prostřednictvím


Postupy: Použití monikeru služby u kontraktů WSDL

Existují situace, kdy můžete chtít mít zcela samostatného klienta zprostředkovatele komunikace modelu COM. Služba, kterou chcete volat, nemusí zveřejnit koncový bod MEX a klientská knihovna DLL WCF nemusí být zaregistrovaná pro zprostředkovatele komunikace s objekty COM. V těchto případech můžete vytvořit soubor WSDL popisovaný službou a předat ho do monikeru služby WCF. Toto téma popisuje, jak volat ukázku Getting Started WCF pomocí monikeru WCF WSDL.

Použití monikeru služby WSDL

  1. Otevřete a sestavte ukázkové řešení GettingStarted.

  2. Otevřete prohlížeč a vyhledejte http://localhost/ServiceModelSamples/Service.svc , abyste měli jistotu, že služba funguje.

  3. Do souboru Service.cs přidejte do třídy CalculatorService následující atribut:

    [ServiceBehavior(Namespace = "http://Microsoft.ServiceModel.Samples")]
    // This service class implements the service contract.
    public class CalculatorService : ICalculator
    {
        public double Add(double n1, double n2)
        {
            return n1 + n2;
        }
    
        public double Subtract(double n1, double n2)
        {
            return n1 - n2;
        }
    
        public double Multiply(double n1, double n2)
        {
            return n1 * n2;
        }
    
        public double Divide(double n1, double n2)
        {
            return n1 / n2;
        }
    }
    
  4. Přidání oboru názvů vazby do service App.config:

  5. Vytvořte soubor WSDL, který bude aplikace číst. Vzhledem k tomu, že obory názvů byly přidány v krocích 3 a 4, můžete použít prohlížeč k dotazování na celý popis WSDL služby procházením http://localhost/ServiceModelSamples/Service.svc?wsdl. Soubor pak můžete uložit jako serviceWSDL.xml. Pokud nezadáte obory názvů v krocích 3 a 4, nebude dokument WSDL vrácený z dotazu na výše uvedenou adresu URL úplným WSDL. Vrácený dokument WSDL bude obsahovat několik příkazů importu, které importují další dokumenty WSDL. Budete muset projít každý příkaz importu a sestavit kompletní dokument WSDL, který zkombinuje WSDL vrácený ze služby s importovaným WSDL.

  6. Otevřete Visual Basic 6.0 a vytvořte nový soubor standardního .exe. Přidejte tlačítko do formuláře a poklikáním na tlačítko přidejte následující kód do obslužné rutiny Kliknutí:

    ' Open the WSDL contract file and read it all into the wsdlContract string.  
    Const ForReading = 1  
    Set objFSO = CreateObject("Scripting.FileSystemObject")  
    Set objFile = objFSO.OpenTextFile("c:\serviceWsdl.xml", ForReading)  
    wsdlContract = objFile.ReadAll  
    objFile.Close  
    
    ' Create a string for the service moniker including the content of the WSDL contract file.  
    wsdlMonikerString = "service4:address='http://localhost/ServiceModelSamples/service.svc'"  
    wsdlMonikerString = wsdlMonikerString + ", wsdl='" & wsdlContract & "'"  
    wsdlMonikerString = wsdlMonikerString + ", binding=WSHttpBinding_ICalculator, bindingNamespace='http://Microsoft.ServiceModel.Samples'"  
    wsdlMonikerString = wsdlMonikerString + ", contract=ICalculator, contractNamespace='http://Microsoft.ServiceModel.Samples'"  
    
    ' Create the service moniker object.  
    Set wsdlServiceMoniker = GetObject(wsdlMonikerString)  
    
    ' Call the service operations using the moniker object.  
    MsgBox "WSDL service moniker: 145 - 76.54 = " & wsdlServiceMoniker.Subtract(145, 76.54)  
    

    Poznámka:

    Pokud je moniker poškozený nebo pokud služba není k dispozici volání GetObject vrátí chybu s informacemi o neplatné syntaxi. Pokud se zobrazí tato chyba, ujistěte se, že je název, který používáte, správný a že je služba dostupná.

  7. Spusťte aplikaci jazyka Visual Basic. Zobrazí se okno se zprávou s výsledky volání Odčítání (145, 76,54).

Viz také