29
Universität Bonn, Seminar Component and Aspect Engineering, WS2003, Patrick Schriner 1 COM+ und MTS Patrick Schriner

Universität Bonn, Seminar Component and Aspect Engineering, WS2003, Patrick Schriner 1 COM+ und MTS Patrick Schriner

Embed Size (px)

Citation preview

Page 1: Universität Bonn, Seminar Component and Aspect Engineering, WS2003, Patrick Schriner 1 COM+ und MTS Patrick Schriner

Universität Bonn, Seminar Component and Aspect Engineering, WS2003, Patrick Schriner 1

COM+ und MTS

Patrick Schriner

Page 2: Universität Bonn, Seminar Component and Aspect Engineering, WS2003, Patrick Schriner 1 COM+ und MTS Patrick Schriner

Universität Bonn, Seminar Component and Aspect Engineering, WS2003, Patrick Schriner 2

Motivation von COM+

Three-Tier Applikationen Presentation, Business Logic, Data Layer

COM+ möchte die Programmierung des „Business Logic Layer“ vereinfachen

Vereinheitlichung der Konzepte von DCOM, MTS, MSMQ Höhere Skalierbarkeit Bessere Tools Enterprise Anwendungen

Visual Basic Programmierern den Zugang zur Enterprise Programmierung ermöglichen

Page 3: Universität Bonn, Seminar Component and Aspect Engineering, WS2003, Patrick Schriner 1 COM+ und MTS Patrick Schriner

Universität Bonn, Seminar Component and Aspect Engineering, WS2003, Patrick Schriner 3

MTS (Microsoft Transaction Server)

Page 4: Universität Bonn, Seminar Component and Aspect Engineering, WS2003, Patrick Schriner 1 COM+ und MTS Patrick Schriner

Universität Bonn, Seminar Component and Aspect Engineering, WS2003, Patrick Schriner 4

MTS (Microsoft Transaction Server)

Erste Version: Als Zusatz zu Windows NT 4.0 Zweck: Abbildung von Datenbanken auf COM Komponenten

Features JITA (Just In Time Activation)

MTS Komponenten werden erst auf Anfrage erzeugt

– resourcenschonend

Page 5: Universität Bonn, Seminar Component and Aspect Engineering, WS2003, Patrick Schriner 1 COM+ und MTS Patrick Schriner

Universität Bonn, Seminar Component and Aspect Engineering, WS2003, Patrick Schriner 5

MTS (Microsoft Transaction Server)

Features (2) Sicherheit

Rollen-basiertes Sicherheitssystem

Skalierbarkeit Durch Thread-Pools Durch Automatisches Activate / Deactivate

Transaktionsmanagment MTS Komponenten können verschiedene Transaktionsmodi wählen Not Supported / Requires New / Required / Supported

Page 6: Universität Bonn, Seminar Component and Aspect Engineering, WS2003, Patrick Schriner 1 COM+ und MTS Patrick Schriner

Universität Bonn, Seminar Component and Aspect Engineering, WS2003, Patrick Schriner 6

Roll-based Security (MTS/COM+)

Rolle

NT-Benutzer

NT-Gruppe Komponente

Rechte

Page 7: Universität Bonn, Seminar Component and Aspect Engineering, WS2003, Patrick Schriner 1 COM+ und MTS Patrick Schriner

Universität Bonn, Seminar Component and Aspect Engineering, WS2003, Patrick Schriner 7

JITA Lebenszyklus in MTS/COM+

Raw Memory Initialized

Constructor

Activated

Activate()

Deactivated

Deactivate()

doSomething()

Destructor

Deactivate()

Destructor

Ohne canBePooledMit canBePooled(recycling)

Page 8: Universität Bonn, Seminar Component and Aspect Engineering, WS2003, Patrick Schriner 1 COM+ und MTS Patrick Schriner

Universität Bonn, Seminar Component and Aspect Engineering, WS2003, Patrick Schriner 8

MS Message Queue Server (MSMQ)

Soll den Austausch von Daten zwischen Applikationen auf verschiedenen System und Netzwerken vereinfachen

Features Store and Forward Communication

Applikationen können Nachrichten an Applikationen verschicken, die nicht die ganze Zeit online sind.

