XML-webservices of kortweg webservices zijn diensten die de ene website kan aanbieden en die door een andere website (of door een ander programma) gebruikt of "geconsumeerd" kunnen worden. Je kan je een webservice voorstellen als een functie die je kan aanroepen vanaf een andere website.
Wat deze functies kunnen doen is in feite onbegrensd. Voorbeelden zijn:
Hierdoor wordt het mogelijk verschillende websites te laten samenwerken door elkaar informatie te leveren. Jouw website kan een onderdeel tonen met gegevens die door een webservice in Amerika geleverd wordt. Omgekeerd kan jouw website ook een dienst leveren die door andere sites gebruikt wordt.
Er wordt verwacht dat webservices in de toekomst steeds belangrijker zullen worden. Microsoft heeft als demonstratie een site [bewerken] XML-webservices aanbieden met ASP.NET
ASP.NET ondersteunt XML-webservices door middel van een .asmx-bestand. Een .asmx-bestand is een tekstbestand vergelijkbaar met een .aspx-bestand, maar het bevat alleen code en geen HTML. Dit bestand kan onderdeel zijn van een ASP.NET-applicatie waarin ook .aspx-bestanden zitten. Je kan dit bestand opvragen met de browser, net zoals .aspx-bestanden. Maak een nieuw bestand in Visual Studio, maar kies als type niet Web Form, maar wel Web Service. Je krijgt een asmx-bestand. Pas het aan zodat je dit resultaat krijgt:
helloworld.asmx
<%@ WebService Language="VB" Class="helloworld" %> Imports System.Web Imports System.Web.Services Imports System.Web.Services.Protocols <WebService(Namespace := "")> _ <WebServiceBinding(ConformsTo:=WsiProfiles.BasicProfile1_1)> _ Public Class helloworld Inherits System.Web.Services.WebService <WebMethod()> _ Public Function SayHelloWorld() As String Return "Hello World" End Function End Class
Dit bestand begint met een ASP.NET-directief WebService, en stelt de taal in op C#, Visual Basic, of JScript. Vervolgens importeert het de naamruimte System.Web.Services. Dit is verplicht.
Dan wordt de klasse HelloWorld gedeclareerd. Deze klasse is Public, en afgeleid van de basisklasse WebService, maar dit is optioneel. Voor elke webservice moet je zo’n klasse aanmaken. Deze klasse kan allerlei methodes bevatten, maar alle methodes die als webservice toegankelijk moeten zijn moeten een extra attribuut <WebMethod()> hebben. Zonder dit attribuut is de methode niet toegankelijk van buitenaf.
Om deze webservice nu toegankelijk te maken noem je het bestand HelloWorld.asmx en je plaatst het op een server mijndomein.com binnen een virtuele folder mijnfolder.
Met een browser kan je nu de URL mijnfolder/HelloWorld.asmx intikken, en de pagina die je dan krijgt zal de publieke methodes voor deze XML-webservice tonen (de methodes die het WebMethod-attribuut hadden). Verder kun je ook zien welke protocollen (zoals SOAP, of HTTP GET) gebruikt kunnen worden om deze methodes aan te roepen. Let op: veel publieke webservices schermen deze testmogelijkheid af.
Als je daarentegen het adres: mijnfolder/HelloWorld.asmx?WSDL (hetzelfde adres met ?WSDL erachter) in de browser intikt, dan krijg je een zogenaamd Web Service Description Language (WSDL) document. Dit WSDL-document is erg belangrijk, en het wordt door clients gebruikt om informatie te krijgen over de webservice.
Hieronder zal je leren hoe je die informatie in je webpagina's kan gebruiken.
XML-webservice-bestanden worden onder ASP.NET bewaard met de extensie asmx. Net zoals aspx-bestanden worden deze automatisch de eerste keer gecompileerd naar een DLL door de ASP.NET-runtime als ze opgevraagd worden, en daarna wordt de gecompileerde versie gebruikt voor nieuwe aanvragen.
Nota: XML-webservices zijn een algemene Internet-standaard. Ze hoeven daarom niet noodzakelijk met ASP.NET gemaakt te zijn. Wees dus niet verwonderd als je nergens een asmx-bestand ziet. Meestal vind je wel in de documentatie hoe je de service dan moet opvragen.
ASP.NET heeft niet alleen de technologie om XML-webservices aan te bieden, maar ook een aantal tools en code om webservices te consumeren. Omdat webservices gebaseerd zijn op open protocollen zoals het Simple Object Access Protocol (SOAP) kun je met ASP.NET ook webservices gebruiken die helemaal niet met ASP.NET gemaakt zijn.
Om de webservice hierboven te gebruiken (te "consumeren"), moet je een zogenaamde proxy-klasse aanmaken. De proxy-klasse is een DLL die de webservice lokaal zal vertegenwoordigen, en die dan gebruikt kan worden om de webservice aan te spreken. Je kunt deze DLL daarna gebruiken in je aspx-pagina's.
Hier zullen we de “Hello World”-service consumeren.
In Visual Web Developer klik je rechts op je project in de Solution Explorer, en je kiest "Add Web Reference...". Vul het adres in van je asmx-bestand en klik op "Go".
Verander de "Web reference name" in "NSHello" en klik op de knop "Add Reference".
Er wordt een nieuwe subfolder App_WebReferences aangemaakt. Hierin verschijnen drie bestanden: helloworld.disco, helloworld.discomap en helloworld.wsdl. Deze bestanden worden gebruikt door ASP.NET om informatie te vinden over de webservice.
Wanneer je daarna een methode van de klasse aanroept, dan zal dit ervoor zorgen dat de proxy-klasse een SOAP-verzoek stuurt naar de webservice. Er komt vervolgens een SOAP-antwoord terug, en dit wordt in dit geval vertaald naar een string.
Vanuit het standpunt van de client zal de code heel simpel zijn:
HelloWorld7.aspx
<%@ Page Language="VB" %> <script runat="server"> Protected Sub Button1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Dim mijnHelloWorld As New NSHello.helloworld() Label1.Text = mijnHelloWorld.SayHelloWorld() End Sub </script> <html xmlns="1999/xhtml" > <head runat="server"> <title>Een eenvoudige webservice</title> </head> <body> <form id="form1" runat="server"> <div> <asp:Button ID="Button1" runat="server" OnClick="Button1_Click" Text="Button" /> <asp:Label ID="Label1" runat="server" ></asp:Label> </div> </form> </body> </html>
Het resultaat is een label met "Hello World".
Hier is nog een voorbeeld van een webservice, genaamd RekenService, die enkele methodes aanbiedt voor het optellen, aftrekken, delen en vermenigvuldigen van twee getallen. Elke methode heeft het <WebMethod()>-attribuut.
RekenService.asmx
eProgrammeren in ASP.NET/Webservices - booksb Nude Cunt q q Dating Tits aProgrammeren in ASP.NET/Webservices - booksl s Porn Nude