Web Services Overview
Objectives Background
Microsoft® .NET Framework
Microsoft ASP.NET
Web
Services Overview
Concepts and Architecture
Design and Create Web Services
Consume Web Services
Contents Section
1: Overview
Section
2: Architecture
Microsoft .NET framework and ASP.NET
Section
3: Creating Web Services
Section
4: Using Web Services
Invoking and consuming Web Services
Section
5: Advanced Web Services
State Management, Security, and Transactions
Summary
Section 1: Overview “Looking What
Back ...“
are Web Services?
Distributed
Web applications
Looking Back ... Traditional
distributed computing
Client/server model
Distributed object model
Components: packaging and interoperability
Remoting: remote method invocation
COM, CORBA, Java RMI and EJB
Microsoft
Windows DNA
Distributed interNet Application Architecture
DHTML, COM, ASP, Message Queuing
The
interactive Web
What’s Wrong with That? Distributed
object models don‘t scale to the Internet
Tightly coupling service and consumer
Need for homogeneous infrastructure
Versioning problems
Limited
COM support on non-Windows platforms
CORBA
is a remoting architecture
CORBA Component Model
Server object implementation not portable
EJB—Enterprise The
JavaBeans
purely interactive Web
Web Services—Basics Expose
Internet or intranet
Black
boxes
Component-like, reusable
Based
on the .NET Framework
ASP.NET Web Services model
Based
services to other processes
on open standards
HTTP, XML, and SOAP
Web Services—Basics Interconnect
Applications
Different clients
(M)any device
Distribution Web
Services are loosely coupled
Enable
and integration of application logic
the programmable Web
Not just the purely interactive Web
Distributed Web Applications Devices, Browsers
Call Services
Application
Access Application
Internet
Vertical and portal service App-specific Web Service
Building block Web Service OS and local services Web Services Contract
Section 2: Architecture The
.NET Framework Architecture
Programming Configuration
Model
The .NET Framework Architecture Microsoft .NET Framework ASP.NET Web Forms
Windows Forms
Web Services Services Framework Base
Data
Debug
Common Language Runtime System Services
...
Programming model Source Code
Compiler
Common Language Runtime Execution Engine
CIL & Metadata
Class Loader
JIT Compiler
Execution
Managed native Code
Class Lib
Configuration Concepts
1/2
and architecture
Web.Config file
Hierarchical configuration architecture Influence
on the actual directory and all subdirectories
Root Dir
Web.Config
Sub Dir1 Sub Dir2
Configuration Web.Config
2/2
file
XML based
File is kept within the application directory
Default and custom configuration
Customized Web.Config file
Customized configuration section handler
WebServicesConfiguration
class
Contains configuration information
<webServices> section in Web.Config
Section 3: Creating Web Services Basics Web
Services Infrastructure
Code Web
of Creating Web Services
and Syntax
Services Namespace
Publishing Discovery
Creating Web Services— Basics .asmx
file
Virtual path of ASP.NET Web application
Stand-alone or part of an existing solution
Web
Services infrastructure
Discovery, description, and wire format
Microsoft
Visual Studio.NET
Microsoft Visual Basic.NET, C#, and Managed C++
Web Services Infrastructure Request .vsdisco Discovery Return disco (XML) Request WSDL Web Service Client
Description Return WSDL (XML) Request .asmx Protocol Return response (XML)
Web Service
Code and Syntax WebService
Directive
Settings for ASP.NET compilers
<%@ WebService Language=value Class=value %> WebMethod Code
Attribute
Declaration Syntax
Outline <%@ WebService Class=“MyClass.MyWebService“ %>
Inline (in C#)
<%@ WebService Language=“C#“ Class=“MathService“ %> using System.Web.Services; public class MathService : WebService { [ WebMethod ] ...
Sample .asmx file <%@ WebService Language=“C#“ Class=“MathService“ %> using System; using System.Web.Services; public class MathService { [WebMethod] public int Subtract(int a, int b) { return a - b; }
}
public int Subtract_vs(int a, int b) { return b - a; }
System.Web.Services Namespace 1/2 WebService
Base class for Web Services
Provides base functionality
For example, WebService.Session
WebServiceAttribute
Optional class to add additional information
WebMethodAttribute
[ WebMethod ]
Makes a method a Web Service method
System.Web.Services Namespace 2/2 WebServiceBindingAttribute
Interface in WSDL
Set of operations
WebServicesConfiguration
Contains configuration information
<webservices> section in config.web
WebServicesConfigurationSectionHandler
Publishing a Web Service Expose Create
Web Service and Web Service methods
a Web Service proxy and an assembly
Generate proxy with WSDL tool
Create an assembly
Enables developers to program against Web Services
Publish Web
WSDL contract and HTML description
Service clients
Can be Web applications or browsers
Discovery of Web Services .vsdisco
file
XML-based file containing
links to resources for retrieving WSDL
Stored in the server‘s root directory
Access via URL and dynamic discovery document
Start discovering with the Disco tool
Automatically created by Visual Studio.NET
Global
directory of Web Services through UDDI
Universal Discovery, Description, and Integration (http://www.uddi.org)
Disco.exe Discovering
Web Services
Command-line
example:
disco /out:location /domain:domain /username:username /password:password http://localhost/WebService1/ WebService1.vsdisco
WSDL.exe Web
Services Description Tool
Create client proxy class
Input:
URL of a WSDL file, Proxy language, and protocol
Username and password
Output:
Single source file in specified language, containing: Proxy
class
Code
for network invocation and marshalling
wsdl /l:C# /protocol:protocol /out:filename /namespace:MathServiceSpace MathService.sdl
Section 4: Using Web Services Application Invoking
Web Services
Consuming Web
Model
Web Services
Services Description Language (WSDL)
Application Model Web Service Developer Web Application Developer Web Server 1 asmx
Service App
.aspx
Web Server 2 Proxy
Web Form Service App
Invoking Web Services Web
Services are URL addressable
HTTP request
Protocols
HTTP-GET Method
HTTP-POST
name and arguments in URL
Method name and arguments in POST body
HTTP-SOAP XML
grammar for
Addressing the Web Service
Returning results
Invoking: HTTP-GET and HTTP-POST http://server/appl/service.asmx/method?param=value Standard
HTTP-GET
Method name = PATHINFO
Method arguments = URL query string
Query string key = parameter name
Multiple parameters
Only primitive .NET runtime data types
Result is an XML document
Any .NET data type
HTTP-POST
Similar to GET, but with arguments in the form body
Invoking: HTTP-SOAP XML
grammar for
Web Service method, method parameters, results
Supports
Additionally: classes, structs, datasets
Class
all standard .NET data types and value classes
and struct marshalling
Serialization in XML format
Consuming Web Services Request
without method name and parameters
HTML description of Web Service
Service capabilities, methods, protocols
Web
Service can return WSDL
HTTP-GET, HTTP-POST, and HTTP-SOAP
Request
with parameter “?WSDL”
Formal WSDL description of Web Service
XML-based grammar
Can be used as input for WebServiceUtil.exe
WSDL XML
1/2
grammar, defining:
Services and ports that communicate via messages
Binding
Specify a protocol or a data format for a message or a port
Extensions for SOAP 1.1, HTTP GET/POST, and MIME
Public
description of a Web Service and its content
WSDL contract
Core
Elements of WSDL
service, port, and portType
operations and messages
WSDL An
2/2
abstract illustration of WSDL elements service_1 port_B
port_C service_2 message port_D
port_A message port type
Sample WSDL file <definitions name=“serviceName“> <portType name=“serviceNamePortType“> <soap:operation soapAction=“http://...“ /> <service name=“serviceName“> <port name=“serviceNamePort“ binding=“bindingName“> <soap:address location="http://..." />
Section 5: Advanced Web Services State
Management
Security Transactions Execution
Model
Distributed
Web Applications
State Management Web
Services are stateless
Use,
for example, ASP.NET session state
What is a session? Restricted Context
in which a user communicates to a server
Functionality Request Store
to a logical application
identification and classification
data across multiple requests
Session
events
Release
of session data
.NET State Server
Security Model Reasons
for Security
Prevent access to areas of your Web server
Record and store secure relevant user data
Security
Configuration
Authentication,
Web Client
Code
Authorization, Impersonation
IIS
ASP.NET App
.NET
Access Security
Walks the call stack to check authorization
OS
Transactions Like
1/2
ASP.NET Web Forms
COM+
Services
COM+ automatic transactions
Atomic, consistent, isolated, durable (ACID)
SQL Server Application
Web Service COM+ transaction context
Message Queuing Server
Transactions TransactionOption
2/2
Property on WebMethod Attribute:
[WebMethod(TransactionOption= TransactionOption.Required)] Transaction
Modes
Disabled
Supported
NotSupported
Required
RequiresNew
Execution Model Synchronous
Like any other call to class methods
Asynchronous
.NET Framework design pattern
Split the method into two code blocks
BeginMethodName
EndMethodName
Client has to call Begin and End
Pass a callback function or
WaitHandle class
Using Web Services from UI Completely
separate layout and processing logic
Two (or more) files: .aspx and .aspx.cs or .aspx.vb .aspx
Files
.aspx.cs
for designers and files for programmers
Easy maintainability of your application
Sample .aspx
<%@ Import Namespace=“MathServiceSpace“ %> <script language=“C#“ runat="server"> public void Submit_Click(Object S, EventArgs E) { service.Add(operand1, operand2); ... ... .asmx WSDL
file implements method “Add” file, returned by the ASP.NET runtime
Sample C#
proxy class, generated by WSDL.exe
[System.Web.Services.Protocols. SoapDocumentMethodAttribute(“http://tempuri.org/Add“)] public int Add(int a, int b) {
object[] results = this.Invoke(“Add“, new object[] {a, b});
}
return (int)(results[0]);
... public System.IAsyncResult BeginAdd(... public int EndAdd(...
Summary .NET
Architecture Overview
Web
Services and ASP.NET
Create
and Publish Web Services
Invoke
and Consume Web Services
WSDL
and Proxy Classes
Program Against Web Services
Questions
A Simple Web Service ASP.NET QuickStart Tutorial
ASP.NET QuickStart What
Is It?
Tutorial, ASP.NET samples
Syntax, architecture, features
Installation
Install Microsoft .NET Framework SDK Visual
Installation of Visual Studio.NET is not mandatory
.NET
Studio.NET installation and Components Update
Framework Samples
ASP.NET QuickStart ASP.NET Web Services Writing a Simple Web Service
Building a Simple Web Service Create
your own MathService
.asmx Implement
Create WSDL file (MathService.wsdl) Request
class MathService and Web methods
to MathService.asmx
Generate C# proxy class (MathService.cs) WebServiceUtil.exe
Generate Assembly (MathService.dll) C#
compiler “csc”
Consuming a Simple Web Service Implement
MathService client (MathServiceClient.aspx)
ASP.NET UI Operands Methods Result
Text box
Buttons
Label
Event Handler OnServerClick
TerraServer. Microsoft.net
Overview What
is it?
Set of Web methods
Programmable interface to online database Aerial
imagery and topographical maps
Assumptions
for this tutorial
Visual Studio.NET
Internet connection
Tutorial Create
a new project
Create
application UI
Add
Web reference
Implement
functionality
Legal Notices Unpublished work. 2001 Microsoft Corporation. All rights reserved. Microsoft, Visual Basic, Visual Studio, and Windows are either registered trademarks or trademarks of Microsoft Corporation in the United States and/or other countries. The names of actual companies and products mentioned herein may be the trademarks of their respective owners.