Creare web service con ASP non è facilissimo, se paragonato a quello che bisogna fare per raggiungere lo stesso scopo con ASP.NET.
Non è raro invece che si debba accedere ad alcuni dati presenti su un sito su cui il supporto ASP.NET non sia presente.
In casi come questo è possibile emulare un web service utilizzando la particolarità dell'oggetto recordset di ADO di poter esportare i dati in formati XML attraverso il metodo Save.
Ecco il file ASP:
<!--METADATA Type="typelib" uuid="{00000205-0000-0010-8000-00AA006D2EA4}"--><% ' content type response.ContentType = "text/xml" ' connessione strConn = "Provider = SQLOLEDB.1; Data Source = localhost; User ID = sa; Password =" set conn = Server.CreateObject("ADODB.Connection") conn.Open strconn set rs = Server.CreateOBject("ADODB.Recordset") rs.Open "SELECT TOP 10 * FROM faq", conn, 1, 3 rs.Save Response, adPersistXML ' libero risorse rs.Close Set rs = Nothing conn.Close set conn = Nothing %> Supponendo di aver chiamato questo script ASP provider.asp, ci basterà utilizzare uno script come il seguente per recuperare i dati e visualizzarli in un datagrid: Ed ecco lo script ASP.NET: [code lang="aspx"]<%@ Import Namespace="System.Data"%> <SCRIPT language="VB" runat="server"> Sub Page_Load(sender As Object, E As EventArgs) Dim strURL as String = "http://localhost/provider.asp" ' inserisco il file XML nel dataset Dim ds As New DataSet ds.ReadXml(strURL) ' quale "tabella" prendere? queryres.DataSource = new DataView(ds.Tables(1)) ' effetto il databinding sul datagrid queryres.DataBind() End Sub </script> <ASP:DataGrid id="queryres" runat="server" BackColor="white" Headerstyle-BackColor="lightsteelblue" Headerstyle-Font-Style="bold" />
Ovviamente questo workaround va benissimo per "web service" testuali, che espongano solo contenuti, mentre diventa più macchinoso da implementare nel caso in cui il web service debba avere una propria logica interna.
Commenti
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.