Mircosoft DotNot. Verteilte Anwendungen the microsoft (cc) way. Verteilte Anwendungen (04/05) T.S. (JD)



Ähnliche Dokumente
Ein einfacher Server. .NET Remoting. Klassentypen

Verteilte Komponentensysteme

E.1 Objekt-Serialisierung

Microsoft.NET und SunONE

Microsoft.NET. InfoPoint 8. Juni 2005 Stefan Bühler

Enterprise Applikation Integration und Service-orientierte Architekturen. 09 Simple Object Access Protocol (SOAP)

Themen. Web Service - Clients. Kommunikation zw. Web Services

CORBA. Systemprogrammierung WS

Erstellen sicherer ASP.NET- Anwendungen

Die Programmiersprache Java. Dr. Wolfgang Süß Thorsten Schlachter

ObjectBridge Java Edition

SRH Hochschule Heidelberg

C# im Vergleich zu Java

Übung 1 mit C# 6.0 MATTHIAS RONCORONI

8.1.6.NET Remoting. C# ( Csharp, Cis ) : Referenzsprache für.net,

Web Services stellen eine Integrationsarchitektur dar, die die Kommunikation zwischen verschiedenen Anwendungen

Java: Vererbung. Teil 3: super()

Objektbasierte Entwicklung

Objektorientierte Programmierung

8.4 Microsoft.NET. .NET Framework = 1 CLR Common Language Runtime ist objektorientierte virtuelle Maschine für Ausführung von managed cod

Einführung in Java. PING e.v. Weiterbildung Andreas Rossbacher 24. März 2005

.NET als alternative Middleware-Technologie. .NET als alternative

Java Einführung Umsetzung von Beziehungen zwischen Klassen. Kapitel 7

Übungen zu Softwaretechnik

Java Kurs für Anfänger Einheit 5 Methoden

Web Services. XML, WSDL, SOAP und UDDI Einblicke und Ausblicke J.M.Joller 1

Auszug aus JAX-WS Folien

im Rahmen des Seminars - Programmiersprachen Markus Nestvogel

Wiederholung: Beginn

Java RMI Remote Method Invocation

WebService in Java SE und EE

VS Praktikum 03 Konzept

Remote Method Invocation

8a. Exkurs.NET. 8a.1.NET Architektur

Session Beans & Servlet Integration. Ralf Gitzel ralf_gitzel@hotmail.de

3-schichtige Informationssystem-Architektur

360.NET. Jan Schenk Developer Evangelist Web/Live Microsoft Deutschland

Algorithmen und Datenstrukturen

SEP 114. Design by Contract

THEMA: "SAS STORED PROCESSES - SCHNELL GEZAUBERT" HELENE SCHMITZ

CORBA-Konzept. Ziele. Common Object Request Broker Architecture CORBA. Plattformunabhängige Kommunikation Transparente Verteilung von Objekten

HTBVIEWER INBETRIEBNAHME

Kapitel 6. Vererbung

Das Typsystem von Scala. L. Piepmeyer: Funktionale Programmierung - Das Typsystem von Scala

SAP NetWeaver Gateway. 2013

Quo vadis, OPC? - von Data Access bis Unified Architecture - Dipl.-Ing. (BA) Erik Hennig Dresden,

Enterprise Application Integration Erfahrungen aus der Praxis

Der lokale und verteilte Fall

Mobile und Verteilte Datenbanken

Szenario 3: Service mit erweiterter Schnittstelle

Javadoc. Programmiermethodik. Eva Zangerle Universität Innsbruck

Begleitendes Praktikum zur Vorlesung Künstliche Intelligenz

.NET Framework. 3. Das.NET Framework

Kapitel 6. Vererbung

.NET-Networking 2 Windows Communication Foundation

Zustandsgebundene Webservices

Factory Method (Virtual Constructor)

IT- Wir machen das! Leistungskatalog. M3B Service GmbH Alter Sportplatz Lake Schmallenberg

