Upload
alf-bogenschutz
View
106
Download
2
Embed Size (px)
Citation preview
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
Universität Bonn, Seminar Component and Aspect Engineering, WS2003, Patrick Schriner 3
MTS (Microsoft Transaction Server)
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
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
Universität Bonn, Seminar Component and Aspect Engineering, WS2003, Patrick Schriner 6
Roll-based Security (MTS/COM+)
Rolle
NT-Benutzer
NT-Gruppe Komponente
Rechte
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)
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
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
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)
Universität Bonn, Seminar Component and Aspect Engineering, WS2003, Patrick Schriner 11
COM+
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
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)
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 ();}
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
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
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
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
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.”
Universität Bonn, Seminar Component and Aspect Engineering, WS2003, Patrick Schriner 20
Beispiel für COM+
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
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++)
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
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
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
Universität Bonn, Seminar Component and Aspect Engineering, WS2003, Patrick Schriner 26
Fazit
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
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
Universität Bonn, Seminar Component and Aspect Engineering, WS2003, Patrick Schriner 29
Fragen?