Concurrent Execution Gleichzeitiges Verschicken von Anfragen, ohne auf Antworten warten zu müssen

Journalled communication Ermöglicht das Erstellen von Kopien von Anfragen, zur weiteren Verarbeitung

Page 9: Universität Bonn, Seminar Component and Aspect Engineering, WS2003, Patrick Schriner 1 COM+ und MTS Patrick Schriner

Universität Bonn, Seminar Component and Aspect Engineering, WS2003, Patrick Schriner 9

MSMQ (2)

Features Guaranteed Message Delivery (so physikalisch erreichbar) Asynchronous communication Transaction support (besonders mit MTS) Einmalige Absendung, in-order Integration mit dem Windows NT Sicherheitssystem

In .NET: Abgebildet im System.Messaging Namespace

Page 10: Universität Bonn, Seminar Component and Aspect Engineering, WS2003, Patrick Schriner 1 COM+ und MTS Patrick Schriner

Universität Bonn, Seminar Component and Aspect Engineering, WS2003, Patrick Schriner 10

MSMQ Ablauf

MSMQ

Send Queue

Receive Queue

Client Server

Proxy (Recorder)

Component

Stub(Player)

Page 11: Universität Bonn, Seminar Component and Aspect Engineering, WS2003, Patrick Schriner 1 COM+ und MTS Patrick Schriner

Universität Bonn, Seminar Component and Aspect Engineering, WS2003, Patrick Schriner 11

COM+

Page 12: Universität Bonn, Seminar Component and Aspect Engineering, WS2003, Patrick Schriner 1 COM+ und MTS Patrick Schriner

Universität Bonn, Seminar Component and Aspect Engineering, WS2003, Patrick Schriner 12

COM+ Features

DCOM Integration des MTS in COM+

Transaktionsmanagment Rollenbasiertes Sicherheitssystem

Integration des MSMQ Servers in COM+ Queued Components

„Component Services“: In-Memory Database (IMDB)

Datenbank Cache

Page 13: Universität Bonn, Seminar Component and Aspect Engineering, WS2003, Patrick Schriner 1 COM+ und MTS Patrick Schriner

Universität Bonn, Seminar Component and Aspect Engineering, WS2003, Patrick Schriner 13

COM+ Features (2)

„Component Services“ (2) Load Balancing

Ein (oder mehrere) Server nehmen die Anfragen entgegen, und reichen diese weiter an einen Server Cluster („Shortest Response Time“)

Object Pooling Komponenten müssen selber erkennen, ob sie sich gerade in einer Transaktion

befinden oder nicht COM+ fragt über CanBePooled, ob die Komponente freigegeben ist

Bessere Administration Sicherheit, Transaktionsmodus, Threading,Objektpooling sind über den

Komponentenmanager administrierbar (bis runter auf Methodenebene)

Page 14: Universität Bonn, Seminar Component and Aspect Engineering, WS2003, Patrick Schriner 1 COM+ und MTS Patrick Schriner

Universität Bonn, Seminar Component and Aspect Engineering, WS2003, Patrick Schriner 14

Security

Rollen-basiert, wie im MTS in COM+ Beschränkung auf NT-Benutzer

Deklarativ (GUI) Zuweisung von Rechten nach Rollen Zuweisung von Benutzern bzw. Benutzergruppen zu Rollen

Imperativ (im Programm) Möglichkeit, im Programmkontext den Benutzer abzufragen

// C# Beispielif (ContextUtil.IsSecurityEnabled){ if (ContextUtil.IsCallerInRole("DistrictManagers")) GetDistrictManagerSalesData (); else if(ContextUtil.IsCallerInRole("RegionalManagers")) GetRegionalManagerSalesData ();}

Page 15: Universität Bonn, Seminar Component and Aspect Engineering, WS2003, Patrick Schriner 1 COM+ und MTS Patrick Schriner

Universität Bonn, Seminar Component and Aspect Engineering, WS2003, Patrick Schriner 15

Events

„loosely coupled events“ Events werden nicht direkt verschickt Publisher / Subscriber benutzen COM+ Catalog

Auf Methodenebene Bessere Semantik (?):

Teller.credit(Athul, 100001);

statt SendEvent(channel=Teller, name=Athul, credit=100001);

Sicherung durch die schon beschriebenen Sicherheitsmöglichkeiten

