25
Kapitel 8: Workshop .NET – 1 Objektverwaltung höherer Ordnung (OHO) – SS 2002 8.2 Microsoft .NET Kurzer Überblick zu Microsoft .NET .NET Systemübersicht Common Language Runtime .NET Class Library Erweiterungen und Dienste .NET Web-Service Beispiel Überweisungsszenario mit Web-Services... Service Description and Discovery Web Referenzen Zoom-In: Proxies und Implementierungen in C#

Workshop 'Microsoft .NET' - dbs.ethz.ch fileObjektverwaltung höherer Ordnung (OHO) – SS 2002 Kapitel 8: Workshop .NET – 1 8.2 Microsoft .NET Kurzer Überblick zu Microsoft .NET

  • Upload
    others

  • View
    1

  • Download
    0

Embed Size (px)

Citation preview

Kapitel 8: Workshop .NET – 1Objektverwaltung höherer Ordnung (OHO) – SS 2002

8.2 Microsoft .NET

Kurzer Überblick zu Microsoft .NET • .NET Systemübersicht• Common Language Runtime• .NET Class Library• Erweiterungen und Dienste

.NET Web-Service Beispiel• Überweisungsszenario mit Web-Services...• Service Description and Discovery• Web Referenzen• Zoom-In: Proxies und Implementierungen in C#

Kapitel 8: Workshop .NET – 2Objektverwaltung höherer Ordnung (OHO) – SS 2002

Topic: Warum .NET?

Ubiquitous Software Infrastructure

Kapitel 8: Workshop .NET – 3Objektverwaltung höherer Ordnung (OHO) – SS 2002

.Überblick

CLR

MSIL

C#

VB.NET

C++ JS

API

Class Library

XML Web Services

ADO.NET

InteropASP.NET

WebForms

ODBC.NET

OLE DB

.NET DP

COM+Services

.NET My Services

Web Controls

.NETRem-otingChannels

Darüberhinaus ist.NET für Microsoft auch einfach ‚Markenname‘ für die aktuelle Produktgeneration

Kapitel 8: Workshop .NET – 4Objektverwaltung höherer Ordnung (OHO) – SS 2002

.NET in KürzeSoftware-Infrastruktur für die Entwicklung verteilter, heterogener Anwendungen (mit ‘verteilt’ meint man hier insbesondere das Internet)Für alle Arten von Computern (.NET Compact Framework, Smart Device Extension SDE)Optimiert für Windows (GDI+)Starke Ähnlichkeit zu den Konzepten und Mechanismen von JavaUnter anderem wird auch SOAP unterstützt, aber leider ist die Implementierung derzeit noch unvollständig“.NET My Services” waren mal als beispielhafte Web-Services gedacht...Microsoft Produkt

Kapitel 8: Workshop .NET – 5Objektverwaltung höherer Ordnung (OHO) – SS 2002

Common Language Runtime (CLR)

Die CLR ist die Laufzeitumgebung für sogenannten „managed“ Code• Objektorientierung• Garbage Collection• Immer Just-In-Time Kompilierung (JIT)• Class Management (Zugriff, Versionierung)• Security Sandbox

Lauffähig ist alles, was in der MicrosoftIntermediate Language (MSIL) vorliegtCLR ~ Java Virtual MachineMSIL ~ Java Byte Code

CLR

MSIL

C#

VB.NET

C+ + JS

API

Class Library

XML WebServices

ADO.NET

Interop

ASP.NET

WebForms

ODBC.NET

OLE DB

.NET DP

COM+Services

.NET My Services

Web Controls

CLR

MSIL

C#

VB.NET

C+ + JS

API

Class Library

XML WebServices

ADO.NET

Interop

ASP.NET

WebForms

ODBC.NET

OLE DB

.NET DP

COM+Services

.NET My Services

Web Controls

CLR

MSIL

Kapitel 8: Workshop .NET – 6Objektverwaltung höherer Ordnung (OHO) – SS 2002

Sprachunterstützung von .NET

“Sprachunabhängigkeit”• Source kann in ‘beliebiger’ Sprache sein,

sofern jene in MSIL übersetzt wird• C#, VB.NET, C++, Jscript, Java, Eiffel…• Aber nur C# und VB.NET spiegeln das

