In VB Komponenten auf ASP Objekte zugreifen (Variante 2)
Geschrieben von: Christoph Wille 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. Die Komponente erstellenDa 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ß. Die Komponente registrierenWir 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. Erstellen einer COM+ ApplikationDas Erstellen einer neuen COM+ Applikation geht wie folgt von statten:
Nun kann man Komponenten in die Applikation einfügen. Unsere Komponente installierenEs 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 Komponente verwendenDie 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. SchlußbemerkungZum 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. Download des CodesKlicken Sie hier, um den Download zu starten. Verwandte Artikel
Der Object Construct String Wenn Sie jetzt Fragen haben...Wenn Sie Fragen rund um die in diesem Artikel vorgestellte Technologie haben, dann schauen Sie einfach bei uns in den Community Foren der deutschen .NET Community vorbei. Die Teilnehmer helfen Ihnen gerne, wenn Sie sich zur im Artikel vorgestellten Technologie weiterbilden möchten. Haben Sie Fragen die sich direkt auf den Inhalt des Artikels beziehen, dann schreiben Sie dem Autor! Unsere Autoren freuen sich über Feedback zu ihren Artikeln. Ein einfacher Klick auf die Autor kontaktieren Schaltfläche (weiter unten) und schon haben Sie ein für diesen Artikel personalisiertes Anfrageformular.
Und zu guter Letzt möchten wir Sie bitten, den Artikel zu bewerten. Damit helfen Sie uns, die Qualität der Artikel zu verbessern - und anderen Lesern bei der Auswahl der Artikel, die sie lesen sollten.
©2000-2006 AspHeute.com |