Redirection Als DCOM oder Queued Components

Page 16: Universität Bonn, Seminar Component and Aspect Engineering, WS2003, Patrick Schriner 1 COM+ und MTS Patrick Schriner

Universität Bonn, Seminar Component and Aspect Engineering, WS2003, Patrick Schriner 16

COM+ 1.5 (Windows XP / 2003)

Volle Unterstützung erst in Windows 2003 Server Features:

Application Pooling "process-level" load balancing

– Erlaubt es, nicht nur Objekte in einem Pool zu verwalten (COM+ 1.0), sondern Prozesse.

Pause/Disable Applications Public/Private Components COM+ Partitions

Ermöglicht die gleichzeitige Ausführung verschiedener Revisionen einer COM+ Komponente

COM+ SOAP Service Bereitstellen der Funktionalität einer COM+ Komponente als WebService

Page 17: Universität Bonn, Seminar Component and Aspect Engineering, WS2003, Patrick Schriner 1 COM+ und MTS Patrick Schriner

Universität Bonn, Seminar Component and Aspect Engineering, WS2003, Patrick Schriner 17

COM+ 1.5 (2)

Applications as NT Services Bessere Konfigurierbarkeit

Ausführender Account Automatischer Restart Logging

Application Recycling Erlaubt es, in regelmäßigen Intervallen Komponenten neu zu

starten Startet Duplikat des dllhost Prozesses, der mit einer Anwendung verbunden ist

Gut gegen Speicherlöcher, „hängende“ Prozesse, Triggers:

Lifetime, Memory, Call, Activation Expiration Timeout

Page 18: Universität Bonn, Seminar Component and Aspect Engineering, WS2003, Patrick Schriner 1 COM+ und MTS Patrick Schriner

Universität Bonn, Seminar Component and Aspect Engineering, WS2003, Patrick Schriner 18

COM+ State

COM+ Komponenten sind nie persistent Bei „Deactivate“ kann man den State sichern (oder verwerfen) Recycling wird ausgelöst durch setComplete/setAbort Falls es „billig“ ist, sich den State wieder zu holen, sollte man

diesen nicht sichern, und statt dessen die Komponente möglichst oft freigeben

Eine Transaktion dauert so lange, wie das Objekt existiert Mit EnableCommit und DisableCommit (am Ende einer

Methode) kann man den Transaktionskontext über die Methode hinaus verlängern

=> Aus Performance Gründen wird stateless bevorzugt

Page 19: Universität Bonn, Seminar Component and Aspect Engineering, WS2003, Patrick Schriner 1 COM+ und MTS Patrick Schriner

Universität Bonn, Seminar Component and Aspect Engineering, WS2003, Patrick Schriner 19

Nach COM+: Indigo?

Neue Architektur, das erste mal in Longhorn (2006?) „Service oriented Architecture“ (SOA) „Indigo is a set of .NET Framework-based technologies for

building and running connected systems. Indigo is the next step in the evolutionary path that started with COM, COM+, and MSMQ, and continues through .NET Remoting, ASMX, System.Messaging, and .NET Enterprise Services. Indigo subsumes these technologies and offers a single unified programming experience for developing services using any CLR-compliant language.”

Page 20: Universität Bonn, Seminar Component and Aspect Engineering, WS2003, Patrick Schriner 1 COM+ und MTS Patrick Schriner

Universität Bonn, Seminar Component and Aspect Engineering, WS2003, Patrick Schriner 20

Beispiel für COM+

Page 21: Universität Bonn, Seminar Component and Aspect Engineering, WS2003, Patrick Schriner 1 COM+ und MTS Patrick Schriner

Universität Bonn, Seminar Component and Aspect Engineering, WS2003, Patrick Schriner 21

COM+ in C++

Problem Keine direkte Sprachunterstützung für Interfaces

Lösung IDL (Interface Description Language)

Ähnlich wie die IDL für CORBA, aber inkompatibel

Sehr wenig abstrahiert… Beispiel

Page 22: Universität Bonn, Seminar Component and Aspect Engineering, WS2003, Patrick Schriner 1 COM+ und MTS Patrick Schriner

Universität Bonn, Seminar Component and Aspect Engineering, WS2003, Patrick Schriner 22