Objektmodel der CLR direkt wider…“Plattformunabhängigkeit”• CLR selbst ist standardisiert• Microsoft selbst bietet mit ‘Rotor’ eine Shared-Source

Implementierung der CLR für Windows NT und FreeBSD• Aus der Linux-Gemeinde kommt das ‘Mono’ Projekt• Problem: Das Klassenframework ist nicht komplett offen

C#

VB.NET

C++ JSCLR

MSIL

Kapitel 8: Workshop .NET – 7Objektverwaltung höherer Ordnung (OHO) – SS 2002

.NET Class Library

Umfangreiche sprachunabhängigeKlassenbibliothek• Data Access (ADO.NET)• XML, XSLT• Web Services (SOAP, UDDI, WSDL)• Crypto (RSA, DES/3DES, MD5, ...)• I/O (File, TCP, HTTP, ...)

Nicht komplett plattformunabhängig(although: Ximian‘s Mono [Opensource .NET Framework], Halcyon Software [.NET Framework in Java])

CLR

MSIL

C#

VB.NET

C+ + JS

API

Class Library

Kapitel 8: Workshop .NET – 8Objektverwaltung höherer Ordnung (OHO) – SS 2002

.NET Erweiterungen

ADO.NET• Zugriff auf Datenquellen (OLE DB, ODBC)

COM+ Interoperabilität• Zugriff auf COM+ Infrastruktur (Tx, Queues, etc.)

.NET Remoting• Vergleichbar mit Java RMI

ASP.NET• Programmiermodel für Einbindung in IIS

Web-Services• SOAP Kommunikation

CLR

MSIL

C#

VB.NET

C+ + JS

API

XML Web Services

ADO.NET

InteropASP.NET

.NETRem-oting

Kapitel 8: Workshop .NET – 9Objektverwaltung höherer Ordnung (OHO) – SS 2002

Szenario - Übersicht

Finance

UID

Zürich

Bern

Client

Account

UIDa

Account

UDDIFinance WebService

WebService_BaselWebService_Bern

SOAP

SOAP SOAP

Basel

Kapitel 8: Workshop .NET – 10Objektverwaltung höherer Ordnung (OHO) – SS 2002

Web-Services Infrastruktur

Kapitel 8: Workshop .NET – 11Objektverwaltung höherer Ordnung (OHO) – SS 2002

Web-Service DiscoveryLokalisierung von Dokumenten, die einen Web-Service beschreibenBei .NET typischerweise zwei Dokumente:1. WSDL-Beschreibung2. .disco Discovery-Datei

• XML Dokument, das auf andere Resourcen verweist (typischer-weise URLs), die gesuchten Web-Service näher beschreiben

• Erleichtert automatisierte Suche nach einem Web-Service.• Beispiel:

<?xml version="1.0" ?><disco:discovery xmlns:disco=http://schemas.xmlsoap.org/disco

xmlns:wsdl="http://schemas.xmlsoap.org/disco/wsdl"> <wsdl:contractRef ref="http://sapr4/oho/Finance.asmx?WSDL"/>

</disco:discovery>

Ein Web-Service muss keine Discovery anbieten(entweder gar nicht oder zumindest nicht selbst -> UDDI)ASP.NET ermöglicht sogar selbstbeschreibende Web Services

Kapitel 8: Workshop .NET – 12Objektverwaltung höherer Ordnung (OHO) – SS 2002

WSDL Beispiel (Account Web-Service)<?xml version="1.0" encoding="utf-8" ?><definitions xmlns:http="http://schemas.xmlsoap.org/wsdl/http/" … >

<types> … </types><message name="WithdrawSoapIn"> … </message><message name="WithdrawSoapOut"> … </message>

<portType name="WithdrawSoap"><operation name="Withdraw">

<input message="s0:WithdrawSoapIn"/><output message="s0:WithdrawSoapOut"/>

</operation>…

</portType>

<binding name="s0:AccountsBaselSoap"> … </binding>

<service name="AccountsBasel"><port name="AccountsBaselSoap" binding="s0:AccountsBaselSoap" ><soap:address location=“http://sapr4/WebService_Basel/Accounts.asmx"/>

</port></service>

</definitions>

http://sapr4:4711/roehm/WebService_Basel/Account.asmx?WSDL