Arrays von Objekten. Annabelle Klarl. Einführung in die Informatik Programmierung und Softwareentwicklung

Grundlagen von Python

OP-LOG

How-to: Webserver NAT. Securepoint Security System Version 2007nx

Java Virtual Machine (JVM) Bytecode

Kapitel 6. Vererbung

Applet Firewall und Freigabe der Objekte

Internet Explorer Version 6

Client-Server-Beziehungen

Verteilte Systeme: Übung 4

Typsystem Plattform- und Sprachenunabhängigkeit in.net

Java Einführung Collections

arlanis Software AG SOA Architektonische und technische Grundlagen Andreas Holubek

Webservices. 1 Einführung 2 Verwendete Standards 3 Web Services mit Java 4 Zusammenfassung. Hauptseminar Internet Dienste

OERA OpenEdge Reference Architecture. Mike Fechner PUG Infotag 19. Mai 05 Frankfurt

Vorlesung AFCW, Microsoft.NET Wintersemester 2002/03. Völlig neue Systemstruktur als Antwort auf Java

Starthilfe für C# Inhaltsverzeichnis. Medien- und Kommunikationsinformatik (B.Sc.) Alexander Paharukov. Informatik 3 Praktikum

Distributed Computing Group

Workflow, Business Process Management, 4.Teil

IPETRONIK TESTdrive SDK V02.00

Installationsanleitung dateiagent Pro

Einführung in die Java- Programmierung

Installation Wawi SQL in Verbindung mit Microsoft SQL Server 2008 R2 Express with management Tools

Arrays von Objekten. Annabelle Klarl. Einführung in die Informatik Programmierung und Softwareentwicklung

Willkommen zur Vorlesung. Objektorientierte Programmierung Vertiefung - Java

GEZIELT MEHR SICHERHEIT MIT 4I ACCESS SERVER & 4I CONNECT CLIENT

ANYWHERE Zugriff von externen Arbeitsplätzen

Installation der SAS Foundation Software auf Windows

Visual Basic Express erstes Projekt anlegen

Das erste Programm soll einen Text zum Bildschirm schicken. Es kann mit jedem beliebigen Texteditor erstellt werden.

Windows Presentation Foundation (WPF) -Grundlagen -Steuerelemente. Dr. Beatrice Amrhein

Testen mit JUnit. Motivation

SCHRITT FÜR SCHRITT ZU IHRER VERSCHLÜSSELTEN

Step by Step Webserver unter Windows Server von Christian Bartl

Vorkurs C++ Programmierung

ITG RKSVNet - Webservice Signierung von Belegen via Internet

Ein Vergleich zwischen SCA,JBI und WCF. Marcello Volpi

Installation SelectLine SQL in Verbindung mit Microsoft SQL Server 2012 Express with management tools

Man liest sich: POP3/IMAP

CLR CIL MCS ECMA-335. Linux.Ne t Albrecht Liebscher, Erlanger Linux Tage

Abschlusspräsentation Projekt Loan Broker mit BizTalk 2010

Transkript:

Mircosoft DotNot Verteilte Anwendungen the microsoft (cc) way 1

Die DotNet-Plattform Microsofts zukünftige Plattform für die Erstellung (verteilter) Anwendungen Zusammenfassung bestehender und zukünftiger Produkte in eine Architektur Sehr starke Anleihen bei Java/J2EE Ziel: Software Dienstleistung, Erstellung von Webservices 1996 Internet 1. Gen IE/IIS 1997 Internet 2.Gen. 2000 Internet 3. Gen. WinDNA 1992 Client/Server.NET Win32 1. Generation 1994-1996 Statische Seiten E-Mail, Basisinformationen IE/IIS 2. Generation 1996-2000 Dynamische Seiten Personalisierung, E-Commerce Windows DNA 3. Generation 2000- Nutzung von Diensten Web Services Microsoft.NET Die Geschichte der Computernetzwerke nach Microsoft [SIC!] 2

