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

Die LookUpTable Komponente

Geschrieben von: Christian Holm
Kategorie: Komponenten

Diese Komponente dient ähnlich wie das Dictionary Objekt von VBScript dazu, anhand eines Keys (Schlüssel) den dazugehörigen Wert schnell aufzufinden. Dieser Artikel erklärt Ihnen, warum Sie der LookUpTable Komponente den Vorzug gegenüber dem Dictionary Objekt geben sollten, und welche Methoden unterstützt werden.

Die LookUpTable Komponente samt dem dazugehörigen Sourcecode (!) können Sie hier nach dem Akzeptieren der Lizenzbedingungen von http://msdn.microsoft.com downloaden. Mithilfe des mitgelieferten Sourcecodes können Sie falls erforderlich das Objekt in seiner Funktionaliät nach Ihren Vorstellungen erweitern.

Prinzipiell ist die Funktionalität bei der LookUpTable Komponente ja ähnlich der des Dictionary Objekts - sie fungieren beide als assoziative Arrays, d.h. ein Eintrag des Arrays besteht immer aus einem sogenannten Key und einem dazugehörigen Wert - und anhand des Schlüssels kann ich den Wert auffinden. Der Anwendungsfall eines assoziativen Arrays ist oft das Konfigurationsmanagement, weshalb diese auch oft auf Applikationsebene zur Verfügung gestellt werden sollen.

Jedoch unterscheiden sich die beiden Objekte in einem wesentlichen Punkt: Das Dictionary Objekt ist Apartment-threaded und das LookUpTable Objekt ist both-threaded, unterstützt also das apartment-threading und das free-threading Modell. Da man es vermeiden sollte apartment-threaded Objekte im Application oder Session Scope zu speichern, ist das LookUpTable Objekt dem Dictionary vorzuziehen - es behindert die Performance des Servers nicht.

Kurze Übersicht über die Threadingmodelle

Beim Free-Threading Modell kann ein Objekt von beliebigen Threads aus aufgerufen werden, und es muß selbst darum kümmern, daß die Zugriffe auf interne Daten korrekt serialisiert werden (Synchronisation). Im Gegensatz dazu bietet das Apartment-Threading Modell die Serialisierung als Service von COM, und das Objekt muß sich nicht um die Threadsicherheit selbst kümmern.

Das Apartment Modell ist leichter zu programmieren, ist aber auch für Webserver kritischer: speichere ich ein Apartment Objekt in die Session, kann ich erst wieder darauf zugreifen, wenn der ASP Thread frei ist, der das Apartment ursprünglich erzeugt hat (also der Thread, der das Objekt in die Session gespeichert hat). Der Grund ist die Serialisierung der Zugriffe auf Apartment Objekte über einen einzigen Thread.

Die Verwendung der LookUpTable Komponente

Nach dem Downloaden, Entpacken und Registrieren der DLL auf einem Webserver können Sie die im Artikel gezeigten Beispiele ausführen.

Nachteilig beim LookUpTable Objekt ist, daß es nur die Datentypen String und Integer unterstützt. Da keine Add Methode in der Ursprungsversion unterstützt wird, müssen die Daten aus einer Textdatei eingelesen werden. Damit wären wir schon bei unserem ersten Beispiel.

Wir befüllen einfach das LookUpTable Objekt mit "Daten" aus der Textdatei. Dabei sind ähnliche Konventionen wie bei Datenbanktabellen zu verwenden. Man gibt einen numerischen Key (wie der Primärschlüssel) und die Wertepaare, also die eigentlichen Daten - alle getrennt durch Beistriche - an (StringString.txt):

1,John Doe, JohnDoe@company.com
2,John McLane, JMcLane@diehard.com
3,Martin Riggs, MRiggs@shooter.com

Diese Daten werden dann in ASP so eingelesen:

Set objLookUpTbl = Server.CreateObject("IISSample.LookupTable")

strFileName = "StringString.txt"
strPathFile = Server.MapPath(strFileName)

objLookUpTbl.LoadValues strPathFile,2

Das Einlesen der Daten erfolgt durch die LoadValues Methode, die als Parameter die Textdatei mit Pfad und das Format in welchen die Daten vorliegen (Datentyp String oder Integer) akzeptiert.

Der Format Parameter kann folgende Werte annehmen:

  • 0: String Key, String Wert(e)
  • 1: String Key, Integer Wert(e)
  • 2: Integer Key, String Wert(e)
  • 3: Integer Key, Integer Wert(e)

Nun wollen wir die eingelesenen Werte im Browser wieder darstellen. Hierfür gibt es zwei Möglichkeiten. Entweder die Adressierung durch den Wert des Keys (LookupValues Methode, LookupValues.asp):

For i=1 To objLookUpTbl.Count
    Response.Write objLookUpTbl.LookUpValue(i) & "<br>"
Next

Wenn man nun die LookUpValues.asp Datei auf einem Web Server ausführt, erhält man im Browser folgendes Ergebnis:

Oder, die andere Möglichkeit, wie man es schon von den Arrays gewohnt ist durch den Index des Elements im Objekt (Value Methode, ValueMethod.asp)

For i=0 To objLookUpTbl.Count
    Response.Write objLookUpTbl.Value(i) & "<br>"
Next

Weiters werden noch einige nützliche Methoden unterstützt (SampleMethods.asp):

Die Count Methode gibt die Anzahl der Elemente zurück:

Response.Write "There are " & objLookUpTbl.Count & " entries in the " & strFileName & " file."

Die KeyExists Methode gibt den Wert True zurück, wenn der Key im Objekt enthalten ist:

Response.Write "Does a key with value 1 exist: "
Response.Write objLookUpTbl.KeyExists("1") 

Den Arrayindex eines Elementes erhält man durch die Key Methode:

Response.Write "Element index 0 contains key: " & objLookUpTbl.Key(0)

Wenn man nun die SampleMethods.asp Datei auf einem Web Server ausführt, erhält man im Browser folgendes Ergebnis:

Schlußbemerkung

Dies war eine kleine Einführung in die vom LookupTable Objekt unterstützten Methoden. Diese sind zwar nicht viele an der Zahl, aber durch die Möglichkeit des erweiterbaren Sourcecodes kann man diese ja die eigenen Anforderungen anpassen. Viel wichtiger ist aber, daß man dieses Objekt beinahe bedenkenlos in Application oder Session speichern kann.

Download des Codes

Klicken Sie hier, um den Download zu starten.

Verwandte Artikel

Das Dictionary Objekt - Dein Feind und Helfer

Links zu anderen Sites

Download LookupTable Komponente

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.