Vielleicht haben Sie sich schon mal mit den geheimnissen von COm auseinander gesetzt. Spätestens, wenn es Sie stört, das den Quellcode Ihrer ASP Anwendung jeder sehen und weiterverwenden kann, brauchen Sie eine Möglichkeit diesen Quelltext zu verstecken.
Eine Möglichkeit ist die verschlüsselung. Dies soll aber hier nicht behandelt werden, da der Einsatzbereich auch sehr beschränkt ist.
Viel interessanter ist es die geschäftslogik in einen Komponenete zu packen. Man spricht auch von mehrschichtiger Entwicklung. Auf die Vorteile und Anwendung will ich in einem anderen Artikel eingehen.
Da wir alle faule Coder sind und mit wenig Aufwand viel erreichen wollen, nehme ich in diesem Artikel VB 6.0 um eine COM.DLL zu erzeugen.
Der interessante Part beginnt, wenn Sie in Visual Basic z.B. auf das Response Objekt zugreifen wollen, um direkt HTML Code auszugeben.
Zunächst müssen Sie ihrem Vb Projekt einen Verweis auf die Library hinzufügen. Dies ist die ASP.DLL, kann aber aus der Objektliste über
Microsoft Active Server Pages Object Library
Dann erstelle ich eine Klasse HTTPOUT. Dieser Klasse füge ich meine Funktionen/Methoden hinzu. So verwende ich die PrintLine Funktion mit einem Parameter.
Wichtig ist in der COM DLL die Funktion OnStartPage. Damit holen Sie sich einen Verweis auf das Response Object des IIS. Um das Objekt überall verwenden zu können, definieren Sie noch global eine Variable, die hier myresp heisst.
Dim Myresp As Response Public Sub OnStartPage(MyScriptingContext As ScriptingContext) Set Myresp = MyScriptingContext.Response End Sub Public Sub PrintLine(Value As String) Myresp.Write (Value) Myresp.Write ("<br>") End Sub |
Da die COM DLL auf das Response Objekt zugreift, brauche ich zum Testen eine ASP Seite. Diese lege ich in einem virtuellen Verzeichnis an.
Eine kleine Hürde gibts noch zu überwinden. Da ich die Komponente nicht jedesmal kompilieren will, muss ich das Debuggen aus VB anstossen.
Dazu trage ich in den Projekteigenschaften unter dem Reiter Debuggen die ASP Seite ein, die gestartet werden soll. Der Start erfolgt dann über VB (F5).
<%@ Language=VBScript %> <%' diese seite dient zum testen eines COm Objektes ' die Ausgabe wird durch die COM DLL realsiert %> <HTML> <HEAD> </HEAD> <BODY> <% set aus= Server.CreateObject("COMTEST.HTTPOUT") for i= 1 to 5 aus.printline("Das ist eine Zeile mit nr:" & cstr(i) ) next %> </BODY> </HTML> |
Natürlich können Sie auch auf alle anderen Objekte zugreifen. So können Sie den Inhalt eines Formualrfeldes über das Request Objekt auslesen und in VB weiterverarbeiten.
Ein weiterer Fall ist, das Sie den Stream eines Uploades am Server über das Request Objekt abfangen können und diesen in eine Datei speichern. So können Sie selbst Ihre eigene Upload Komponente realisieren.