Geschrieben von: Christoph Wille
Kategorie: Komponenten
This printed page brought to you by AlphaSierraPapa
Wie im letzten Artikel versprochen, kommen wir heute nun zur zweiten Variante des Zugriffs auf die ASP-internen Objekte innerhalb von VB Komponenten - dem ObjectContext von COM+ (oder Microsoft Transaction Server [MTS], wenn Sie noch Windows NT 4.0 verwenden). Dieser wird jeder in COM+ Applikationen gehosteten Komponente übergeben, und wenn ASP die Applikation aufruft, enthält der ObjectContext die von uns gewünschten ASP-internen Objekte - und wir müssen nur noch darauf zugreifen.
Wir beschäftigen uns heute rein mit dem Aspekt des Zugriffs auf die ASP Objekte - die erweiterten Funktionen (Transaktionen, etc) von COM+ werde ich völlig außer Acht lassen. Dazu werden wir in einem weiteren Artikel mehr bringen, der dann auch die technischen Hintergründe von COM+ besser beleuchtet. Daher mögen einige Ausführungen auch extra-effizient erscheinen.
Da wir bereits im letzten Artikel sehr ausführlich auf die Erstellung der Komponente eingegangen sind, machen wir dies heute im Eiltempo, und befassen uns hauptsächlich mit den Unterschieden.
Als erstes benötigen wir wieder ein ActiveX DLL Projekt. Dieses benennen wir AspHeuteTx, und die Klasse HelloWorldTx. Damit wir sowohl auf die COM+ Services (der ObjectContext kommt von dort) als auch die ASP Objekte zugreifen können, benötigen wir diesmal zwei Typbibliothekreferenzen - der folgende Screenshot zeigt die References Dialogbox:
Damit sind die Voraussetzungen geschaffen, und wir können unseren Code schreiben (Klassenmodul):
Option Explicit Public Sub SayHelloTx() Dim objContext As ObjectContext Dim objResponse As ASPTypeLibrary.Response Set objContext = GetObjectContext() Set objResponse = objContext.Item("Response") objResponse.Write "Hello World!" End Sub
Was passiert hier? Es gibt eine öffentliche Methode namens SayHelloTx, die zwei Variablen deklariert. Die eine ist für die Referenz auf den ObjectContext gedacht, die zweite auf die Referenz des Response Objekts, das wir aus dem ObjectContext erhalten. Es gibt keine spezielle Methode, die unser Objekt implementieren muß - beim ObjectContext greifen wir auf die Objekte zu, und niemand von außen übergibt sie an eine von uns implementierte Methode (wie bei OnStartPage im letzten Artikel).
Die Funktion GetObjectContext dient dazu, den ObjectContext zu erhalten (dies ist eine Hilfsfunktion, die COM+ zur Verfügung stellt). Da wir in ASP laufen (werden), gibt es ein Item namens Response - das nicht anderes als unser bekanntes Response Objekt ist - und dann auch als solches verwendet wird. Hinweis: wenn man diese Komponente außerhalb von ASP aufruft, wird man genau durch diesen Item Aufruf Fehlermeldungen bekommen.
Eine kleine COM+ bezogene Änderung müssen wir an unserem Projekt noch machen - der MTSTransactionMode soll auf No Transactions umgestellt werden (mehr dazu, und zu Transaktionen in späteren Artikeln). Der folgende Screenshot zeigt wo diese Einstellung gemacht werden muß.
Wir haben unsere Komponente mit COM+ Services ausgestattet, also müssen wir unsere Komponente auch bei COM+ anmelden. Dies geschieht im Administrationsmodul Component Services, und ich zeige alle Schritte, die notwendig sind, um korrekt lauffähig zu werden. Der erste Schritt dazu ist eine neue COM+ Applikation zu erstellen.
Das Erstellen einer neuen COM+ Applikation geht wie folgt von statten:
Nun kann man Komponenten in die Applikation einfügen.
Es gibt verschiedene Varianten um Komponenten in COM+ Applikationen zu registrieren, ich habe mich für den direktesten entschieden:
Unsere fertig installierte COM+ Applikation mit Komponente (und expandierter Funktionalität) sieht nun wie folgt aus:
Und kann nun auch bereits schon verwendet werden.
Die Verwendung selbst ändert sich durch den Einsatz einer COM+ Application nicht - die folgende kleine ASP Page (test.asp) beweist dies:
Set xObj = Server.CreateObject("AspHeuteTx.HelloWorldTx") xObj.SayHelloTx
Alles funktioniert, wie es soll - nur schneller.
Zum letzten Absatz gilt noch hinzuzufügen, daß es noch schneller geht, wenn man sich weiter mit COM+ beschäftigt, vor allem mit Just In Time Activation und As Soon As Possible Deactivation. Aber das ist ein Thema eines weiteren Artikels.
This printed page brought to you by AlphaSierraPapa
Klicken Sie hier, um den Download zu starten.
http://www.aspheute.com/code/20010322.zip
Der Object Construct String
http:/www.aspheute.com/artikel/20020205.htm
In VB Komponenten auf ASP Objekte zugreifen (Variante 1)
http:/www.aspheute.com/artikel/20010320.htm
Klassenauflistungen mit dem Dictionary-Objekt
http:/www.aspheute.com/artikel/20020408.htm
Transaktionen in C# Business Tier Komponenten
http:/www.aspheute.com/artikel/20010619.htm
©2000-2006 AspHeute.com
Alle Rechte vorbehalten. Der Inhalt dieser Seiten ist urheberrechtlich geschützt.
Eine Übernahme von Texten (auch nur auszugsweise) oder Graphiken bedarf unserer schriftlichen Zustimmung.