Bestandteile der DotNet-Plattform DotNet-Framework und Tools Klassenbibliothek CLR ASP.Net Entwicklungstools Building Block Services (Foundation Services) Gesamtheit der DotNet-Webservices (Passport etc.) Enterprise Server Infrastruktur gesammelte herkömmliche M$-Produkte DotNet Device Software (Mobile Devices) Endgeräte-Anbindung insbesondere Mobile Endgeräte WinCE 3

DotNet-Framework VB C++ C# JScript J# Common Language Specification ASP.NET Web Forms Web Services Mobile Internet Toolkit ADO.NET and XML XML Windows Forms Klassenbibliothek ( Base Class Library ) Visual Studio.NET Common Language Runtime Betriebssystem 4

DotNet-Framework Ziele Mehrsprachigkeit C#, C++, VB.NET Offenlegung von DotNet (CLR und CTS) ermöglicht Anbieten weiterer Programmiersprachen durch Dritte * Einfache Entwicklung Common Type System Für alle einheitliches Objektmodell Gemeinsame Wurzel: Object Vererbung zwischen unterschiedlichen Sprachen Verteiltes Garbage Collection Einfache Installation Selbsbeschreibende Komponenten Stabile Ausführung * Offenlegung ermöglicht theoretisch weiterhin Plattformunabhängigkeit, allerdings ist Base Class Library nicht frei und muss dementsprechend von go-mono, Portable.NET etc. reengineert werden. 5

Sprachintegration Unterschiedliche Sprachen unterschiedliche Typsysteme DotNet: einheitliches Typsystem (CTS), um Integrationsschicht (XDR) zu vermeiden Einheitliche Aufrufkonventionen Alle zu verwendenden Sprachen werden an DotNet angepasst Compiler erzeugen Bytecode (hier: MS Intermediate Language) ermöglicht Vererbung von Klassen anderer Sprachen sehr gut dekompilierbar! (daher neuer Markt: Obfuscation Engines ) Ausführung der Zwischensprache in Common Language Runtime (wie JRE) managed Code Nutzung der Dienste der Laufzeitumgebung JIT-Kompilierung nur der jeweils benötigten Methoden! ( schnell!) Nur noch durch VisualC++ Maschinen-Code erstellbar unmanaged Code (Verwendung von RT-Diensten nicht möglich) 6

DotNet Sprachintegration Quellcode VB C# C++ Compiler Compiler Compiler MSIL Assembly Assembly Assembly CLR JIT Compiler Maschinencode Managed Code Managed Code CLR Managed Code Unmanaged Code CLR Dienste Betriebssystem 7

Methodenaufruf (JIT) Klasse A Methode 1 (ASM) Methode 2 (IL) Methode 3 (IL) Methode 4 (IL) (1) Methodenaufruf Klasse B Methode 1 (ASM) Methode 2 (IL) JIT Compiler (2) IL-Code durch nativen Code ersetzen Nach Zimmermann /.NET/ 8

Common Type System Einheitliches Typsystem für alle Sprachen Einheitliche Repräsentation, Einheitliche Größe eines Datentyps Keine Konvertierung notwendig Keine externe Beschreibung Zwei unterschiedliche Typklassen (analog Java): a) Werttypen (value types) enthalten einen eigenen Wert Primitive Datentypen (analog: int, char etc.) Plus (zu Java): Stack-Typen (enum, struct) b) Referenztypen (reference types) Eigentliche Objekte (enthalten Referenz auf Objekt) Können Wert null annehmen Komplexe Datentypen (analog: Integer, String etc.) 9

Objektmodell Object Typen im Namensraum System Value Type Enum Type String Array Exception Delegate Boolean Byte Char Currency DateTime Decimal Double Guid Int16 Int32 Int64 SByte Single TimeSpan TypedRef. UInt16 UInt32 UInt64 Void reference types 10

