Esporta (0) Stampa
Espandi tutto
Il presente articolo è stato tradotto automaticamente. Passare il puntatore sulle frasi nell'articolo per visualizzare il testo originale. Ulteriori informazioni.
Traduzione
Originale
Questo argomento non è stato ancora valutato - Valuta questo argomento

Procedura dettagliata: accesso a un servizio Web tramite provider di tipi (F#)

In questa procedura dettagliata viene illustrato come utilizzare il provider di tipi Web disponibile in F# 3.0 per accedere a un servizio WSDL. In altri linguaggi.NET, si genera codice per accedere al servizio web chiamando svcutil.exe, o usando aggiungendo un riferimento Web in un progetto C#, ad esempio, per far si che Visual Studio chiami svcutil.exe automaticamente. In F#, è presente l'opzione aggiuntiva di usare il provider di tipo WSDL, così mentre si scrive il codice che crea il tipo WsdlService, i tipi vengono generati e diventano disponibili. Questo processo si basa sul servizio reso disponibile mentre si scrive il codice.

In questa procedura dettagliata vengono illustrate le attività seguenti: È necessario completarle in quest'ordine perché la procedura dettagliata venga eseguita correttamente:

Nel passaggio, creare un progetto e aggiungere i riferimenti appropriati per utilizzare un provider di tipo WSDL.

Per creare e configurare un progetto F#

  1. Aprire un nuovo Progetto di applicazione console F#.

  2. In Esplora soluzioni, aprire il menu di scelta rapida del nodo Riferimento del progetto e quindi scegliere Aggiungi riferimento.

  3. Nell'area Assembly, scegliere Framework, quindi, nell'elenco degli assembly disponibili, scegliere System.Runtime.Serialization e System.ServiceModel.

  4. Nell'area Assembly, scegliere Estensioni.

  5. Nell'elenco degli assembly disponibili, scegliere FSharp.Data.TypeProviders, quindi premere OK per aggiungere riferimenti a questi assembly.

In questo passaggio, si utilizza il provider di tipo WSDL per generare i tipi per il servizio web TerraServer.

Per configurare il provider di tipi e generare i tipi

  1. Aggiungere la seguente riga di codice per aprire lo spazio dei nomi del provider di tipo.

    open System
    open System.ServiceModel
    open Microsoft.FSharp.Linq
    open Microsoft.FSharp.Data.TypeProviders
    
    
  2. Aggiungere la seguente riga di codice per richiamare il provider di tipo con un servizio web. In questo esempio, utilizzare il servizio web TerraServer.

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

    Una linea a zigzag rossa verrà visualizzata sotto la seguente riga di codice se l'URI del servizio non è stato digitato correttamente o se il servizio stesso non è attivo o non è in esecuzione. Se si punta il codice, un messaggio di errore descrive il problema. È possibile trovare le stesse informazioni nella finestra Elenco errori o nella Finestra di output dopo la compilazione.

    Esistono due modi per specificare le impostazioni di configurazione di una connessione WSDL: utilizzando il file app.config del progetto o utilizzando parametri di tipi statici nella dichiarazione del provider di tipo. È possibile utilizzare svcutil.exe per generare gli elementi appropriati del file di configurazione. Per ulteriori informazioni sull'utilizzo di svcutil.exe per generare informazioni di configurazione per un servizio web, vedere Strumento ServiceModel Metadata Utility Tool (Svcutil.exe). Per una descrizione completa dei parametri statici per il provider di tipo WSDL, vedere Provider di tipo WsdlService (F#).

Ogni servizio web ha il proprio set di tipi utilizzati come parametri per le chiamate al metodo. In questo passaggio, vengono preparati questi parametri, viene chiamato un metodo Web e vengono elaborate le informazioni che restituisce.

Per chiamare il servizio Web ed elaborare i risultati

  • Il servizio Web può scadere o arrestarsi, quindi si dovrebbe includere la chiamata al servizio Web in un blocco di gestione di un'eccezione. Scrivere il codice seguente per tentare di ottenere dati dal servizio Web.

    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
    
    

    Notare che si creano i tipi di dati necessari per il servizio web, come Place e Location, come i tipi annidati sotto il tipo WsdlService TerraService.

Il documento è risultato utile?
(1500 caratteri rimanenti)
Grazie per i commenti inviati.

Aggiunte alla community

AGGIUNGI
Microsoft sta conducendo un sondaggio in linea per comprendere l'opinione degli utenti in merito al sito Web di MSDN. Se si sceglie di partecipare, quando si lascia il sito Web di MSDN verrà visualizzato il sondaggio in linea.

Si desidera partecipare?
Mostra:
© 2014 Microsoft. Tutti i diritti riservati.