Home Page Home Page Tips & Tricks Richiamare dinamicamente i Web Services

Richiamare dinamicamente i Web Services


Sempre di più i Web Services stanno diventando parte integrante di quasi tutte le nostre applicazioni; chi non ne ha creato uno anche solo per gioco? In questo Tip vedremo come poter consumare in modalità dinamica i nostri Web Services.

Perché utilizzare i Web Services in modalità dinamica?


Il primo motivo è perché spesso creiamo i nostri progetti in locale e quindi i nostri Web Services avranno come server il "localhost" e spesso ci dimentichiamo modificare l'URL d'accesso quando si fa l'upload sul server di produzione, secondo motivo magari perché non sappiamo in anticipo l’url del nostro webservice.

In precedente articolo abbiamo già visto come consumare un Web Service, (per comodità uso un Web Service in locale chiamato DbService) quindi dal nostro client dopo aver fatto AddWebReference nella finestra del Solution Explorer avremo questa situazione:



Poi andremo ad aprire il File Refercence.cs se si utilizza C# o Reference.vb se si programma in Visual Basic, per far questo si deve cliccare sull’icona evidenziata in rosso:



Questo file non è altro che la nostra classe proxy che viene generata in automatico da Visual Studio .NET e dove sono descritti tutti i nostri Web Methods sia in modalità sincrona che asincrona. Se prendiamo il costruttore della nostra classe, avremo una situazione simile a questa:

VB.NET
Codice .NET n°1
Public Sub New()
MyBase.New
Me.Url = "http://localhost/dbservice/gestione.asmx"
End Sub


C#
Codice .NET n°2
Public GestioneDB
{
this.Url = "http://localhost/dbservice/gestione.asmx"

}


Come vedete la proprietà url è quella che definisce il path del Web Service. Per far diventare dinamica la nostra classe proxy dobbiamo cliccare sulle proprietà della webreferece e ci verrà mostrata questa finestra:



Se clicchiamo sulla proprietà Url Behavior, abbiamo due scelte Static(default) e Dynamic.
Cliccate su Dynamic e chiude la finestra della proprietà, apparentemente sembra non accadere niente, ma "magicamente" Visual Studio in automatico è andato a cambiare il costruttore della nostra classe proxy nel file Reference
Il nostro costruttore sarà diventato:

VB.NET
Codice .NET n°3
Public Sub New()
MyBase.New
Dim urlSetting As String = System.Configuration.ConfigurationSettings.AppSettings("GestioneDB.Gestione")
If (Not (urlSetting) Is Nothing) Then
Me.Url = String.Concat(urlSetting, "")
Else
Me.Url = "http://localhost/dbservice/gestione.asmx"
End If
End Sub


C#
Codice .NET n°4
Public GestioneDB
{
string urlSetting = System.Configuration.ConfigurationSettings.AppSettings["GestioneDB.Gestione"];
if ((urlSetting != null))
{
this.Url = string.Concat(urlSetting, "");
}
else
{
this.Url = " http://localhost/dbservice/gestione.asmx";
}
}


Come vedete ha aggiunto una variabile "urlSetting" che recupera il valore dal web.config attraverso la chiave GestioneDb.Gestione.
Indovinate un pò la chiave è stata aggiunta anche nel web.config non male verò?

<appSettings>
<add key=" GestioneDB.Gestione" value="http://localhost/dbservice/gestione.asmx"/>
</appSettings>


Copyright © dotNetHell.it 2002-2022
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5