Condividi tramite


Endpoint servizio Web basati su file WSDL

Aggiornamento: novembre 2007

È possibile utilizzare un approccio basato su contratto per definire il comportamento del servizio. È possibile eseguire quest'attività creando endpoint provider di servizi Web dai file WSDL (Web Services Description Language). È possibile inoltre adattare endpoint provider di servizi Web esistenti a file WSDL.

Nota:

È possibile eseguire queste attività utilizzando file .disco. Questa versione supporta solo file WSDL contenenti un’unica associazione WSDL e file .disco che fanno riferimento a un unico servizio Web. Per ulteriori informazioni, vedere Comunicazione tra le applicazioni.

Per ulteriori informazioni, vedere le sezioni che seguono:

  • Creating Web Service Endpoints from WSDL Files

  • Conforming Web Service Endpoints to WSDL Files

  • Web Service Endpoints Based on WSDL Files

  • Custom Types Referenced in Operation Signatures

Per ulteriori informazioni sulla progettazione di un servizio basato su contratto, consultare la pagina Contract First Web Services Interoperability su MSDN in linea all'indirizzo https://go.microsoft.com/fwlink/?LinkId=49584.

Creare endpoint servizio Web da file WSDL

È possibile creare endpoint basati su WSDL in applicazioni e sistemi ASP.NET. L'endpoint verrà visualizzato nell'applicazione o sistema. Viene popolato con le firme di operazione cui fa riferimento il file WSDL. Tali firme di operazione vengono visualizzate anche nel file di classe di servizio Web se l'applicazione associata è già implementata. File di classe aggiuntivi potrebbero essere visualizzati anche nel progetto dell'applicazione se le firme fanno riferimento a ogni tipo personalizzato. Per ulteriori informazioni, vedere Custom Types Referenced in Operation Signatures.

Nota:

Possono essere implementate solo le applicazioni, non anche i sistemi.

Creando un endpoint provider del servizio Web da un file WSDL si ottiene lo stesso risultato dato dall'utilità della riga di comando Wsdl.exe con l'opzione /server. Per ulteriori informazioni, vedere i seguenti argomenti:

Rendere conformi gli endpoint servizio Web ai file WSDL

È possibile rendere conformi endpoint provider di servizi Web esistenti a file WSDL. Questa operazione aggiunge o modifica ogni firma dell'operazione esistente, adattandola al file WSDL. Questa operazione potrebbe influire anche sulle firme dell'operazione e sui nomi di tipo nel codice se l'applicazione associata è già implementata. Tuttavia, i tipi nidificati all'interno di dataset non verranno conformati.

Nota:

Conformando un endpoint su un membro di un sistema si conforma la definizione sottostante dell’endpoint. Questa operazione modifica gli utilizzi di tale definizione in altri sistemi.

Sebbene non si verificherà alcuna modifica nel codice relativo al corpo del metodo, modifiche a firme di operazione e nomi di tipo potrebbero far sì che il codice relativo al corpo del metodo non venga più compilato. Di conseguenza, esaminare il codice. Identificare le modifiche che potrebbero essere richieste per correggere qualsiasi errore del compilatore. Per ulteriori informazioni, vedere Modifiche al codice dopo aver reso conformi gli endpoint servizio Web ai file WSDL.

Endpoint servizio Web basati su file WSDL

Un file WSDL specifica i requisiti per fornire ed utilizzare un servizio Web. Funge da contratto tra provider e consumer. Gli endpoint di servizio Web basati sulla stessa versione di un file WSDL consentono inoltre di sostituire tali endpoint. Per ulteriori informazioni, vedere Sostituzione di endpoint servizio Web.

