Web Services
ASP.NET Web Services Goals of ASP.NET Web services: To enable cross-platform, cross- business computing Great for “service” based operations that have few methods: Google searches, Amazon integration, etc. ASP.NET Web services are “method-oriented”, not object- oriented Everything is passed by value: no references to server objects
ASP.NET Web Services Usually uses SOAP over HTTP POST – platform independent messages Hosted in IIS Can use built-in authentication and encryption via IIS Technically stateless, but can use regular ASP.NET Session variables Very easy to use, with good support in Visual Studio.NET Doesn’t support: Events / callbacks Object references
Standards-Based SOAP (Simple Object Access Protocol) XML-based protocol for messaging WSDL (Web Service Description Language) Document describing the message exchange contract DISCO (Discovery) Simple protocol for publishing available services UDDI (Universal Description Discovery and Integration) Yellow pages directory for services
SOAP Simple Object Access Protocol XML based protocol to exchange structured and typed information Remote Procedure Calls (RPC) Serialization Rules (XSD) Extensible
WSDL Web Service Definition Language An XML-based grammar for describing the capabilities of Web Services Extensible Jointly developed by Microsoft and IBM Similar in concept to IDL, but it’s not IDL To parse WSDL you need XML parser
UDDI Universal Description, Discovery and Integration A project to speed interoperability and adoption for web services Standards-based specifications for service description and discovery Shared operation of a business registry on the web Partnership among industry and business leaders Open process with clear roadmap to a standards body
Publish Find Bind Internet Overview of XML Web Service Architectures XML Web Service Provider XML Web Service Consumer UDDI (XML Web Service Broker)
Web Services As an Implementation of a Service-Oriented Architecture UDDI Any Client SOAP.NET Web Service SOAP IIS
Discovery Let me talk to you (SOAP) Web Services (In Practice) Design-Time or Dynamic Runtime HTML or XML with link to WSDL How do we talk? (WSDL) XML with service descriptions XML/SOAP BODY WebService WebServiceConsumer UDDI Find a Service Link to DISCO or WSDL document
XML Web Services Mapping Data Schema Services InvocationWebXML XSD WSDL SOAP ApplicationConceptsFrameworkObjects Classes Methods Calls The.NET Framework provides a bi-directional mapping
Simple Example using System; using System.Web.Services; public class HelloWorld : WebService { [WebMethod] public String SayHelloWorld() { return "Hello World"; }
SOAP Simple Object Access Protocol XML-based standard that defines how method calls can be made over HTTP, and how the server’s response should be formatted You need to know it because in certain circumstances where you might want to use SOAP to exchange special “meta” information along with each method call
SOAP Elements Envelope (mandatory) Top element of the XML document representing the message Header (optional) Determines how a recipient of a SOAP message should process the message Adds features to the SOAP message such as authentication, transaction management, message routes, etc… Body (mandatory) Exchanges information intended for the recipient of the message. Typical use is for RPC calls and error reporting.
<soap:Header> <a>23</a><b>44</b></Add></soap:Body></soap:Envelope> POST /HelloWorld/Hello.asmx HTTP/1.1 Host: localhost Content-Type: text/xml; charset=utf-8 Content-Length: length SOAPAction: "
SOAP Fault Used to carry error and/or status information within a SOAP message Appears within the SOAP body Defines the following: faultcode (mandatory) Faultstring (mandatory) faultactor (optional) Detail
SOAP Fault Example SOAP:Server Internal Application Error Divide by zero
Soap Extensions Creating Create a class derived from SoapExtension Create a class derived from SoapExtensionAttribute Overload the constructor if necessary Define any custom properties Overload the ‘ExtensionType’ property to return the type of your derived SoapExtension class Apply the attribute to a web method or web service class
Soap Extensions Uses Used for More Advanced Functionality Intercept Calls to a Web Service Intercept Calls to a Web Method Pre and Post Processing Tracing Encryption Compression