Home > SKIP > Visual Studio .Net > Web Services Authenticated SOAP Postings

Web Services Authenticated SOAP Postings

ASP.NET Web Services

A Web Service is programmable application logic accessible via standard Web protocols.

  • 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
  • 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 / call backs and 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

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

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

Overview of XML Web Service Architectures

XML Web Service Architectures

XML Web Services Mapping

The .NET Framework provides a bi-directional mapping

XML Web Services Mapping

Simple Example

<%@ WebService Language="C#" Class="HelloWorld" %>
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.

POST /HelloWorld/Hello.asmx HTTP/1.1 Host: localhost Content-Type: text/xml; charset=utf-8 Content-Length: length SOAPAction: "http://tempuri.org/Add"
<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope …>
<soap:Header>
<AuthHeader xmlns="http://tempuri.org/">
<Username>avi</Username>
<Password>xM76w@</Password>
</AuthHeader>
</soap:Header>
<soap:Body>
<Add xmlns="http://tempuri.org/">
<a>23</a>
<b>44</b>
</Add>
</soap:Body>
</soap:Envelope>

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:Fault><faultcode>SOAP:Server</faultcode>
<faultstring>Internal Application Error</faultstring>
<detail xmlns:f=“http://www.a.com/CalculatorFault”>
<f:errorCode>794634</f:errorCode<f:errorMsg>Divide by ro</f:errorMsg></detail>><SOAP:Fault>

Soap Extensions

Creation

  • 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

Uses

  • Apply the attribute to a web method or web service class
  • Used for More Advanced Functionality
  • Intercept Calls to a Web Service
  • Intercept Calls to a Web Method
  • Pre and Post Processing
  • Tracing
  • Encryption
  • Compression