Kap 3.4 - 1OHO-Workshop: MTS - COMs OTM T. Grabs Kap. 3.4 Microsoft Transaction Server als Beispiel eines OTM Was ist COM/DCOM? Microsoft Transaction Server:

Slides:



Advertisements
Ähnliche Präsentationen
Dynamische WEB-Applikationen
Advertisements

Datenbankzugriff über ISAPI-Webservererweiterungen
Kapitel 9: Graphdurchlauf
Kurt Rosenberg. C# für.NET oder.NET für C# is(C# == C++ && Java)? true : false ; reines C# Ausblick Überblick.
COM-Programmierung mit Visual Basic 6
COM-Schnittstellen optimal einsetzen
Windows Vista für Entwickler
Neue Mobilität Frank Prengel Developer Evangelist Developer Platform & Strategy Group Microsoft Deutschland GmbH
DI Christian Donner cd (at) donners.com
1. 2 Microsoft.NET Überblick Dirk Primbs Technologieberater Developer Platform & Strategy Group Microsoft Deutschland GmbH.
Fakultät für informatik informatik 12 technische universität dortmund Universität Dortmund Middleware Peter Marwedel TU Dortmund, Informatik 12 Germany.
3 Prozessverwaltung  sieht einen Prozess als Objekt der Verwaltung,
Verteilte Software - Java - Prozedurale Programmierung 1
Prof. Dr.-Ing. habil. B. Steinbach - Informatik / Softwaretechnologie und Programmierungstechnik - Institut für Informatik Verteilte Software - Java -
JDBC & ODMG Motivation - Beispielanwendung JDBC - DriverManager - Connection - Statement - ResultSet Anwendung ODMG - Objektmodell /ODL - OQL - Java-Binding.
Java: Dynamische Datentypen
ATHOS Benutzertreffen 2007
1 Named Pipes alias FIFO Haben einen Eintrag im Dateisystem und sind somit durch Zugriffsrechte identifizierbar Ermöglichen die Kommunikation zwischen.
Dynamische Webseiten Java servlets.
Objektorientierte Programmierung JDK-Klassenbibliothek
JAVA RMI.
COM (Component Object Model) / DCOM (Distributed COM)
Introducing the .NET Framework
Seminar Web-Engineering Nina Aschenbrenner / Ruben Jubeh 1 FG Software Engineering Software Engineering Seminar Web Engineering Seminar des Fachgebiet.
Projektplan: Fachgebiet Software Engineering Übersicht © Albert Zündorf, Kassel University.
Overwiew COM.
Proxy Pattern Vorlesung Design Patterns Sieglinde Heinrich
F açade P attern By Nicolas Lanquetin. Façade Pattern Structural Pattern Bietet ein gemeinsames Interface, anstatt vieler Interfaces eines Subsystems.
Verteilte Transaktionen mit EJBs und JDBC 2.0
Uwe Habermann WPF Avalon Formulare aus VFP verwenden Venelina Jordanova
WebCast: Managed Smart Tags mit VSTO Jens Häupel.NET Technologieberater Microsoft Deutschland GmbH
Dr. Welf Löwe und Markus Noga1 I.2.3. DCOM Distributed Component Object Model.
Was umfaßt die CORBA Core Spezifikation? Welche zusätzlichen Komponenten muß ein ORB Produkt beinhalten? Core: CORBA Objekt Modell CORBA Architektur OMG.
Marcel Gnoth – Einer für alle – alle für einen! E3 Verteilte Transaktionen mit.NET-Komponenten.
Service components and distribution with OSGi Seminar: Multimedia- und Internetsysteme Paul Hübner | Bildquellen : [1]
| DC-IAP/SVC3 | © Bosch Rexroth Pneumatics GmbH This document, as well as the data, specifications and other information set forth in.
BAS5SE | Fachhochschule Hagenberg | Daniel Khan | S SPR5 MVC Plugin Development SPR6P.
Projekt Alcatraz Java RMI / Spread - Gruppe A4.
Entity Mapping Persistente Domänenmodelle mit JPA 2.0 und Bean Validation.
Your name Bedeutung von Internet- Technologien Gruppe 1 Andreas Feuerstein Philipp Hochratner Christian Weinzinger.
Jan Hentschel Microsoft Expert Student Partner Windows Azure Windows Azure Windows Azure Mobile Services.
Frank Fischer + Bernhard Frank Microsoft Deutschland GmbH.
3/28/2017 8:11 PM Visual Studio Tools für Office { Rapid Application Development für Office } Jens Häupel Platform Strategy Manager Microsoft Deutschland.
MVVM in Windows 8 und Windows Phone 8
PresenterCompanyContact Windows Azure ASP.NET Web-Anwendungen schnell und zuverlässig bereitstellen.
Einführung in die Informatik für Naturwissenschaftler und Ingenieure (alias Einführung in die Programmierung) (Vorlesung) Prof. Dr. Günter Rudolph Fakultät.
Einführung in die Informatik für Naturwissenschaftler und Ingenieure (alias Einführung in die Programmierung) (Vorlesung) Prof. Dr. Günter Rudolph Fachbereich.
Parallel Programming Thread Synchronization. Heute 1. Lösung zu Assignment 2 2. Erstellen und Starten von Threads in Java 3. Das synchronized Schlüsselwort.
Kap 4-1OHO Kap. 4.2 Das Orbix CORBA-System Kurzer überblick zu der CORBA-Implementierung Orbix •Unser Fahrplan: •IDL Verwendungsbeispiel •Zoom-In: CORBA.
Abteilung für Telekooperation Übung Softwareentwicklung 1 für Wirtschaftsinformatik Dr. Wieland Schwinger
XML IV: Cocoon 2.
Real Time Operating System
Univ.-Lektor Dipl.-Ing. Dr. Markus Schranz staatlich befugter und beeideter Ingenieurkonsulent für Informatik Web Application Engineering & Content Management.
SharePoint FIS HandsOn – out of the Box.
Was dir Trivialbeispiele in Async and Await nicht sagen! Marcus Kimpenhaus und Martin Möllenbeck.
Jan-Cornelius Molnar Student Partner.
Office Business Anwendungen mit SharePoint Fabian Moritz | MVP Office SharePoint Server.
Web Services in.NET und die.NET My Services 14. November Web Services in.NET und die.NET My Services Mario Ehrlicher Senior Consultant Xuccess
Prof. Dr.-Ing. Franz-Josef Behr
Common Language Runtime Seminar Softwareentwicklung Wintersemester 2003 Gertraud Orthofer
MTS Microsoft Transaction Server Martin Basziszta
Service components and distribution with OSGi Seminar: Multimedia- und Internetsysteme Paul Hübner |
Transaktionale Systeme Projektteil B Verteilte Transaktionen, Workflow- und Transaktions-Manager.
Launch ON Global.vi System ID object name classname Services to suscribe Observer Control Ref vi-path Service name Step 1 : Objects register to the Global.vi´s,
SQL Server 2005 CLR Integration Sebastian Weber Microsoft Deutschland GmbH
Alois Schütte Advanced System Programming 2 Interprozeßkommunikation  2.1 JVM Ablaufumgebung  2.2 Java Native Interface (JNI)  Verwendung von.
Schutzvermerk nach DIN 34 beachten Was ist DCOM ?.
9.3 COM und DCOM (Microsoft ) COM – Component Object Model
Technische Universität München, Informatik XI Angewandte Informatik / Kooperative Systeme Verteilte Anwendungen: Einflußreiche Systeme Dr. Wolfgang Wörndl.
Azure Mobile Services Deep dive into node.js scripting
 Präsentation transkript:

