Aracılığıyla paylaş


Nasıl yapılır: WSDL Sözleşmeleriyle Hizmet Bilinen Adı Kullanma

Tamamen bağımsız bir COM Birlikte Çalışma istemcisine sahip olmak isteyebileceğiniz durumlar vardır. Çağırmak istediğiniz hizmet bir MEX uç noktasını kullanıma sunmayabilir ve WCF istemci DLL'i COM birlikte çalışması için kaydedilmemiş olabilir. Bu gibi durumlarda, hizmeti açıklayan bir WSDL dosyası oluşturabilir ve wcf hizmet adıyla geçirebilirsiniz. Bu konuda, WCF WSDL takma adı kullanılarak Başlarken WCF örneğinin nasıl çağrıldığı açıklanmaktadır.

WSDL hizmet adını kullanma

  1. GettingStarted örnek çözümünü açın ve oluşturun.

  2. Bir tarayıcı açın ve hizmetin çalıştığından emin olmak için adresine gidin http://localhost/ServiceModelSamples/Service.svc .

  3. Service.cs dosyasında CalculatorService sınıfına aşağıdaki özniteliği ekleyin:

    [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. App.config hizmetine bağlama ad alanı ekleyin:

  5. Uygulamanın okuması için bir WSDL dosyası oluşturun. Ad alanları 3. ve 4. adımlarda eklendiğinden, adresine göz atarak hizmetin tüm WSDL açıklamasını sorgulamak http://localhost/ServiceModelSamples/Service.svc?wsdliçin bir tarayıcı kullanabilirsiniz. Daha sonra dosyayı serviceWSDL.xml olarak kaydedebilirsiniz. 3. ve 4. adımlarda ad alanlarını belirtmezseniz, yukarıdaki URL'yi sorgulayarak döndürülen WSDL belgesi tam WSDL olmayacaktır. Döndürülen WSDL belgesi, diğer WSDL belgelerini içeri aktaran birkaç içeri aktarma deyimi içerir. Her içeri aktarma deyimini gözden geçirmeniz ve hizmetten döndürülen WSDL'yi içeri aktarılan WSDL ile birleştirerek tam WSDL belgesini oluşturmanız gerekir.

  6. Visual Basic 6.0'ı açın ve yeni bir Standart .exe dosyası oluşturun. Forma bir düğme ekleyin ve tıklama işleyicisine aşağıdaki kodu eklemek için düğmeye çift tıklayın:

    ' 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)  
    

    Not

    Ad yanlış biçimlendirilmişse veya hizmet kullanılamıyorsa çağrısı GetObject "Geçersiz Söz Dizimi" hatası döndürür. Bu hatayı alırsanız, kullandığınız takma adın doğru olduğundan ve hizmetin kullanılabilir olduğundan emin olun.

  7. Visual Basic uygulamasını çalıştırın. Çıkarma(145, 76,54) çağrısının sonuçlarını içeren bir ileti kutusu görüntülenir.

Ayrıca bkz.