Aracılığıyla paylaş


İzlenecek yol: Web hizmeti sağlayıcıları türü (F#) kullanarak erişme

Bu adım adık kılavuz bir WSDL hizmetine erişmek için F# 3.0 içinde kullanılabilen Web Hizmetleri Açıklama Dili (WSDL) tür sağlayıcısını nasıl kullanacağınızı gösterir. Diğer .NET dillerinde, web hizmetine erişmek için kodu svcutil.exe'yi çağırarak, ya da örneğin bir C# projesi içindeki Add Web Reference seçeneğini kullanıp Visual Studio'nun sizin için svcutil.exe'yi çağırmasını sağlayarak üretirsiniz. F# içinde, WSDL tür sağlayıcısını kullanma ek seçeneğine sahipsiniz, yani WsdlService türünü oluşturan kodu yazdığınız an türler üretilir ve kullanılır hale gelir. Bu işlem hizmetin siz kodu yazdığınız zaman kullanılabilir olmasına dayanır.

Bu izlenecek yol aşağıdaki görevleri gösterir. Adım adım kılavuzun başarılı olması için onları bu sırayla tamamlamalısınız:

  • Projeyi oluşturma

  • Tür sağlayıcısını yapılandırma

  • Web hizmetini çağırmak, ve sonuçları işlemek

Projeyi oluşturma

Bu adımda, bir proje oluşturup bir WSDL tür sağlayıcısı kullanmak için gerekli başvuruları eklersiniz.

Bir F# projesi oluşturmak ve ayarlamak için

  1. Yeni bir F# Konsol Uygulaması projesi açın.

  2. Çözüm Gezgini'nde, projenin Referans düğümü için kısayol menüsünü açın, ve ardından Referans ekleyi seçin.

  3. Derlemeler alanı içinde, Framework seçin, ve ardından, kullanılabilir derlemeler listesi içinde, System.Runtime.Serialization ve System.ServiceModel seçin.

  4. Derlemeler alanı içinde, Uzantıları seçin.

  5. Kullanılabilir derlemeler listesi içinde, FSharp.Data.TypeProviders seçin, ve ardından bu derlemelere başvuruları eklemek için OK düğmesini seçin.

Tür sağlayıcısını yapılandırma

Bu adımda, TerraServer web hizmetine türler oluşturmak için WSDL tür sağlayıcısını kullanırsınız.

Tür sağlayıcısını yapılandırmak ve türleri üretmek için

  1. Tür sağlayıcısı ad alanını açmak için aşağıdaki kod satırlarını ekleyin.

    open System
    open System.ServiceModel
    open Microsoft.FSharp.Linq
    open Microsoft.FSharp.Data.TypeProviders
    
  2. Tür sağlayıcısını bir web hizmeti ile çağırmak için aşağıdaki kod satırlarını ekleyin. Bu örnekte, TerraServer web hizmetini kullanın.

    type TerraService = WsdlService<"http://msrmaps.com/TerraService2.asmx?WSDL">
    

    Eğer hizmet URIsi yanlış yazılmışsa ya da eğer hizmetin kendisi devre dışı ya da kapalıysı bu kod satırı altında kırmızı bir eğri çizgi görünür. Eğer koda işaret ederseniz, bir hata iletisi sorunu açıklar. Aynı bilgiyi Error List penceresi içinde ya da derledikten sonra Output Window içinde bulabilirsiniz.

    Bir WSDL bağlantısı için yapılandırma ayarlarını belirtmenin iki yolu vardır, proje için app.config dosyasını kullanarak, ya da tür sağlayıcısı bildirimi içinde statik tür parametreleri kullanarak. svcutil.exe'yi uygun yapılandırma dosya üyeleri üretmek için kullanabilirsiniz. Bir web hizmetinin yapılandırma bilgilerini üretmek için svcutil.exe kullanımı hakkında daha fazla bilgi için, bkz: ServiceModel Metadata Utility Tool (Svcutil.exe)0. WSDL tür sağlayıcı için statik tür parametrelerinin tam bir açıklaması için, bkz: WsdlService türü sağlayıcı (F#).

Web hizmetini çağırmak, ve sonuçları işlemek

Her web hizmeti yöntem çağrılarına parametre olarak kullanılan kendi tür kümesine sahiptir. Bu adımda, bu parametreleri hazırlarsınız, bir web hizmeti çağırırsınız, ve döndürdüğü bilgileri işlersiniz.

Web hizmetini çağırmak, ve sonuçları işlemek için

  • Web hizmeti zaman aşımına uğrayabilir ya da çalışmayı durdurabilir, bu nedenle web hizmeti çağrısını bir özel durum işleme bloğu içine eklemelisiniz. Web hizmetinden veri almayı denemek için aşağıdaki kodu yazın.

    try
        let terraClient = TerraService.GetTerraServiceSoap ()
        let myPlace = new TerraService.ServiceTypes.msrmaps.com.Place(City = "Redmond", State = "Washington", Country = "United States")
        let myLocation = terraClient.ConvertPlaceToLonLatPt(myPlace)
        printfn "Redmond Latitude: %f Longitude: %f" (myLocation.Lat) (myLocation.Lon)
    with
        | :? ServerTooBusyException as exn ->
            let innerMessage =
                match (exn.InnerException) with
                | null -> ""
                | innerExn -> innerExn.Message
            printfn "An exception occurred:\n %s\n %s" exn.Message innerMessage
        | exn -> printfn "An exception occurred: %s" exn.Message
    

    Web hizmeti için gerekli veri türlerini, Place ve Location gibi, WsdlService türü TerraService altında içiçe tür olarak oluşturduğunuza dikkat edin.

Ayrıca bkz.

Başvuru

WsdlService türü sağlayıcı (F#)

Diğer Kaynaklar

Sağlayıcı türü