web services

fishnibblersspongyΛογισμικό & κατασκευή λογ/κού

14 Δεκ 2013 (πριν από 3 χρόνια και 4 μέρες)

61 εμφανίσεις

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



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

IIS

Discovery

Let me talk to you (SOAP)

Web Services (In Practice)

Design
-
Time or Dynamic

Runtime

http://yourservice.com

HTML or XML with link to WSDL

How do we talk? (WSDL)

http://yourservice.com/?WSDL

XML with service descriptions

http://yourservice.com/svc
1

XML/SOAP BODY

Web

Service

Web

Service

Consumer

UDDI

Find a Service

http://www.uddi.org

Link to DISCO or WSDL document

XML Web Services Mapping

Data

Schema

Services

Invocation

Web

XML

XSD

WSDL

SOAP

Application

Concepts

Framework

Objects

Classes

Methods

Calls

The .NET Framework provides

a bi
-
directional 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.

<?xml version="
1.0
" encoding="utf
-
8
"?>

<soap:Envelope …>


<soap:Header>



<AuthHeader xmlns="http://tempuri.org/">




<Username>avi</Username>




<Password>xM
76
w@</Password>



</AuthHeader>


</soap:Header>


<soap:Body>



<Add xmlns="http://tempuri.org/">




<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: "http://tempuri.org/Add"

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