Verteilte Anwendungen mit DotNet Remoting RPC/RMI-Mechanismus bei DotNet wird als Remoting * bezeichnet Remoting-Framework stellt übliche VA-Dienste bereit: Activation Lifecycle Services ( lifetime support * ) Zugriff auf Sockets ( channels * ) Verteiltes Garbage Collection Etc. Kommunikationsarten: Zwischen DotNet-Komponenten, ohne SOAP: Binäres Protokoll über TCP-Socket DotNet-Komponenten mit bel. anderen: SOAP über HTTP-Verbindung Verbindungen zwischen Komponenten heißen bei DotNet Channel * Stubs/Skeletons werden aufgeteilt in Proxy-Objekte und an Channel gebundene Formatter * * Bei diesen Begriffen handelt es sich um M$- Wortschöpfungen deren Gebrauch sicherlich bald Lizenrechtliche folgen haben wird. 11

3 Arten entfernter Objekte Serveraktivierte Objekte/Well known-objekte (.EXEs) Single Call-Objekte Ein Objekt pro Anfrage atomare Anfragen aka stateless session beans Singleton Objekte Mit Conversational State dauerhaft oder Lease based Lifetime ( Lebensdauermanager) Sind einzigartig (singleton) existieren nur einmal pro VM Sinnvoll für komplexe Objekte, deren Instanziierung teuer ist Ähnlich entity beans (ohne Persistenz, keine Lastverteilung) Beide: Anmeldung im BS bei Serverstart durch Server Clientaktivierte Objekte (.DLLs) Aktivierung bei vorliegendem Request Generierung von clientseitigen Proxies aus ObjRef Lease based Lifetime 12

Entfernte Zugriffe Austausch von Daten innerhalb einer Application Domain : Alle Objekte (reference types) Passed by reference Alle einfachen Datentypen (value types) passed by value Austausch über Grenzen der Application Domain hinweg immer by value Entfernt zugreifbare Objekte müssen das [serializable] Attribut tragen oder das Interface ISerializable implementieren Lokale, nicht serialisierbare Objekte sind außerhalb der Application Domain nicht zugreifbar und daher nonremotable * * Siehe vorhergehende Folie 13

Remote Objects Abgeleitet von MarshalByRefObject Übertragung eines Proxy-Objekts zum Client bei Request Alle Aufrufe finden am Proxy-Objekt statt und sehen lokal aus Proxy-Objekt marshallt / serialisiert Parameter und kommuniziert mit Peer Abgeleitet von MarshalByValue Übertragung einer vollständigen Kopie des Objektes und Nutzung auf Clientseite 14

Proxy Objekte Transparent Proxy vs. Real Proxy 1. Bei Aktivierung eines Remote Objects legt CLR auf Clientseite zunächst einen Transparent Proxy an, dessen Methoden Client aufruft 2. Bei Aufruf einer Methode des Remote Objekt am Transparent Proxy wird durch CLR überprüft, ob Remote Objekt lokal vorliegt oder entfernt ist a) Liegt Remote Objekt lokal vor werden simple lokale Methodenrufe durchgeführt d) Ist Remote Objekt entfernt werden 5) Parameter in ObjRef gemarshallt, 6) In IMessage-Objekt verpackt, 7) Ein RealProxy generiert, 8) An diesen das IMessage-Objekt übergeben und von diesem die Kommunikation übernommen Beispiel: Die Bankanwendung 15

Transparent und Real Proxy Client Server Server Transparent Proxy lokal vorhanden? Transparent Proxy IMessage Real Proxy Real Proxy 16

Channel Channel transportieren Messages Setzen auf verschiedenen Schichten auf Benötigen Formatter fürs Kodieren der Nachrichten unterschiedliche Arten: HTTP-Channel Transportieren SOAP-Nachrichten für Kommunikation im Internet gedacht (SOAP, Port 80, Firewalls! ) Nur Simplex oder Request-Response Paare, keine permanente Verbindung TCP-Channel entsprechen permanenter Socket-Verbindung nur zwischen DotNet-Komponenten möglich schnelle Kommunikation für LAN-Bereich gedacht 17