Kap OHO-Workshop: MTS - COMs OTM T. Grabs Kap. 3.4 Microsoft Transaction Server als Beispiel eines OTM Was ist COM/DCOM? Microsoft Transaction Server: COMs OTM Entwickeln von MTS-Applikationen Vergleich TUXEDO vs. MTS Was ist COM+? Thanks to Mary Kirtland that contributed some of the slides

Kap OHO-Workshop: MTS - COMs OTM T. Grabs Was ist COM/DCOM ? COM - Component Object Model -- DCOM - Distributed COM Komponente: Binärcode, der eine wohldefinierte Funktionalität erbringt COM: Binärer Standard für solche Komponenten unabhängig von einer Programmiersprache unabhängig vom gewählten Compiler Schnittstellenvererbung i. Ggs. zu Quellcode-Vererbung konkret: vptr/vtbl-Layout abstrakter C++-Klassen als Schnittstelle der Komponenten festgelegt Roadmap der COM-Konzepte Interfaces Klassen Objekte Laufzeitumgebung Account IAccount vptrDebit() Credit()

Kap OHO-Workshop: MTS - COMs OTM T. Grabs Interfaces COM ist schnittstellen-orientiert Schnittstellenvererbung vs. Quellcodevererbung Schnittstellendefinitions-Sprache Microsoft IDL IDL: Interface Definition Language MS-IDL basiert auf OSF DCE RPC IDL also: RPC-Formulierung mit automatischer Netzwerktransparenz Automatische Generierung von Proxy- und Stub-Code Beispiel einer IDL-Deklaration interface IAccount : IDispatch { [id(1), helpstring("method Debit")] HRESULT Debit([in] int account, [in] double amount); [id(2), helpstring("method Credit")] HRESULT Credit([in] int account, [in] double amount); }; Remote Proxy Account IAccount