Nella definizione di associazione WSDL in un file WSDL sono descritte le operazioni offerte da un servizio Web. L'endpoint provider di servizio Web rappresenta tale associazione WSDL. Se l'applicazione ASP.NET associata abilita la generazione di file WSDL, Visual Studio genera un nuovo file WSDL per ogni servizio Web su tale applicazione (una volta che l'applicazione viene implementata). Visual Studio utilizza inoltre il file WSDL per generare riferimenti Web per le applicazioni consumer di servizi Web associate (una volta implementate). Per ulteriori informazioni, vedere Procedura: controllare la generazione del file WSDL per i servizi Web ASP.NET.

Dopo aver pubblicato il file WSDL di un servizio Web, ciascun cambiamento apportato alla definizione di un servizio Web verrà considerato come una nuova associazione WSDL.

Suggerimento:

Se si modifica la definizione di un servizio Web, modificare il nome di associazione WSDL, lo spazio dei nomi associazione WSDL o entrambi. Se si modifica una definizione del servizio Web senza modificare il nome associazione WSDL o lo spazio dei nomi associazione WSDL associato, si potrebbe nascondere il fatto che il servizio Web non è più compatibile con le applicazioni connesse o precedentemente connesse. Il valore predefinito del nome servizio WSDL e del nome associazione WSDL è "WebServiceN"; "N" rappresenta un numero ordinale. Tuttavia, una volta implementata l'applicazione, se si elimina il nome associazione WSDL nel file di classe di servizio Web si modifica il valore predefinito in "WebServiceNSoap". Il valore predefinito per lo spazio dei nomi servizio WSDL e lo spazio dei nomi associazione WSDL è "http://tempuri.org". La descrizione del servizio WSDL e le proprietà della posizione associazione WSDL non hanno un valore predefinito. Il valore predefinito del nome associazione WSDL è "WebServiceN".

Quando si modifica il nome associazione WSDL o lo spazio dei nomi associazione WSDL su un endpoint di tipo provider del servizio Web non implementato, le corrispondenti proprietà degli endpoint di tipo consumer connessi e non implementati vengono aggiornate automaticamente oppure al momento della riconnessione. Tuttavia, quando si modificano tali proprietà su un endpoint di tipo provider del servizio Web implementato, gli endpoint connessi e implementati potrebbero non essere immediatamente aggiornati. In ogni caso, è possibile aggiornare manualmente le proprietà degli endpoint di tipo consumer.

Personalizzare i tipi di riferimento nelle firme di operazione

Le firme di operazione in un endpoint di servizi Web potrebbero fare riferimento alle classi CLR che gestiscono la serializzazione XML per tipi XML complessi cui fa riferimento il file WSDL o i file di schema XML correlati. Se l'applicazione associata non è stata ancora implementata, Visual Studio genera file di codice per tali classi al momento dell'implementazione. Questi file vengono generati insieme al servizio Web corrispondente e ai file di progetto dell'applicazione. Se l'applicazione è già stata implementata, vengono aggiunti file di codice per tali classi al progetto esistente. Per ulteriori informazioni, vedere Cenni preliminari sulle applicazioni ASP.NET nei diagrammi applicazioni.

Nota:

Quando un endpoint di servizio Web basato su WSDL viene copiato in un'altra applicazione, Visual Studio copia soltanto le firme di operazione. Se l'applicazione di destinazione è già implementata, i file di codice non vengono copiati per le classi CLR aggiuntive. Se l'applicazione di destinazione non è stata ancora implementata, i file di codice non verranno generati per tali classi al momento dell’implementazione. Per evitare che questo si verifichi, creare endpoint dallo stesso file WSDL o disco utilizzato per gli endpoint che si desidera copiare.

In alcuni schemi XML, sulla classe di servizio Web e sulle classi di serializzazione dei dati sono richiesti ulteriori attributi di serializzazione per garantire che il file XML sia formattato correttamente. Tuttavia, gli endpoint provider del servizio Web basati su file WSDL supportano solo un piccolo gruppo di questi attributi di serializzazione. In alcuni casi, il file WSDL risultante generato dall’endpoint di servizio Web e i messaggi XML risultanti potrebbero non essere coerenti con il file WSDL originale utilizzato per creare l'endpoint di tipo provider del servizio Web.

Suggerimento:

Se si verificano questi problemi, utilizzare l'utilità Wsdl.exe per generare la classe di servizio Web e classi di serializzazione dei dati anziché creare un endpoint provider di servizi Web da un file WSDL. Tuttavia, sarà necessario aggiungere manualmente al progetto il codice generato e creare successivamente il file asmx richiesto. Verrà quindi visualizzato un corretto endpoint provider di servizi Web. In tal modo è possibile utilizzare la finestra di progettazione per modificare l'endpoint.

Nell'elenco seguente sono riportate ulteriori informazioni sul supporto per questi attributi di serializzazione:

  • I seguenti attributi di serializzazione XML vengono aggiunti alle classi generate per i tipi XML complessi: SerializableAttribute, SoapTypeAttribute, XmlIncludeAttribute, XmlRootAttribute e XmlTypeAttribute.

  • I seguenti attributi di serializzazione XML vengono aggiunti ai campi di classi: XmlAnyAttribute, XmlArrayAttribute, XmlArrayItemAttribute, XmlAttributeAttribute, XmlChoiceIdentifierAttribute, XmlElementAttribute, XmlEnumAttribute, XmlIgnoreAttribute, XmlNamespaceDeclarationsAttribute e XmlTextAttribute.

  • Gli attributi di serializzazione non vengono applicati al tipo restituito per i metodi Web.

  • Gli attributi di serializzazione non vengono applicati ai parametri dei metodi Web.

  • I seguenti attributi di serializzazione con codifica SOAP non vengono applicati a queste classi: SoapElementAttribute, SoapIgnoreAttribute, SoapAttributeAttribute, SoapAttributeOverrides, SoapAttributes, SoapEnumAttribute e SoapIncludeAttribute.

  • Gli argomenti degli attributi per cui è necessario un tipo XML complesso vengono generati come tipo String con il nome completo del tipo. Verrà generato un errore del compilatore che sarà necessario correggere.

    <XmlIncludeAttribute(GetType("ClassName"))>, ad esempio, in Visual Basic viene generato come <XmlIncludeAttribute("ClassName")>, mentre [XmlIncludeAttribute(typeof("ClassName"))] in Visual C# viene generato come [XmlIncludeAttribute("ClassName")].

Vedere anche

Attività

Procedura: aggiungere endpoint ad applicazioni

Procedura: rendere conformi gli endpoint servizio Web ai file WSDL

Concetti

Cenni preliminari sugli endpoint delle applicazioni