Kapitel 8: Workshop .NET – 13Objektverwaltung höherer Ordnung (OHO) – SS 2002

Zugriff auf Web-Services

Eine Proxy-Klasse und das .NET Framework erledigendie Feinarbeit.Vorgehensweise:1. Lokalisieren des gewünschten Web-Service.2. Erzeugen einer Proxy-Klasse für diesen Web-Service

im Projekt mittels einer Web-Referenz.3. Einbinden der Proxy-Klasse im Client Code über deren

Namespace (using Direktive).4. Instanziierung der Proxy-Klasse im Client Code.5. Zugriff auf den Web-Service über die Proxy-Klasse.

Kapitel 8: Workshop .NET – 14Objektverwaltung höherer Ordnung (OHO) – SS 2002

1. Lokalisierung

Nachschlagen in einem Web-Services Directory• Suche nach einem .disco Wegweiser, der auf die gesuchte

WSDL Beschreibung verweist.Eine WSDL Datei entspricht einer IDL Beschreibung a la COM oder CORBASpeziell bei ASP.NET:• ASP.NET Web-Services sind selbstbeschreibend.• Parameter ‘?DISCO’ liefert Discovery-Dokument,

Parameter ‘?WSDL’ liefert WSDL Beschreibung

Kapitel 8: Workshop .NET – 15Objektverwaltung höherer Ordnung (OHO) – SS 2002

2. Proxy-Klassen

Proxy-Klassen repräsentieren die Funktionalität einesWeb-Services im Client• Konzept wie bei CORBA, COM+ und EJB• Orts- und Implementierungstransparenz

Grundlage der Proxy-Klasse ist WSDL Beschreibung Beispiel mit .NET:

wsdl.exe /language:CS /out:Finance.cs URL

Theoretisch Interoperabilität zwischen verschiedenen Herstellern von SOAP Client und SOAP ServerPraxis…

Kapitel 8: Workshop .NET – 16Objektverwaltung höherer Ordnung (OHO) – SS 2002

2b. Web References von Visual Studio

VisualStudio.NET kapselt Proxy-Klassen und deren Erzeugung/Verwaltung als sogenannte Web References• Basierend auf Discovery- und WSDL-Datei• Bindung zwischen Proxy und Service kann sein:

– StatischZum Kompilierzeitpunkt wird Client mit einer konkreten Instanz eines Web-Services gebunden

– Dynamisch Der Proxy wird erzeugt und kompiliert, die von ihm angesprochene Service-Instanz kann aber zur Laufzeit festgelegt werden, entweder per Konfigurationsdatei(web.config) oder im Programm per URL() Methode.

Kapitel 8: Workshop .NET – 17Objektverwaltung höherer Ordnung (OHO) – SS 2002

Proxy-Erzeugung für ASP.NET Web-ServicesC# Source

Client.cs

FinanceClient

C# CompilerC# Compiler

CLR.NET Framework

wsdl.exe /language:CS … Finance.asmx?WSDL

C# Proxy

Reference.cs

WSDL

Finance?WSDL

C# Source

Finance.asmx.cs

Finance Service

Kapitel 8: Workshop .NET – 18Objektverwaltung höherer Ordnung (OHO) – SS 2002

Auszug aus dem Account-Proxy

statische URL-Bindung

public class Account :System.Web.Services.Protocols.SoapHttpClientProtocol

