Author
others
View
6
Download
0
Embed Size (px)
ASP.NET und XML Web Services
1
Microsoft .NET und C#
ASP.NETXML Web Services
Softwareentwicklung mit
MS.NET und C#
Robert Bruckner
27.11.2002
2Robert Bruckner
Agenda
�ASP
�ASP.NET: Überblick
�ASP.NET: .ashx, .aspx, Events
�XML Web Services
�Erstellung
�Verwendung
3Robert Bruckner
Web Applikationen
� ASP.NET definiert eine Web Applikation als„die Summe aller Dateien, Seiten, Handler, Module und Executables, die in einem bestimmten virtuellen Verzeichnis auf einem Web Server aufgerufen und ausgeführt werden.“
� Verteilte Applikationen
Internet
Web ServiceWeb Form
Präsentation Middle Tier Datenbank
4Robert Bruckner
CGI vs. ASP
� CGI ist plattformunabhängig, offener Standard
� Rapid Application Development (RAD) Toolsfür ASP (Active Server Pages) verfügbar
� ASP arbeitet multithreaded – ermöglicht hoheAnzahl an concurrent users
� Entwickler müssen sich intensiv mit Server-Technologien (IIS, MTS, MS-SQL) auseinandersetzen, um ASP einzusetzen
ASP.NET und XML Web Services
2
Microsoft .NET und C#
5Robert Bruckner
Alt: Active Server Pages
� Server Side Scripting
� Datei enthält HTML und Script Code<%@ Language="VBScript" %>
<html>
<head>
<title>Simple ASP Page</title>
</head>
<body>
<h1>Today's date is <%= Date %></h1><p>
<h1>The current time is <%= Time %></h1>
</body>
</html>
� Ausführung durch HTTP Aufruf
� Script Code wird am Server interpretiert
6Robert Bruckner
Alt: Active Server Pages
�Was kann ich mit ASP machen?• Einfach und schnell Web Applikationen
erstellen
• Web Inhalte dynamisch erzeugen
• Client Side Scripting zur Validierung
• Funktionalität durch COM Komponenten erweitern (z.B. Datenbankzugriff)
7Robert Bruckner
Neu: ASP.NET
�Plattform für Web Applikationen
�Neues Ausführungsmodell
Web Client
Betriebssystem
ASP.NET
ApplikationenIIS
.NET
Framework
8Robert Bruckner
ASP.NET
System.Web
(ASP.NET)
Web Browser
HTML
Web Service Client
XML
Multimedia Client
MP3/PNG/WMV
HT
TP
Runtim
e (IIS
/ISA
PI)
ASP.NET und XML Web Services
3
Microsoft .NET und C#
9Robert Bruckner
ASP.NET Konzept
�Trennung von UI und Programmcode
�Basiert auf .NET Framework
�Code wird beim ersten Aufruf einer Seite compiliert
�Zustandsmanagement
�Mehrere Programmiersprachen können verwendet werden
�Dateiupdate bei laufenden Serverbetrieb (Versionierungskonzeptvon .NET CLR!)
10Robert Bruckner
Demo
Beispiel 12: ASP.NET Darlehensrechner
11Robert Bruckner
ASP.NET Konzept
�ASP.NET verwendet die CLR um das ISAPI/ASP-Architektur von IIS zu ersetzen
�Request-Dispatch: ASPNET_ISAPI.DLL
�Handlers laufen in ASP.NET Worker Process: ASPNET_WP.EXE
�Neues Sessionmanagement
12Robert Bruckner
ASP.NET Architektur
INETINFO.EXE
(IIS5 or earlier)
ASPNET_WP.EXE
(ASP.NET Worker Process)
ASPNET_STATE.EXE
(ASP.NET Session Process)
ASPNET_ISAPI.DLL
(ASP.NET
ISAPI
Extension)
"Ted"33
Your
HTTP
Request
Handler
s2"Don"26
s1"Bob"21
s3
ASP.NET und XML Web Services
4
Microsoft .NET und C#
13Robert Bruckner
ASP.NET Anwendungen
� Eine Anwendung besteht aus• Webhandler
• ASP.NET Pages
• .aspx Files mit WebForms
• .cs, .vb, … Files mit Code
• Komponenten (Assemblies)
• Konfigurationsdateien
• config.web
• global.asax
� Sämtliche Elemente einer Anwendung müssen sich in einem Verzeichnis befinden
14Robert Bruckner
am1.ashx
config.web
C:\Inetpub\wwwroot
global.asax config.web
rc2.aspxrc1.aspx
\MyApp1 \MyApp2
assembly1.dll assembly2.dll
\bin
Aufbau einer Anwendung
15Robert Bruckner
Konfiguration
� App Settings
• Datei Web.config im root-Verzeichnis
• globale Standardeinstellungen, die für alleASP.NET Anwendungen gelten, befinden sich in folgender Datei• \Windows\Microsoft.NET\Framework\<version>\config\Mac
hine.config
� App Events
• Datei global.asax im root-Verzeichnis
16Robert Bruckner
<%@ webhandler language="C#" class="MyHandler" %>using System.Web;public class MyHandler : IHttpHandler {public void ProcessRequest(HttpContext ctx) {ctx.Response.Write("Hello, World");
}public bool IsReusable { get {return true; } }
}
HTTP Handler Example
ASP.NET und XML Web Services
5
Microsoft .NET und C#
17Robert Bruckner
HTTP Handler via web.config
<?xml version="1.0" ?><configuration><system.web><httpHandlers><add verb="*"
path="Foo.aspx" type="DM.MyHandler, simple" />
</httpHandlers></system.web>
</configuration>
18Robert Bruckner
mode
cookieless
timeout
connectionString
sqlConnectionString
XML Attribute
Storage location
Use URL munging
TTL for session state (in minutes)
Host to use for ASPSTATE
Port to use for ASPSTATE
Values
Off|Inproc|StateServer|SqlServer
true|false
integer
IP Address
TCP Port
Values
ASP.NET Sessionverwaltung
<?xml version="1.0" ?><configuration>
<system.web><sessionState mode="InProc" /><compilation debug="true" /><trace enabled="true" />
</system.web></configuration>
19Robert Bruckner
ASP.NET object model
� ASP.NET object model based on System.Web.HttpContext/IHttpHandler• Your request handler implements IHttpHandler
• ASP.NET creates a HttpContext for each pending request
• The correct HttpContext object is passed explicitly to HTTP handlers
• The current HttpContext object is exposed via the static property HttpContext.Current
• Everything you need to know about the request (and the surrounding application) is exposed via the HttpContext object
•HttpContext is a superset of the classic ASP object model
20Robert Bruckner
Application
ApplicationInstance
Session
Request
Response
User
Name
Current (static)
Handler
Items
Server
Error
HttpApplicationState
HttpApplication
HttpSessionState
HttpRequest
HttpResponse
IPrincipal
Type
HttpContext
IHttpHandler
IDictionary
HttpServerUtility
Exception
Appliction-wide property-bag
Application context (modules)
Per-client session state
The HTTP request
The HTTP response
The security ID of the caller
Description
Context for request currently in progress
The handler dispatched to the call
Per-request property-bag
URL Cracking/Sub-handlers
The 1st error to occur during processing
HttpContext Properties
ASP.NET und XML Web Services
6
Microsoft .NET und C#
21Robert Bruckner
<%@ webhandler language="C#" class="MyClass" %>using System;using System.Web;public class MyClass : IHttpHandler {public void ProcessRequest(HttpContext thiscall) {thiscall.Response.Write("Hello, ");string name = thiscall.Request.QueryString["name"];thiscall.Response.Output.WriteLine(name);
}public bool IsReusable { get { return true; } }
}
HttpContext Example
22Robert Bruckner
ASP.NET compilation model
� ASP.NET compiles code on demand based on source code dependencies • ASP.NET compiles .ASHX files once and caches the
resultant DLL
• Recompilation takes place when source is newer
than DLL
• Shadow-copies of DLLs allow existing requests to
finish using "old" code
• Directives tell ASP.NET which compiler to invoke
• Codegen directory available programmatically using AppDomain.CurrentDomain.DynamicDirectory
23Robert Bruckner
ASP.NET techniques
�ASP.NET supports two ways of producing
the response text
• Classic ASP-style assumes the .ASPX file is the literal response with small bits of code
• Classic ISAPI-style assumes that compiled code will call Response.Write to generate
response (.ASHX file)
• Given the feature set of ASP.NET, other styles are likely to emerge
24Robert Bruckner
<%@page language="C#" %><script runat="server" language="C#">string f() { return "Hello, "; }
</script><%= this.f() %>Wor<% Response.Write("ld"); %>
ASP.NET Example
.aspx
public class filename_aspx : System.Web.UI.Page {string f() { return "Hello, "; }private void __Render__control1(
HtmlTextWriter output, Control parameterContainer) {
output.Write(this.f());output.Write("Wor");Response.Write("ld");
}}
ASP.NET preprocessor
ASP.NET und XML Web Services
7
Microsoft .NET und C#
25Robert Bruckner
Demo
Beispiel 13: ASHX
26Robert Bruckner
ASP.NET Directives
� ASP.NET supports a variety of directives to control compilation and linkage
• All assemblies in the bin subdirectory are automatically referenced
• csc.exe /r command-line parameter exposed via @Assembly directive
• C# using statement exposed via @Importdirective
• Several techniques available for referencing secondary source files
27Robert Bruckner
ASP.NET Directives
@Import
@Assembly
@OutputCache
@Register
Directive Name
@Page
Replaces C#'s using statement
Replaces csc.exe's /r: switch
Controls ASP.NET's output caching
Registers tag prefix/name to class name
Description
Compilation and processing options
using MyNamespace;using MyNamespace.Web;// code goes here
<%@page language="C#" %><%@import namespace="MyNameSpace" %><%@import namespace="MyNameSpace.Web" %><%@assembly name="calc1.dll" %><%@assembly name="calc2.dll" %><%@assembly src="aux.cs" %>// code/content goes here
csc.exe /r:calc1.dll /r:calc2.dll main.cs aux.cs
28Robert Bruckner
@page Directive
Buffer
ContentType
EnableSessionState
Transaction
Src
Inherits
Name
Language
ErrorPage
Response buffering
Default Content-Type header (MIME)
Turns session state on/off
Controls COM+ transaction affiliation
Indicates source file for code-behind
Name of alternative base class
Description
Programming language to use for <%
URL for unhandled exception page
<%@page language="C#" buffer="true" contenttype="text/xml" %>
<%@page language="C#" src="mycode.cs" inherits="MyBasePage" %>
ClassName Name of generated class
AspCompat Run on classic ASP STA thread (slow)
ASP.NET und XML Web Services
8
Microsoft .NET und C#
29Robert Bruckner
Code-behind Technik
�Code innerhalb der <script> Tags wird in .cs Datei ausgelaget
• .aspx File enthält keinen Code
�@page Directive verbindet .aspx und Sourcecode Datei
<%@page Inherits="Berechnung" Src="Calc.cs" %>
� Events und HTTP-Postback wird unterstützt
30Robert Bruckner
<%@page language="C#" inherits="MyPage" src="mypage.cs" %><h1 runat="Server" id="bob"/><%= this.f() %>Wor<% Response.Write("ld"); %>
Code-behind Beispiel
using System.Web;using System.Web.UI;using System.Web.UI.HtmlControls;public class MyPage : Page {HtmlGenericControl bob;protected string f() { return "Hello, "; }public void Page_Load(Object sender, EventArgs args) {bob.InnerHtml = "Hello from code behind";
}}
mypage.aspx
mypage.cs
31Robert Bruckner
Demo
Beispiel 14: Code-behind
32Robert Bruckner
Events
�Events strukturieren Programmablauf
• Vereinfacht die Organisation des Codes
�Code kann auf Page Events reagieren
• Page_Load
• Page_Unload
�Code kann auf Control Events reagieren
• Button1_Click
• Textbox1_Changed
ASP.NET und XML Web Services
9
Microsoft .NET und C#
33Robert Bruckner
Event Modell
� Client feuert Event – Server verarbeitet Event
� Verbindung zwischen Event und Handler durch "On" vor Eventnamen und Verwendung als Attribut
// ListBox ruft bei jeder Änderung SelectedIndexChanged auf<asp:ListBox ID="MyListBox" RunAt="server"OnSelectedIndexChanged="OnNewSelection" />
ServerWeb Client
Parse MessageEvent
Event Handler
Event
Message
Antwort
Aufruf Event
Handler
34Robert Bruckner
Lebenszyklus einer Seite
Page_LoadPage_Load
Page_UnloadPage_Unload
Textbox1_ChangedTextbox1_Changed
Button1_ClickButton1_Click
Control EventsControl Events
1. Change Events1. Change Events
2. Action Events2. Action Events
35Robert Bruckner
Page_Load Event
� Wird bei jeder neuen Instanz der Seite ausgelöst• Alle Input Werte sind bereits vorhanden
• Noch keine Ausgabe an den Client erfolgt
<script language="C#" runat="Server">void Page_Load (Object sender, EventArgs e){
// IsPostBack ist ein Property der Page Klasseif (IsPostBack == false) {// Hier wird z.B. eine Datenbank abgefragt,// mit dessen Werten einige Controls der Seite// initialisiert werden.
}}
</script>
36Robert Bruckner
Server Controls
�ASP.NET enthält 45 Server Controls
• diese sind nach logischen Kriterien gruppiert
�HTML Controls
• Controls / Properties entsprechen 1:1 HTML Elementen
�Web Controls
• Grundlegende Controls
• List Controls
• Rich Controls
• Validation Controls
ASP.NET und XML Web Services
10
Microsoft .NET und C#
37Robert Bruckner
Demo
Beispiel 15: Calendar (rich control)
38Robert Bruckner
Demo
Beispiel 16: Darlehensrechner (validation controls)
39Robert Bruckner
HTML Controls
� abgeleitet von System.Web.UI.HtmlControls
� Unterschied zu normalen HTML Tags<input type="text"> // normales HTML input Feld<input type="text" runat="server" /> // HTML Control
� HTML Controls• <a>, <img>, <form>
• <table>, <tr>, <td>, <th>
• <select>, <textarea>, < input type=button>,
• <input type=text>, <input type=file>,
• <input type=check>, <input type=button>,
• <input type=radio>, <input type=hidden>
40Robert Bruckner
Web Controls
� Abstrakte Controls• Kein 1:1 Mapping zu HTML Server Controls
� abgeleitet von System.Web.UI.WebControls
� umfangreiche Funktionalität• z.B. Calendar Control
� Automatische Anpassung an den Browser• z.B. enthält das RequiredFieldValidator Control
Client-seitiges Scripting, wenn der Browser das unterstützt
� einheitliches Objektmodell
� eventgesteuertes Programmiermodell
ASP.NET und XML Web Services
11
Microsoft .NET und C#
41Robert Bruckner
Custom Controls
� Selbstentwickelte, compilierte Web Controls
� Mit Internet Service Manager ein Virtuelles Verzeichnis \Inetpub\wwwroot\<appname>erstellen
� Code übersetzen •csc.exe /target:library MyClass.cs
� Filecopy in das bin-Verzeichnis der Anwendung• copy MyClass.dll \Inetpub\wwwroot\<appname>\bin
� .aspx File anlegen und Control benutzen
42Robert Bruckner
Demo
Beispiel 17: Headline (custom control)
43Robert Bruckner
User Controls
� Mit User Controls können Teile einer WebForm zu einem eigenständigen Control zusammengefasst werden
� Dadurch können wiederverwendbare UI Komponenten erstellt werden
� User Controls verhalten sich wie Objekte• Properties, Felder, Events, Methoden
� Dateiendung ist .ascx
44Robert Bruckner
Demo
Beispiel 18: Login (user control)
ASP.NET und XML Web Services
12
Microsoft .NET und C#
45Robert Bruckner
Agenda
�ASP
�ASP.NET: Überblick
�ASP.NET: .ashx, .aspx, Events
�XML Web Services
�Erstellung
�Verwendung
46Robert Bruckner
Was ist ein Web Service?
� Ein Web Service ist eine Komponente, die ihre Methoden über Standard Web Protokolle wie SOAP zur Verfügung stellt
47Robert Bruckner
Web Services Beispiele
� Günstigster Online Buchhändler• Input ist ISBN Nummer
• Web Service durchsucht Web Seiten und gibt Link auf günstigsten Händler zurück
� Lieferverfolgung bei Buchbestellung• Buchhändler liefert über
Paketservice aus
• Status wird über die Seite des Buchhändlers abgefragt
• Web Service holt Status-informationen des Paket-services
48Robert Bruckner
XML Web Service Architektur
� Kommunikationsmedium: Internet (HTTP/SMTP)
� XML as Standard für Daten(beschreibung)
� standardisiertes Protokoll für Funktionsaufrufe• SOAP (Simple Object Access Protocol)
� Metabeschreibung der Services per XML• WSDL (Web Service Description Language)
• UDDI (Universal Description, Discovery & Integration)
� Global XML Web Services Architecture (GXA)• Erweiterungen: Security, Verschlüsselung,
Signierung, Routing
ASP.NET und XML Web Services
13
Microsoft .NET und C#
49Robert Bruckner
XML Web Service Protokolle
KommunikationKommunikation: : InternetInternet
Univ. Data Format:Univ. Data Format: XMLXML
Service Service InteraktionInteraktion:: SOAPSOAP
Service Service BeschreibungBeschreibung:: WSDLWSDL
Service Service VerzeichnisVerzeichnis:: UDDIUDDI
50Robert Bruckner
Web Service Architektur
ServiceBroker
ServiceUser
ServiceProvider
UDDI/WSDLFind
Publish
UDDI
Bind
SOAP
Communication: HTTP
Data: XML
Interactions: SOAP
51Robert Bruckner
Web Service Interoperability Organization
� Gründer: Accenture, BEA Systems,
Fujitsu, HP, IBM, Intel, Microsoft, Oracle, SAP
� Partner: W3C, IETF, UDDI.org
� Derzeit über 100 Mitglieder; u.a. SAS, Borland, Tipco,
Vitria, Rational
� Ziel von WS-I: Interoperabilität von Web Services ermöglichen (durch Standards)
und Überwachung der Konsistenz der Web Service Toolkit
Implementierungen über Plattformen, Hersteller und
Programmiersprachen.
� http://www.ws-i.org
52Robert Bruckner
SOAP
Simple Object Access Protocol
� Mechanismus zum Austausch von strukturierter und typisierter Information zwischen Kommunikationsendpunkten im Internet auf Basis von XML
� HTTP, SMTP, ... als Transportprotokoll
� XML zur Datenkapselung
� Spezifikation enthält• SOAP Envelope (für Framework)
• SOAP Encoding (optional, für plattform-übergreifendes Marshaling von Daten/Objekten)
ASP.NET und XML Web Services
14
Microsoft .NET und C#
53Robert Bruckner
HTTP/SOAP Request
POST /FService.asmx HTTP/1.1
Host: localhost
Content-Type: text/xml; charset=utf-8
Content-Length: length
SOAPAction: "http://tempuri.org/Rueckzahlungsrate"
<?xml version="1.0"?>
<soap:Envelope
xmlns:xsi="http://www.w3.org/2000/10/XMLSchema-instance"
xmlns:xsd="http://www.w3.org/2000/10/XMLSchema"
xmlns:soap="http://schemas.xmlsoap.org/soap/envelope">
<soap:Body>
<Rueckzahlungsrate xmlns="http://tempuri.org/">
<strKapital>string</strKapital>
<strZinssatz>string</strZinssatz>
<strMonate>string</strMonate>
</Rueckzahlungsrate>
</soap:Body>
</soap:Envelope>
54Robert Bruckner
SOAP Envelope
<soapv:Envelope xmlns:soapv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://www.develop.com/schemas/orders"> <soapv:Body>
</soapv:Body></soapv:Envelope>
<ns1:Order> <customer>99211-33b</customer> <partno>8881-4ah</partno></ns1:Order>
Payload
SOAP
Frame
55Robert Bruckner
SOAP Header Extensions
<soapv:Envelope xmlns:soapv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://www.develop.com/schemas/orders" xmlns:ns2="uuid:50d94ba4-e99f-491b-a0b6-a184fe29a82d" xmlns:ns3="urn:x-secure-hash:sha1"> <soapv:Header>
</soapv:Header> <soapv:Body>
</soapv:Body></soapv:Envelope>
<ns1:Order> <customer>99211-33b</customer> <partno>8881-4ah</partno></ns1:Order>
<ns3:signature soapv:mustUnderstand="1"> <hash>92114532</hash></ns3:signature>
<ns2:culture> <language>en</language><region>UK</region></ns2:culture>
Mandatory
Header
Optional
Header
Payload
SOAP
Frame
56Robert Bruckner
WS Ausführungsmodell
Web Client
Betriebssystem
ASP.NET
ApplikationenIIS
.NET
Framework
� Web Services basieren auf ASP.NET
ASP.NET und XML Web Services
15
Microsoft .NET und C#
57Robert Bruckner
Web Service Programmiermodell
� Erstellen einer .asmx Datei, die eine Klasse mit den Methoden enthält, die als Web Service zur Verfügung stehen sollen.
� Das Hinzufügen des Attributs [WebMethod] zu einer Public-Methode macht sie automatisch zu einem Web Service.
� ASP.NET erledigt den "Rest"• Compile on demand
• Erzeugen der Service-Beschreibung alsWSDL-Datei (Web Service Description Language)
• Erstellen von „Testseiten“ für Methoden, die über HTTP GET/POST aufrufbar sind.
58Robert Bruckner
Code & Syntax
� WebService Direktive• Einstellungen für den ASP.NET Compiler
<%@ WebService Language=value Class=value %>
� WebMethod Attribut
� Code Deklaration Syntax• Outline
<%@ WebService Class=“My.Class.MyWebService“ %>
• Inline (in C#)<%@ WebService Language="C#" Class="MathService" %>using System.Web.Services;public class MathService : WebService {
[ WebMethod ]...
59Robert Bruckner
Beispiel .asmx Datei
<%@ WebService Language="C#" Class="MathService" %>
using System;using System.Web.Services;
public class MathService : WebService{
[WebMethod]public int Subtract(int a, int b){
return a - b;}[WebMethod] public int Multiply(int a, int b){
return a * b;}
}
60Robert Bruckner
Demo
Beispiel 19: „Math“ Web Service
ASP.NET und XML Web Services
16
Microsoft .NET und C#
61Robert Bruckner
Web Service testen
� IISAdmin• Anlegen eines Virtual Directory z.B. Math
http://localhost/NET/19Math/Math.asmx
� Testseite für WebService:
62Robert Bruckner
Web Service aufrufen
� Aufruf über URL
• HTTP Request
� Protokolle
• HTTP-GET• Methodenname und Parameter in der URL
• HTTP-POST• Methodenname und Parameter im HTTP Header
• HTTP-SOAP• Adresse und Parameter in XML Format
63Robert Bruckner
Aufruf über GET & POST
http://server/service.asmx/method?param=value
� Standard HTTP-GET• Methodenname = steht im Pfad
• Argumente = URL query string• Mehrere Parameter möglich
• Nur primitive .NET Datentypen möglich
• Rückgabe ist ein XML Dokument• alle .NET Datentypen möglich
� HTTP-POST• Ähnlich GET
• Argumente stehen im HTTP Header
64Robert Bruckner
Aufruf über SOAP
� XML Grammatik für
• Methodenname, Parameter und Rückgabewerte
� Unterstützt alle Standard .NET Datentypen und Klassen als value
• Zusätzlich: Klassen, Structs, Datasets
� Marshalling von Klassen und Structs
• Serialisierung in XML Format
ASP.NET und XML Web Services
17
Microsoft .NET und C#
65Robert Bruckner
Web Service Description
� Aufruf ohne Methodennamen und Parameter
• HTML Beschreibung des Web Service, Methoden, Parameter und Protokolle
� Aufruf mit Parameter “?WSDL”
• Formale Beschreibung des Web Service als WSDL Datei
• Format ist XML
• Input für WSDL.exe
66Robert Bruckner
WSDL
Web Services Description Language
� Öffentliche Beschreibung eines Web Services in XML• WSDL Vertrag
� Grundelemente von WSDL• Services, die mehrere Ports beinhalten
• Über Ports werden Messages geschickt
• Jeder Port enthält Adress- und Bindinginfos
• Binding spezifiziert das Datenformat und Protokolldetails
• PortTypes definiert die Befehle, die über einen Port geschickt werden können
67Robert Bruckner
WSDL
service_2
service_1
message
port_Aport_D
port
type
port_Cport_B
message
� Abstrakte Darstellung der WSDL Elemente
68Robert Bruckner
Beispiel WSDL Datei
<definitions name="serviceName"><import namespace="http://namespacePath"
location="http://path/fileName.wsdl">
<portType name="portNameType"><operation name="opName">
<input message="msgNameInput" /><output message="msgNameOutput" />
</operation></portType>
<binding name="bindingName"><soap:operation soapAction="http://..." />
</binding>
<service name="serviceName"><port name="portName" binding="bindingName">
<soap:address location="http://..." /></port>
</service></definitions>
ASP.NET und XML Web Services
18
Microsoft .NET und C#
69Robert Bruckner
WSDL
Schema(s)
Pseudo
Schema Type
Abstract
Interface
Protocol-specifc
Interface
Concrete
Endpoint
wsdl:binding
wsdl:operation*
proto:operation*
proto:binding*
wsdl:definitions wsdl:portType wsdl:operation*
?
?
wsdl:service wsdl:port+ proto:address
wsdl:message wsdl:part*
wsdl:types xsd:schema* xsd:xxxType*
wsdl:input
wsdl:output
*
*
*
*
*
70Robert Bruckner
Web Service
Entwickler
(Web) Applikation
Entwickler
Web Server 1
Service App.asmx
.aspx
Web Server 2
Service App
Proxy Web Form
Web Service Applikationsmodell
Proxy Appl.
71Robert Bruckner
WS Clients entwickeln
� Proxy Klasse generieren• WSDL.exe
� Input• WSDL Datei bzw. direkter Zugriff auf URL (z.B.
http://localhost/NET/19math/math.asmx?WSDL)
• Sprache (C#, VB, JScript)
• Protokoll (GET, POST, SOAP)
� Output• Source Datei mit Proxy Klasse und Code für
Aufruf und Marshalling
72Robert Bruckner
WS Clients entwickeln / VS.NET
� Proxy-Klasse wird automatisch durch das Hinzufügen einer „Web Reference“ zur Solution generiert.
ASP.NET und XML Web Services
19
Microsoft .NET und C#
73Robert Bruckner
Demo
Beispiel 20: Verwendung des „Math“ Web Service
74Robert Bruckner
Demo
Beispiel 21/22:
„FinanceServices“ Web Service
- WebFormsClient
- WinFormsClient
75Robert Bruckner
UDDI
Universal Discovery, Description and Integration
� Globale Datenbank über Unternehmungen
� Wer bietet was an?
� Von 30+ Unternehmen getragen • IBM, Ariba, Microsoft
betreiben EINE verteilte Datenbank
• SAP, Oracle, Sun, etc.
� http://www.uddi.org
76Robert Bruckner
UDDI Benutzung
� Daten in XML beschrieben• White pages (Name, Kontakt)
• Yellow pages (Welche Branche)
• Green pages (Binding Information – Wie kannKunde Unternehmen integrieren?URL, Telefon, Web Services etc.)
� Zugriff auf Registry via Web / SOAP
� Ermöglicht strukturierte Suche und Integration! • Menschen können suchen
• Software kann suchen
• Dynamische Integration (von z.B.: Web Services)
ASP.NET und XML Web Services
20
Microsoft .NET und C#
77Robert Bruckner
XML Web Service Protokolle
KommunikationKommunikation: : InternetInternet
Univ. Data Format:Univ. Data Format: XMLXML
Service Service InteraktionInteraktion:: SOAPSOAP
Service Service BeschreibungBeschreibung:: WSDLWSDL
Service Service VerzeichnisVerzeichnis:: UDDIUDDI
78Robert Bruckner
� XML Web Services ermöglichen die Integration von Business Logik übers Internet
� Sind primär für die Verwendung im Internet designed (CORBA, RMI: Intranet)
� Integration SOAP und CORBA ist möglich
� WSDL ist wesentlich mächtiger als IDL (beschreibt auch die Semantik für RPC und Datenpakete)
� HTTP, XML, SOAP, WSDL sind standardisiert, UDDI quasi-Standard
Zusammenfassung
XML Web Services
79Robert Bruckner
Fragen?
Uff...