Kap OHO-Workshop: MTS - COMs OTM T. Grabs IDL-Compiler Account.idl Typen und Schnittstellen MIDL.EXE Account.h C/C++-Typ- Definitionen Account_I.c GUID- Definitionen Account.tbl Typ-Bib. für VB und Java Account_P.c Schnittstellen- Definitionen dlldata.c Schnittstellen- Marshaler

Kap OHO-Workshop: MTS - COMs OTM T. Grabs IUnknown-Interface COM-Standard-Interface: Jedes COM-Objekt muss es unterstützen, sonst ist es kein COM- Objekt Schnittstellen-Navigation ermöglichen Referenzzählung auf Schnittstellen IDL für IUnknown interface IUnknown { HRESULT QueryInterface( [in] REFIID riid, // the interface asked for [out, iid_is(riid)] void **ppvObject); ULONG AddRef(); ULONG Release(); }

Kap OHO-Workshop: MTS - COMs OTM T. Grabs Interface-Anfrage Anfrage an ein gegebenes Objekt, ob es ein Interface Account unterstützt void GetAndUseAccount(IUnknown * pObj) { IAccount * pAccount; HRESULT hr hr = pObj->QueryInterface(IID_IAccount, (void**)&pAccount); if (hr == S_OK) pAccount->Debit(1000, (double)23.75); pAccount->Release(); } Unter Verwendung von SmartPointers CComPtr account_from; account_from.CoCreateInstance(OLESTR("Transfer.Account")); hr = account_from->Debit(1000, (double)23.75);

Kap OHO-Workshop: MTS - COMs OTM T. Grabs Laufzeitumgebung Prozessinterner Server (in-process server) Komponente ist in DLL implementiert DLL wird in den Client-Adressraum geladen Prozessexterner Server (out-of-process server) Komponente ist in EXE implementiert Komponente ist in DLL implementiert DLL wird in Surrogat geladen, bspw. MTX.EXE Prozessexterne Server unterstützen auch remote Zugriffe

Kap OHO-Workshop: MTS - COMs OTM T. Grabs Laufzeitumgebung Wir verwenden wieder unser Transfer(Debit-Credit)-Beispiel Server AServer B Client.exe Remote Proxy Account Service Control Manager Accounts.exe OLE32.dll Local Proxy Account Extern Object Account IAccount Accounts.dll IAccount Local Object Account IAccount RPC Accounts.exe OLE32.dll Local Proxy Account IAccount RPC Service Control Manager RPC

Kap OHO-Workshop: MTS - COMs OTM T. Grabs In-Process Creation Client Process Client COM Runtime 1 SCM 2 Registry {CLSID} Server.DLL Component 3 5 object 4

Kap OHO-Workshop: MTS - COMs OTM T. Grabs Remote Creation Surrogate Process Component 5 ISurrogate Client COM Runtime 1 SCM 2 Registry {AppID}RemoteServerName 3 4 SCM 7 {CLSID} Server.DLL Registry {AppID}DllSurrogate object 6

Kap OHO-Workshop: MTS - COMs OTM T. Grabs Methoden-Aufruf Client Process COM ClientApp In-ProcessServer In-ProcessObject RPC Local Server Process LocalObjectProxy Local Server LocalObject COM Stub Remote Server Machine RemoteObjectProxy RPC Remote Server Process Remote Server RemoteObject COM Stub

Kap OHO-Workshop: MTS - COMs OTM T. Grabs COM mit MTS Man kann COM Komponenten transaktionelle Eigenschaften zuordnen, wenn man sie über MTS administriert (Fast) jede COM-Komponente eigent sich für MTS Was bietet MTS zusätzlich zu COM: Transaktionsprimitive Objektkontexte (mehr dazu unten) Anbindung an Resource-Manager via XA 2PC-Koordination für verteilte Transaktionen Objektkontext speichert Transaktionszustand eines Objektes Subtransaktionen erben den Kontext der Vatertransaktion Objekte innerhalb einer Transaktion entscheiden über Commit: SetComplete()-Methode des Kontext-Interfaces Abort: SetAbort()-Methode des Kontext-Interfaces

Kap OHO-Workshop: MTS - COMs OTM T. Grabs Objekterzeugung mit MTS MTS Surrogate 3 MTS Executive 4 Client 7 Component 5 Contextwrapper Object context 8 9 COM Runtime 1 SCM 2 Registry {CLSID} MTX {package} Class factory wrapper 6Classobject

Kap OHO-Workshop: MTS - COMs OTM T. Grabs Objekt-Kontexte MTS Surrogate MTS Executive Component Classobject Contextwrapper Class factory wrapper Object context MTS Catalog Creator ID Activity Transaction Security Properties

Kap OHO-Workshop: MTS - COMs OTM T. Grabs Sub-Objekt bzw. Subtransaktion MTS Surrogate Process MTS Executive Sub Component Classobject Class factory wrapper Component Object Object Context 1 MTS Catalog 2 Contextwrapper Object context 3 4

Kap OHO-Workshop: MTS - COMs OTM T. Grabs Methoden-Aufruf MTS Surrogate Process MTS Executive Component Classobject Contextwrapper Object context Client1 2 Object 3

Kap OHO-Workshop: MTS - COMs OTM T. Grabs Code-Beispiel Transfer() try { HRESULT hr; CComPtr account_credit; m_spObjectContext->CreateInstance(CLSID_Account, IID_IAccount, (void**)&account_credit); hr = account_credit->Credit(account_to, amount); if (hr != S_OK) throw hr; // … do the same for debit // commit m_spObjectContext->SetComplete(); return S_OK; } catch(HRESULT hr){ // abort m_spObjectContext->SetAbort(); return S_FALSE; }

Kap OHO-Workshop: MTS - COMs OTM T. Grabs Demo

Kap OHO-Workshop: MTS - COMs OTM T. Grabs TUXEDO zum Vergleich // add the transfer info to the send buffers // Withdraw buffer must have account number and amount if ((ret = Fchg(combuf1, FROMACC_ID, -1, (char*)&fromacc_id, 0)) < 0) fprintf(stderr, "Client couldn't add field to communication buffer! error: %d\n", Ferror); if ((ret = Fchg(combuf1, AMOUNT, -1, (char*)&amount, 0)) < 0) fprintf(stderr, "Client couldn't add field to communication buffer! error: %d\n", Ferror); // Deposit buffer must have account number and amount if ((ret = Fchg(combuf2, TOACC_ID, -1, (char*)&toacc_id, 0)) < 0) fprintf(stderr, "Client couldn't add field to communication buffer! error: %d\n", Ferror); if ((ret = Fchg(combuf2, AMOUNT, -1, (char*)&amount, 0)) < 0) fprintf(stderr, "Client couldn't add field to communication buffer! error: %d\n", Ferror);

Kap OHO-Workshop: MTS - COMs OTM T. Grabs TUXEDO zum Vergleich // start global transaction if (tpbegin(20, 0) == -1) { userlog("Can't start TX\n"); userlog("Tperrno = %s\n", strerror(tperrno)); } /* Request the service WITHDRAW, waiting for a reply */ ret = tpcall("WITHDRAW", (char*)combuf1, 0, (char**)&recbuf1, &reclen, (long)0); if(ret == -1) { userlog("Can't send request to service WITHDRAW\n"); userlog("Tperrno = %s\n", strerror(tperrno)); tpabort(0); tpfree((char*)combuf1); tpfree((char*)recbuf1); tpfree((char*)combuf2); tpfree((char*)recbuf2); tpreturn(TPFAIL, 0L, (char*)NULL, 0L, 0L); }

Kap OHO-Workshop: MTS - COMs OTM T. Grabs TUXEDO zum Vergleich ret = tpcall("DEPOSIT", (char*)combuf2, 0, (char**)&recbuf2, &reclen, (long)0); if(ret == -1) { userlog("Can't send request to service DEPOSIT\n"); userlog("Tperrno = %s\n", strerror(tperrno)); tpabort(0); tpfree((char*)combuf1); tpfree((char*)recbuf1); tpfree((char*)combuf2); tpfree((char*)recbuf2); tpreturn(TPFAIL, 0L, (char*)NULL, 0L, 0L); } // try to commit if (tpcommit(0) == -1) { userlog("Can't commit TX\n"); userlog("Tperrno = %s\n", strerror(tperrno)); tpreturn(TPFAIL, 0L, (char*)NULL, 0L, 0L); } else userlog("Successfully committed TX\n");

Kap OHO-Workshop: MTS - COMs OTM T. Grabs TUXEDO vs. MTS

Kap OHO-Workshop: MTS - COMs OTM T. Grabs COM+ COM+ ist COM und mehr für Windows 2000 COM+ =COM + MTS + MSMQ + Component Services + anderes Component Services Asynchronous Non-blocking calls Queued Components (MSMQ) Events Pipes Light-weight handlers … andere Erweiterungen Apartment Threading überarbeitet Registrierung überarbeitet Keine Unterschiede bei Objekterzeugung für MTS mehr

Kap OHO-Workshop: MTS - COMs OTM T. Grabs Weitere Informationen zu COM, MTS und COM+ COM: DCOM: MTS: Applikationsentwicklung mit COM und MTS: COM+: (Stand: )