Channel-Kommunikation Client Server Windows/Unix/Linux/ Großrechner mit WSDL.NET-Anwendungen HTTP SOAP Firewall HTTP SOAP Remoting- Objekt Client.NET-Anwendungen TCP Binär Server Remoting- Objekt 18

COM-Integration Nutzung von COM-Komponenten durch.net-anwendungen über Runtime Callable Wrapper (Wrapper für die COM-Komponente) Nutzung von.net-komponenten durch COM-Anwendungen über COM Callable Wrapper (Wrapper für die DotNet-Komponente) Client Server Client Server.NET- Client RCW DCOM COM- Objekt.NET- Remoteobjekt COM- Client DCOM CCW 19

Kommunikationsszenarien Client Server Nutzlast Protokoll.NET-Komponente.NET-Komponente SOAP/XML HTTP.NET-Komponente.NET-Komponente Binär (nur lokal!) TCP Verwaltet/nicht verwaltet.net-webdienst SOAP/XML HTTP.NET-Komponente Nicht verwaltete herkömmliche COM- Komponente NDR (Network Data Representation, Netzwerkdatendarstellung) über RCW DCOM Nicht verwaltete herkömmliche COM-Komponente.NET-Komponente NDR über CCW DCOM 20

Beispiel: Die Bankanwendung Remote Object Bank Schlichte Implementierung einer veränderlichen Klassenvariablen Hat Methoden: einzahlen(double betrag), abheben(double betrag) und get_kontostand() Hostinganwendung (Server) Binden des Remote Objects an CLR Bereitstellen der Channels Aktivierung des Remote Objects als Singleton Client Einfacher Zugriff auf Remote Object Keine Schnittstellendefinition (CTS...) 21

Das Remote Object: Die Bank using System; using System.Runtime.Remoting; using System.Runtime.Remoting.Channels; using System.Runtime.Remoting.Channels.Tcp; namespace BankBeispiel{ public class BankServer : MarshalByRefObject //von MarshalByRefObject ableiten { double kontostand; public BankServer(){ kontostand = 0.0; } public bool einzahlen (double betrag){ [...] } public bool abheben (double betrag){ [...] } public double get_kontostand(){ [...] } } } 22

Server using System; using System.Runtime.Remoting; using System.Runtime.Remoting.Channels; using System.Runtime.Remoting.Channels.Tcp; namespace BankBeispiel { public class Server { public static int Main(string [] args) { TcpChannel chan = new TcpChannel(8085); // Channel-Objekt erstellen und registrieren ChannelServices.RegisterChannel(chan); // Objekt registrieren (Port binden) } } } RemotingConfiguration.RegisterWellKnownServiceType(Type.GetType( BankBeispiel.BankServer,bank"), "Bank", WellKnownObjectMode.Singleton); System.Console.WriteLine("<ENTER> zum Beenden..."); System.Console.ReadLine(); return 0; 23

Client using System; using System.Runtime.Remoting; using System.Runtime.Remoting.Channels; using System.Runtime.Remoting.Channels.Tcp; namespace BankBeispiel{ public class Client{ public static int Main(string [] args){ if (args.length == 1){ TcpChannel chan = new TcpChannel(); // Channel-Objekt anlegen ChannelServices.RegisterChannel(chan); // Channel registrieren BankServer bank = (BankServer)Activator.GetObject(typeof(BankBeispiel. BankServer), "tcp://" + args[0] + ":8085/Bank"); // Remoteobjekt referenzieren } } } bank.einzahlen (Convert.ToDouble(Console.ReadLine())); bank.abheben (Convert.ToDouble(Console.ReadLine())); Console.WriteLine ("Aktueller Kontostand: " + bank.get_kontostand()); 24