Considerazioni sulle classi proxy client personalizzate del servizio Web
Aggiornamento: novembre 2007
In Strumenti di progettazione di sistemi distribuiti, gli endpoint di tipo consumer delle applicazioni rappresentano dei punti configurabili di connessione agli endpoint di tipo provider. Quando l'istanza di una definizione di sistema composta da queste applicazioni viene distribuita, gli endpoint di tipo consumer delle applicazioni vengono configurati con gli indirizzi di tutti gli endpoint di tipo provider connessi. Per ulteriori informazioni, vedere Cenni preliminari sugli endpoint delle applicazioni e Cenni preliminari sui sistemi di applicazioni.
Per gli endpoint di tipo consumer del servizio Web ciò richiede l'utilizzo di classi proxy client "dinamiche" del servizio Web che, in fase di esecuzione, recuperano da specifiche voci contenute nel file di configurazione dell'applicazione gli URL degli endpoint di tipo provider del servizio Web connessi.
Nota: |
---|
Per le applicazioni che supportano l'implementazione, Visual Studio genera un file di configurazione quando l'applicazione viene implementata a partire dal diagramma applicazioni. Tale file di configurazione viene incluso come parte del progetto di applicazione in Esplora soluzioni. Per ulteriori informazioni, vedere Procedura: implementare le applicazioni sui diagrammi applicazioni. |
Per impostazione predefinita, Progettazione applicazioni genera dei riferimenti Web per gli endpoint di tipo consumer del servizio Web delle applicazioni ASP.NET, Windows e Office. Mediante tali riferimenti Web vengono quindi create le opportune classi proxy dinamiche con le relative voci del file di configurazione.
Nota: |
---|
Se si utilizzano riferimenti Web static in un'applicazione o in una libreria di classi a cui si fa riferimento, tali riferimenti Web non vengono individuati da Progettazione applicazioni e non vengono visualizzati come endpoint di tipo consumer del servizio Web, anche se potrebbero funzionare correttamente. Si consiglia di utilizzare sempre riferimenti Web dinamici, anche se non si prevede di cambiare l'URL del servizio Web al momento della distribuzione. |
Nelle sezioni riportate di seguito sono contenute ulteriori informazioni sui vantaggi delle classi proxy client personalizzate del servizio Web rispetto alle classi proxy dinamiche:
Representing Custom Web Service Client Proxy Classes as Web Service Consumer Endpoints
Configuration File Entries for Custom Web Service Proxy Client Classes Used with Windows and Office Applications
Configuration File Entries for Custom Web Service Proxy Classes Used with ASP.NET Applications
Migrating Web References and Custom Proxy Classes from Visual Studio .NET 2003
Rappresentazione delle classi proxy client personalizzate del servizio Web come endpoint di tipo consumer del servizio Web
In Progettazione applicazioni è possibile progettare endpoint di tipo consumer del servizio Web implementati da riferimenti Web. Tuttavia, purché nel file di configurazione dell'applicazione consumer (App.config o Web.config) esistano le voci opportune, è anche possibile effettuare la decodifica delle classi proxy client personalizzate create manualmente e visualizzarle come endpoint di tipo consumer del servizio Web.
Per ogni voce nel file di configurazione identificata da Progettazione applicazioni come un'impostazione URL del servizio Web di una classe proxy personalizzata, nell'applicazione consumer viene visualizzato un endpoint di tipo consumer del servizio Web. Inoltre, se l'URL del servizio Web nella voce del file di configurazione corrisponde all'URL di un endpoint di tipo provider del servizio Web esistente nel diagramma applicazioni, viene visualizzata una connessione fra l'endpoint di tipo consumer e l'endpoint di tipo provider del servizio Web. Se non esiste alcun endpoint di tipo provider del servizio Web corrispondente, ma l'URL può essere utilizzato per individuare un file WSDL valido per il servizio Web aggiungendo al termine dell'URL "?wsdl" o "?disco", un servizio Web esterno verrà aggiunto al diagramma applicazioni e viene connesso all'endpoint di tipo consumer del servizio Web. Se mediante l'URL non è possibile individuare alcun file WSDL, l'endpoint di tipo consumer del servizio Web resterà privo di connessione.
Le voci del file di configurazione che rappresentano le impostazioni URL del servizio Web e il modo in cui queste vengono identificate da Progettazione applicazioni cambiano a seconda che le applicazioni siano ASP.NET oppure Windows od Office. Le istruzioni riportate di seguito descrivono come garantire che le classi proxy personalizzate siano rappresentate correttamente come endpoint di tipo consumer del servizio Web per ciascun tipo di applicazione.
Nota: |
---|
Non attenersi a queste istruzioni può comunque portare a classi proxy personalizzate che funzionano correttamente in fase di esecuzione; tuttavia, queste classi non saranno rappresentate come endpoint di tipo consumer del servizio Web, non saranno connesse nel diagramma applicazioni, non saranno convalidate per la distribuzione, non saranno segnalate come endpoint nel report di distribuzione e non consentiranno la configurazione di endpoint mediante gli strumenti di distribuzione disponibili. |
Voci del file di configurazione delle classi client proxy personalizzate del servizio Web utilizzate in applicazioni Windows e Office
Per le classi proxy personalizzate utilizzate in applicazioni Windows e Office le impostazioni URL del servizio Web devono essere contenute in una voce di tipo applicationSettings nel file di configurazione App.config dell'applicazione consumer. Non è possibile visualizzare o modificare tali impostazioni mediante l'Editor impostazioni e vincoli. Di conseguenza, queste impostazioni devono essere create o modificate mediante il pannello Impostazioni accessibile facendo clic con il pulsante destro del mouse sul progetto di applicazione Windows od Office e visualizzando le proprietà del progetto. È inoltre necessario designare il tipo di queste impostazioni come WebServiceURL o String. Per ulteriori informazioni, vedere Gestione delle impostazioni di un'applicazione.
Nota: |
---|
La definizione del tipo WebServiceURL non compare nel file di configurazione App.config; tuttavia, essa viene memorizzata in un file di impostazioni associato che di norma è nascosto. Se le impostazioni vengono aggiunte manualmente al file di configurazione App.config, occorre aggiungere la definizione del tipo WebServiceURL o String come impostazione nel pannello Impostazioni. |
Nel pannello Impostazioni è possibile scegliere l'ambito Applicazione o Utente per l'impostazione se la si definisce come tipo WebServiceURL. Se si cambia l'ambito, la voce viene spostata sulla sezione applicationSettings o sulla sezione userSettings del file di configurazione. Tuttavia, se si sceglie di designare il tipo dell'impostazione come String, è necessario scegliere Applicazione come ambito.
Suggerimento: |
---|
Quando nel file App.config si specifica un'impostazione URL del servizio Web, anziché il percorso della descrizione del servizio Web o del file WSDL, specificare il percorso del servizio Web. Per i servizi Web basati su file ASMX, la descrizione del servizio Web spesso si trova nello stesso percorso del file WSDL. Di conseguenza, per i servizi Web basati su file ASMX, lo strumento Progettazione applicazioni presumerà che il percorso del servizio Web corrisponda al percorso del file WSDL. Se tale percorso contiene effettivamente un file WSDL, viene eseguita la decodifica del servizio Web esterno, che quindi viene aggiunto nel diagramma applicazioni. Tale servizio viene connesso a un endpoint di tipo consumer del servizio Web che è stato decodificato. Se invece il percorso non contiene alcun file WDSL valido, la decodifica verrà eseguita soltanto sull'endpoint di tipo consumer del servizio Web. |
Nell'esempio riportato di seguito viene illustrato il modo in cui una voce applicationSettings possa comparire in un file di configurazione App.config di un progetto Windows quando il tipo dell'impostazione è designato come String:
<applicationSettings>
<WindowsApplicationName.MySettings>
<setting name="WindowsApplicationName_Namespace_WebServiceProxyClassName" serializeAs="String"><value>http://WebServiceURL.asmx</value></setting>
</WindowsApplicationName.MySettings>
</applicationSettings>
Per le voci aventi tipo WebServiceURL, il nome dell'impostazione non deve necessariamente corrispondere al nome della classe proxy. Tutto ciò che occorre per creare un endpoint di tipo consumer del servizio Web in un'applicazione Windows od Office è una voce del file di configurazione che sia stata definita in questo modo e per cui nel pannello Impostazioni sia stato selezionato il tipo WebServiceURL o String. Ciò è possibile anche se alla voce non è stata associata alcuna classe proxy personalizzata. Se si elimina un endpoint così ottenuto, anche la voce viene eliminata. Tuttavia, la classe proxy personalizzata associata non viene eliminata.
Voci del file di configurazione delle classi proxy personalizzate del servizio Web utilizzate in applicazioni ASP.NET
ASP.NET non fornisce alcun modo per specificare che una voce di file di configurazione rappresenti un URL del servizio Web. Di conseguenza, lo strumento Progettazione applicazioni tenta di trovare una corrispondenza fra i nomi delle voci di file di configurazione e i nomi delle classi proxy. Le istruzioni riportate di seguito si applicano alle voci di file di configurazione relative alle classi proxy personalizzate utilizzate nelle applicazioni ASP.NET:
Un endpoint di tipo consumer del servizio Web viene visualizzato solo se nel progetto dell'applicazione consumer o in un qualsiasi progetto o assembly a cui si fa riferimento si trova una classe proxy avente un nome corrispondente al suddetto endpoint.
Se la classe proxy personalizzata viene utilizzata soltanto in applicazioni ASP.NET, l'URL del servizio Web deve comparire in una voce appSettings del file di configurazione Web.config dell'applicazione ASP.NET. Il nome della voce del file di configurazione deve corrispondere al nome completo della classe proxy. Mediante l'Editor impostazioni e vincoli è possibile modificare la voce appSettings del file Web.config. Per ulteriori informazioni, vedere Editor impostazioni e vincoli e Applicazione delle impostazioni.
Se la classe proxy personalizzata viene utilizzata sia in applicazioni Windows e Office sia in applicazioni ASP.NET, l'URL del servizio Web deve comparire in una voce applicationSettings del file di configurazione Web.config dell'applicazione ASP.NET. Il nome della voce del file di configurazione deve corrispondere al nome completo della classe proxy avente come prefisso il nome del progetto. Ciò rappresenta il formato predefinito utilizzato nei riferimenti Web generati automaticamente. Mediante l'Editor impostazioni e vincoli è possibile modificare la voce applicationSettings del file Web.config. La sezione applicationSettings non supporta la sintassi basata sul punto (.) per l'impostazione dei nomi; utilizzare invece i caratteri di sottolineatura (_).
Nell'esempio riportato di seguito viene illustrato il modo in cui una voce appSettings possa comparire nel file Web.config:
<appSettings>
<add key="Namespace.WebServiceProxyClassName" value="https://localhost/WebServiceApplicationName/WebServiceName.asmx"/>
</appSettings>
Nell'esempio riportato di seguito viene illustrato il modo in cui una voce applicationSettings possa comparire nel file Web.config, che corrisponde alla voce utilizzata nel file App.config di un'applicazione Windows od Office:
<applicationSettings>
<WindowsApplicationName.MySettings>
<setting name="WindowsApplicationName_Namespace_WebServiceProxyClassName" serializeAs="String"><value>http://WebServiceURL.asmx</value></setting>
</WindowsApplicationName.MySettings>
</applicationSettings>
Se si elimina un endpoint di tipo consumer del servizio Web che rappresenta una classe proxy personalizzata, la voce del file di configurazione associata viene rimossa. Tuttavia, la classe proxy associata non viene eliminata. Se si elimina o si rinomina la classe proxy personalizzata, la voce del file di configurazione associata non viene rimossa; tuttavia, poiché non esiste più una classe proxy avente un nome corrispondente, l'endpoint di tipo consumer associato viene eliminato. Se si aggiunge nuovamente una classe proxy avente un nome corrispondente o se si rinomina una classe proxy esistente in modo che il nuovo nome sia uguale alla voce del file di configurazione, l'endpoint compare nuovamente.
Migrazione dei riferimenti Web e delle classi proxy client personalizzate del servizio Web da Visual Studio .NET 2003
Le voci del file di configurazione associate ai riferimenti Web aggiunti ai progetti Windows od Office mediante Visual Studio .NET 2003 vengono memorizzate in una sezione appSettings e non nella sezione applicationSettings. Quando si effettua l'aggiornamento di un progetto Windows od Office di Visual Studio .NET 2003 mediante la procedura di conversione guidata, non viene eseguita alcuna migrazione automatica dei riferimenti Web e delle classi proxy personalizzate dalla sezione appSettings alla sezione applicationSettings. Per ulteriori informazioni sulla procedura di conversione guidata, vedere Conversione guidata di Visual Studio.
Tuttavia, la migrazione automatica dei riferimenti Web viene eseguita quando le classi proxy vengono rigenerate, ovvero quando ad esempio i servizi Web corrispondenti cambiano o quando si effettua l'aggiornamento manuale dei riferimenti Web. Per ogni riferimento Web viene aggiunta nella sezione applicationSettings una nuova impostazione, che viene utilizzata dalle classi proxy aggiornate. Dopo aver completato l'aggiornamento della sezione applicationSettings, gli endpoint di tipo consumer corrispondenti del servizio Web e le relative connessioni vengono visualizzate nel diagramma applicazioni. Per ulteriori informazioni, vedere Procedura: aggiornare i riferimenti Web ai servizi Web in diagrammi applicazioni.
Se si desidera visualizzare gli endpoint di tipo consumer del servizio Web relativi alle classi proxy personalizzate, è necessario eseguire la migrazione manuale di tali classi. Per eseguire questa operazione è possibile aggiornare le classi proxy in modo che utilizzino la sezione applicationSettings, quindi aggiungere le opportune impostazioni mediante il pannello Impostazioni accessibile dalle proprietà di progetto dell'applicazione Windows od Office. Per ulteriori informazioni, vedere Gestione delle impostazioni di un'applicazione.
Vedere anche
Concetti
Cenni preliminari sugli endpoint delle applicazioni
Cenni preliminari sulle applicazioni ASP.NET nei diagrammi applicazioni
Riferimenti
Riferimenti Web e classi proxy client personalizzate di servizi Web in librerie di classi
Tipi e prototipi di applicazione per la definizione delle applicazioni
Altre risorse
Definizione delle applicazioni sui diagrammi di applicazione