İ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
Yeni bir F# Konsol Uygulaması projesi açın.
Çözüm Gezgini'nde, projenin Referans düğümü için kısayol menüsünü açın, ve ardından Referans ekleyi seçin.
Derlemeler alanı içinde, Framework seçin, ve ardından, kullanılabilir derlemeler listesi içinde, System.Runtime.Serialization ve System.ServiceModel seçin.
Derlemeler alanı içinde, Uzantıları seçin.
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
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
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#)