COM+ und .NET (C#)

Klasse muß (nur) von System.EnterpriseServices.ServicedComponentabgeleitet werden

Das richtige „Transaction“ Attribut muß gesetzt werden z.B. TransactionOption.Required

Vorgehensweise: Programmieren der Server COM+ Komponente Optional: Überschreiben von Methoden von ServicedComponent Generierung eines „Strong Keys“ (GUID) Registrierung im COM+ Catalog

(Registry bzw. COM+ Registration Database)mit regsvcs.exe (C#) oder regsvr32.exe (C++)

Page 23: Universität Bonn, Seminar Component and Aspect Engineering, WS2003, Patrick Schriner 1 COM+ und MTS Patrick Schriner

Universität Bonn, Seminar Component and Aspect Engineering, WS2003, Patrick Schriner 23

COM+ und .NET (C#)

Methoden von ServicedComponent, die man überschreiben kann: Activate CanBePooled

Gibt an, ob die Komponente freigegeben werden kann

Construct Deactivate Dispose

Passen zum Lebenszyklus einer COM+ Komponente

Page 24: Universität Bonn, Seminar Component and Aspect Engineering, WS2003, Patrick Schriner 1 COM+ und MTS Patrick Schriner

Universität Bonn, Seminar Component and Aspect Engineering, WS2003, Patrick Schriner 24

COM+ Beispiel Server (C#)

…// Supply the COM+ application name.[assembly: ApplicationName("BankComponent")]// Supply a strong-named assembly.[assembly: AssemblyKeyFileAttribute("BankComponent.snk")]namespace BankComponent{

[Transaction(TransactionOption.Required)]public class Account : ServicedComponent{

[AutoComplete] public bool Post(int accountNum, double amount){ … }

… override protected void Construct (string constructionString) {

MessageBox.Show ("BankComponent::Construct() invoked...");

MessageBox.Show (constructionString, "Construction String");

} }

…}

Attribute bestimmen Verhalten

Page 25: Universität Bonn, Seminar Component and Aspect Engineering, WS2003, Patrick Schriner 1 COM+ und MTS Patrick Schriner

Universität Bonn, Seminar Component and Aspect Engineering, WS2003, Patrick Schriner 25

COM+ Beispiel Client (C#)

using BankComponent;namespace BankComponentConsoleClient{ class Client { public static int Main() { try { Account act = new Account(); // Post money into the account. act.Post(5, 100); return(0); } catch { return(1); } } }}

DemoClientGrafischer ClientVNC

Page 26: Universität Bonn, Seminar Component and Aspect Engineering, WS2003, Patrick Schriner 1 COM+ und MTS Patrick Schriner

Universität Bonn, Seminar Component and Aspect Engineering, WS2003, Patrick Schriner 26

Fazit

Page 27: Universität Bonn, Seminar Component and Aspect Engineering, WS2003, Patrick Schriner 1 COM+ und MTS Patrick Schriner

Universität Bonn, Seminar Component and Aspect Engineering, WS2003, Patrick Schriner 27

Vorteile/Probleme von COM+

Pro Leichter zu administrieren als

COM/DCOM Integration verschiedener

Produkte

Contra Fast nur unter Windows Windows 2000 aufwärts

Nur wenige Anwendungen werden mit Windows 2000 mitgeliefert

Wichtige Features erst in Windows XP

Starke Integration mit der Registry GUID

Page 28: Universität Bonn, Seminar Component and Aspect Engineering, WS2003, Patrick Schriner 1 COM+ und MTS Patrick Schriner

Universität Bonn, Seminar Component and Aspect Engineering, WS2003, Patrick Schriner 28

Vergleich COM+ / EJB

COM+ Asynchrones Messaging Queued Components Bestandteil von Windows 2000

(oder höher) Integration mit NT5 Security Mehrere Programmiersprachen Ein Anbieter

EJB Messaging mit JMS Persistenz möglich Offenes Protokoll (IIOP) Deklarative Sicherheit Kooperation mit CORBA „Nur“ Java Mehrere Anbieter

Page 29: Universität Bonn, Seminar Component and Aspect Engineering, WS2003, Patrick Schriner 1 COM+ und MTS Patrick Schriner

Universität Bonn, Seminar Component and Aspect Engineering, WS2003, Patrick Schriner 29

Fragen?