Glengamoi (Forum) · AspHeute · .NET Heute (RSS-Suche) · AspxFiles (Wiki) · .NET Blogs
ASP German Homepage Homepage
 

Liste

.NET 2.0 (1)
.NET Allgemein (16)
.NET Fu (5)
ADO.NET (11)
Aprilscherz (3)
ASP Grundlagen (44)
ASP Tricks (83)
ASP.NET (44)
ASPIntranet.de (5)
C# (28)
Datenbank (44)
Dokumentation (4)
IIS 6.0 (1)
Komponenten (29)
Optimierung (10)
Server (21)
Sicherheit (34)
Tee Off (6)
VB.NET (6)
WAP (8)
Web Services (11)
XML (9)

RSS 2.0 - Die neuesten fünf Artikel auf AspHeute.com


 

Suchen





 

English Articles
Chinese Articles
Unsere Autoren
 
Link zu AspHeute
Impressum
Werben
Anfragen

In VB Komponenten auf ASP Objekte zugreifen (Variante 2)

Geschrieben von: Christoph Wille
Kategorie: Komponenten

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 erstellen

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ß.

Die Komponente registrieren

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.

Erstellen einer COM+ Applikation

Das Erstellen einer neuen COM+ Applikation geht wie folgt von statten:

  1. Starten von Administrative Tools/Component Services, expandieren des lokalen Computers.
  2. Mit der rechten Maustaste auf COM+ Applications klicken, und New/Application vom Contextmenü auswählen. Den ersten Schritt des Wizards überspringen.
  3. Aus dem Wizard Create an empty application auswählen.
  4. Weiter geht's mit dem Benennen der Applikation. Ebenfalls auswählen muß man ob es sich um eine Library oder Server Applikation handelt. Für unsere Zwecke ist eine Library Application ausreichend.
  5. Ein Klick auf Next und dann Finish erzeugt die Applikation für uns.

Nun kann man Komponenten in die Applikation einfügen.

Unsere Komponente installieren

Es gibt verschiedene Varianten um Komponenten in COM+ Applikationen zu registrieren, ich habe mich für den direktesten entschieden:

  1. Auf der neu erzeugten COM+ Applikation mit der rechten Maustaste klicken, und New/Component aus dem Kontextmenü auswählen. Auch in diesem Wizard kann der erste Schritt übersprungen werden.
  2. Unsere erste Entscheidung ist, wie und woher wir die Komponente installieren. Wir möchten eine neue Komponente installieren.
  3. In der sich öffnenden Dateiauswahldialogbox unsere kompilierte Komponente AspHeuteTx.dll auswählen. Nach der Auswahl erhält man folgendes Fenster mit Informationen über die Komponente:
  4. Mit Next & Finish wäre dann auch dieser Wizard erledigt.

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 verwenden

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.

Schlußbemerkung

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.

Download des Codes

Klicken Sie hier, um den Download zu starten.

Verwandte Artikel

Der Object Construct String
In VB Komponenten auf ASP Objekte zugreifen (Variante 1)
Klassenauflistungen mit dem Dictionary-Objekt
Transaktionen in C# Business Tier Komponenten

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.

Bewerten Sie diesen Artikel
 Sehr gut   Nicht genügend  
   1  2  3  4  5  
 

  
   Für Ausdruck optimierte Seite

©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.