Transcript
Page 1: Präsentation Middle Tier Datenbank Internet Web Servicebruckner/dotnet/VO3_ASP_WS.pdf · Server Controls ASP.NET enthält 45 Server Controls ... •Grundlegende Controls •List

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

Page 2: Präsentation Middle Tier Datenbank Internet Web Servicebruckner/dotnet/VO3_ASP_WS.pdf · Server Controls ASP.NET enthält 45 Server Controls ... •Grundlegende Controls •List

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)

Page 3: Präsentation Middle Tier Datenbank Internet Web Servicebruckner/dotnet/VO3_ASP_WS.pdf · Server Controls ASP.NET enthält 45 Server Controls ... •Grundlegende Controls •List

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

Page 4: Präsentation Middle Tier Datenbank Internet Web Servicebruckner/dotnet/VO3_ASP_WS.pdf · Server Controls ASP.NET enthält 45 Server Controls ... •Grundlegende Controls •List

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

Page 5: Präsentation Middle Tier Datenbank Internet Web Servicebruckner/dotnet/VO3_ASP_WS.pdf · Server Controls ASP.NET enthält 45 Server Controls ... •Grundlegende Controls •List

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

Page 6: Präsentation Middle Tier Datenbank Internet Web Servicebruckner/dotnet/VO3_ASP_WS.pdf · Server Controls ASP.NET enthält 45 Server Controls ... •Grundlegende Controls •List

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

Page 7: Präsentation Middle Tier Datenbank Internet Web Servicebruckner/dotnet/VO3_ASP_WS.pdf · Server Controls ASP.NET enthält 45 Server Controls ... •Grundlegende Controls •List

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)

Page 8: Präsentation Middle Tier Datenbank Internet Web Servicebruckner/dotnet/VO3_ASP_WS.pdf · Server Controls ASP.NET enthält 45 Server Controls ... •Grundlegende Controls •List

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

Page 9: Präsentation Middle Tier Datenbank Internet Web Servicebruckner/dotnet/VO3_ASP_WS.pdf · Server Controls ASP.NET enthält 45 Server Controls ... •Grundlegende Controls •List

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

Page 10: Präsentation Middle Tier Datenbank Internet Web Servicebruckner/dotnet/VO3_ASP_WS.pdf · Server Controls ASP.NET enthält 45 Server Controls ... •Grundlegende Controls •List

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

Page 11: Präsentation Middle Tier Datenbank Internet Web Servicebruckner/dotnet/VO3_ASP_WS.pdf · Server Controls ASP.NET enthält 45 Server Controls ... •Grundlegende Controls •List

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)

Page 12: Präsentation Middle Tier Datenbank Internet Web Servicebruckner/dotnet/VO3_ASP_WS.pdf · Server Controls ASP.NET enthält 45 Server Controls ... •Grundlegende Controls •List

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

Page 13: Präsentation Middle Tier Datenbank Internet Web Servicebruckner/dotnet/VO3_ASP_WS.pdf · Server Controls ASP.NET enthält 45 Server Controls ... •Grundlegende Controls •List

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)

Page 14: Präsentation Middle Tier Datenbank Internet Web Servicebruckner/dotnet/VO3_ASP_WS.pdf · Server Controls ASP.NET enthält 45 Server Controls ... •Grundlegende Controls •List

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

Page 15: Präsentation Middle Tier Datenbank Internet Web Servicebruckner/dotnet/VO3_ASP_WS.pdf · Server Controls ASP.NET enthält 45 Server Controls ... •Grundlegende Controls •List

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

Page 16: Präsentation Middle Tier Datenbank Internet Web Servicebruckner/dotnet/VO3_ASP_WS.pdf · Server Controls ASP.NET enthält 45 Server Controls ... •Grundlegende Controls •List

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

Page 17: Präsentation Middle Tier Datenbank Internet Web Servicebruckner/dotnet/VO3_ASP_WS.pdf · Server Controls ASP.NET enthält 45 Server Controls ... •Grundlegende Controls •List

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>

Page 18: Präsentation Middle Tier Datenbank Internet Web Servicebruckner/dotnet/VO3_ASP_WS.pdf · Server Controls ASP.NET enthält 45 Server Controls ... •Grundlegende Controls •List

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.

Page 19: Präsentation Middle Tier Datenbank Internet Web Servicebruckner/dotnet/VO3_ASP_WS.pdf · Server Controls ASP.NET enthält 45 Server Controls ... •Grundlegende Controls •List

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)

Page 20: Präsentation Middle Tier Datenbank Internet Web Servicebruckner/dotnet/VO3_ASP_WS.pdf · Server Controls ASP.NET enthält 45 Server Controls ... •Grundlegende Controls •List

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...