web services
Download
Report
Transcript web services
Web Services
ASP.NET Web Services
Goals of ASP.NET Web services:
To enable cross-platform, crossbusiness computing
Great for “service” based operations
that have few methods: Google
searches, Amazon integration, etc.
ASP.NET Web services are
“method-oriented”, not objectoriented
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)
WSDL (Web Service Description Language)
Document describing the message
exchange contract
DISCO (Discovery)
XML-based protocol for messaging
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
Overview of XML Web Service
Architectures
UDDI
(XML Web Service Broker)
Internet
Bind
XML Web Service
Consumer
XML Web Service
Provider
Web Services As an Implementation of a
Service-Oriented Architecture
UDDI
IIS
.NET
Web Service
SOAP
Any
Client
Web Services (In Practice)
Find a Service
http://www.uddi.org
UDDI
Link to DISCO or WSDL document
Discovery
Web
Service
Consumer
http://yourservice.com
HTML or XML with link to WSDL
How do we talk? (WSDL)
http://yourservice.com/?WSDL
XML with service descriptions
Let me talk to you (SOAP)
http://yourservice.com/svc1
XML/SOAP BODY
Design-Time or Dynamic
Runtime
Web
Service
XML Web Services Mapping
The .NET Framework provides
a bi-directional mapping
Application
Concepts
Web
Framework
Data
XML
Objects
Schema
XSD
Classes
Services
WSDL
Methods
Invocation
SOAP
Calls
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 zero</f:errorMsg>
</detail>
</SOAP:Fault>
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