{public Account() {

this.Url = "http://sapr4/…/WebService_Bern/Account.asmx";}…public System.Double Withdraw ( long lAccountNumber,

System.Double fAmount) {

object[] results = this.Invoke(“Withdraw", new object[] {lAccountNumber,fAmount});

return ((System.Double)(results[0]));} …

}

Kapitel 8: Workshop .NET – 19Objektverwaltung höherer Ordnung (OHO) – SS 2002

3. - 5. Einbindung und Verwendung des Proxyusing FinanceWebService.OhOBank;

public class FinanceClient{

…public Transfer ( long lFrom, long lTo, System.Double fAmount ) {

try {

Account account = new Account();account.Url = MapAccountToService(lFrom);account.Withdraw(lFrom, fAmount);…

}catch ( System.Exception ex ){ … }

}…}

dynamische URL-Bindung

Kapitel 8: Workshop .NET – 20Objektverwaltung höherer Ordnung (OHO) – SS 2002

ASP.NET Web-Service (Server)

1. HTTP requests arrive,with method name andparameters encoded inURL or separate XML.

5. ASP.NET converts resultsto XML and returns toclient via HTTP.

2. ASP.NET creates objectspecified in ASMX file.

Your NET objectMethod 1...Method N

Windows 2000 server machinewith .NET and IIS

3. ASP.NET calls specifiedmethod on object.

4. Objects returnsresult toASP.NET.

SOAP ServerSOAPClient

Kapitel 8: Workshop .NET – 21Objektverwaltung höherer Ordnung (OHO) – SS 2002

Code-Beispiel Account::Withdraw()public class Account : System.Web.Services.WebService{

. . . [WebMethod]public double Withdraw ( long lAccountNumber, double fAmount ){try{SqlConnection conn = new SqlConnection(…);SqlCommand comm = new SqlCommand(

"UPDATE account SET balance = balance - "+fAmount+ " WHERE account_number = " + lAccountNumber, conn);

comm.Connection.Open();return GetBalance(lAccountNumber);

}finally{

if ( conn != null ) conn.Close();}

}}

benutzt SQL Server .NET Data Provider

.NET Attribute, um automatischSOAP Interface generieren zu lassen

Kapitel 8: Workshop .NET – 22Objektverwaltung höherer Ordnung (OHO) – SS 2002

.NET WebMethodAttribute PropertiesDescription• Kurzbeschreibung zu einer Web-Service Methode.

EnableSession• Generiert einen Session-State für eine Service-Methode.

TransactionOption• Analog Transaktionsproperties von COM+• ABER: Web-Service kann nur Wurzel einer Tx. sein!

BufferResponse, CacheDuration, MessageName, …Beispiel:[WebMethod (Description=“Blafasel”, TransactionOption=Required)]public double Withdraw ( long lAccountNumber, double fAmount ){ … }

Kapitel 8: Workshop .NET – 23Objektverwaltung höherer Ordnung (OHO) – SS 2002

In der Übung

IIS auf SAPR4

Finance Zürich

WebService_Finance

SOAP SOAP

SOAP

SOAPUDDI

Exchange Rate

UID

Bern

Account

ADO.NET

WebService_Bern

Basel

UIDa

Account

ADO.NET

WebService_Basel

Client

Kapitel 8: Workshop .NET – 24Objektverwaltung höherer Ordnung (OHO) – SS 2002

Web-Service DirectoriesProblem: Wie findet man Web-Services (insbesondere von Drittanbietern)?Web-Services Directiories• Zentrale Verzeichnisse wo Anbeiter Informationen über ihre Web-Services veröffentlichen

können• Inhalt: UDDI Spezifikationen• Web-Service Directories können selbst ein Web-Service sein

UDDI (Universal Description, Discovery and Integration) Spezifikationen• standadisiert, wie Informationen über Web-Services publiziert und abgefragt werden können• The XML schemas associated with UDDI define four types of information that would enable a

developer to use a published XML Web service. These are: business information, service information, binding information, and information about specifications for services.

• Developers can use the UDDI Business Registry to locate discovery documents and service descriptions.

Beispiele:• Microsofts UDDI Business Registry (http://uddi.microsoft.com/)• IBM (http://www.ibm.com/servuices/uddi/)

Kapitel 8: Workshop .NET – 25Objektverwaltung höherer Ordnung (OHO) – SS 2002

WSDL Beispiel (Finance Web-Service)<?xml version="1.0" encoding="utf-8" ?><definitions xmlns:http="http://schemas.xmlsoap.org/wsdl/http/" … >

<types> … </types><message name="TransferSoapIn"> … </message><message name="TransferSoapOut"> … </message>

<portType name="FinanceSoap"><operation name="Transfer">

<input message="s0:TransferSoapIn"/><output message="s0:TransferSoapOut"/>

</operation></portType>

<binding name="s0:FinanceSoap"> … </binding>

<service name="Finance"><port name="FinanceSoap" binding="s0:FinanceSoap" ><soap:address location=“http://sapr4/FinanceWebService/Finance.asmx"/>

</port></service>

</definitions>

http://sapr4:4711/roehm/FinanceWebService/Finance.asmx?WSDL