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

Messen der Verbindungsgeschwindigkeit

Geschrieben von: Christian Koller
Kategorie: Komponenten

Im Internet ist ein deutlicher Trend zu größeren Datenströmen hin festzustellen. Ob nun ein Anwender einen Film online ansieht, Internet-Radio hört, oder ein MP3-File aus dem Web abspielt, immer ist ein großer Datenstrom zwischen Browser und Internetserver erforderlich.

Ein Browser kann über Leitungen unterschiedlicher Geschwindigkeit eine Internetseite von einem Server abrufen. Folgende Faktoren begrenzen die Verbindungsgeschwindigkeit zwischen Browser und Internetserver:

  • Analoges Modem: 28.8 - 56 KBit/s
  • Netzwerkkarte: 10 - 100 MBit/s
  • Leitung:
    • Handynetz: 8 - 28 KBit/s
    • Analoge Leitung: 30 - 56 KBit/s
    • ISDN: 64 KBit/s (mehr bei Kanalbündelung)
    • ADSL (Telefon- oder Fernsehkabel): Bis etwa 1024 KBit/s
  • Belastung des Internetservers
  • Belastung der Knotenpunktserver und der Internetleitungen

Für Sie als ASP Programmierer bedeutet das, daß Sie Ihre Webapplikationen auf sehr unterschiedliche Datenübertragungsraten abstimmen müssen. Wenn man eine Webapplikation erstellt, die auch mit der langsamsten Verbindung sehr gut arbeiten kann, so muß man zwangsläufig Kompromisse eingehen, zum Beispiel kleinere Grafiken verwenden, keine animierten Bilder oder Videosequenzen in die Internetseite einbinden, usw.

Aus diesem Grund ist es oftmals wünschenswert die Datenübertragungsgeschwindigkeit zwischen einem bestimmten User und dem Internetserver zu bestimmen, um je nach Geschwindigkeit dem User unterschiedliche Versionen der Webapplikation bereitstellen zu können.

Einfach geht es, wenn man die Professional oder Enterprise Edition der BrowserHawk 2000 Server-Komponente (Firma CyScape) verwendet. Diese Komponente erlaubt Ihnen mit einfachen ASP Befehlen die Datenübertragungsrate zwischen Browser und Server festzustellen. Ausserdem liefert Ihnen diese Komponente viele andere Browsereigenschaften.

Das folgende ASP Beispiel zeigt Ihnen die Anwendung der BrowserHawk 2000 Komponente (ausführbares Beispiel):

<%
' Test-Seite darf nicht gecached werden
' um vernuenftige Resultate zu bekommen
Response.Expires=0
Response.AddHeader "Pragma","no-cache"
Response.AddHeader "cache-control", "no-store"

Set BrowserHawk = Server.Createobject("CyScape.Browserobj")
BrowserHawk.GetExtProperties
If BrowserHawk.JavaScriptEnabled = True Then
  BrowserHawk.SpeedDetector , "Bitte warten...", _
  " Die Verbindung wird getestet, bitte warten..."
End If
%>
<html>
<head>
  <title>Verbindungsgeschwindigkeit: Test Resultat</title>
</head>
<body>

<p>Ihre Verbindungsgeschwindigkeit:
<%
Speed = BrowserHawk.ConnectionSpeed

If Speed = -1 Then
  If (Not BrowserHawk.JavaScriptEnabled) Then
    Response.Write "Geschwindigkeit nicht messbar da " & _
    "JavaScript am Browser nicht ausgeführt werden kann."
  Else
    Response.Write "Kleiner als 10 KBytes/sec " & _
    "(schlechte Verbindung oder zu großer Datenstrom)"
  End If
Else
  kBytesProSec = Speed / 8
  If kBytesProSec > 2000000 Then
    Response.Write "Nicht messbar " & _
	  "(intern zu hoher Wert ermittelt)"
    Else
      Response.Write FormatNumber(kBytesProSec) & _
      " KBytes/sec"
    End If
End If

Set BrowserHawk = Nothing
%>
</p>

</body>
</html>

Der ASP Code verwendet die ConnectionSpeed Eigenschaft des BrowserHawk Objektes um die Verbindungsgeschwindigkeit zu erhalten. Bevor man jedoch einen Wert aus dieser Eigenschaft auslesen kann, muß man erst die SpeedDetector Methode ausführen.

Da die SpeedDetector Methode zur Bestimmung der Datenübertragungsrate im Browser ein JavaScript Programm ablaufen lässt, ist es günstig, vor dem Aufrufen der SpeedDetector Methode zu prüfen, ob der Browser JavaScript ausführen kann. Dies geschieht durch Aufruf der GetExtProperties Methode und dem Auslesen der JavaScriptEnabled Eigenschaft. Liefert die JavaScriptEnabled nach Aufruf der GetExtProperties Methode den Wert True, so ist der Browser in der Lage JavaScript Programme auszuführen.

Was die SpeedDetector Methode genau macht ist schnell erklärt: Sie schickt ein JavaScript Programm zum Browser, das aus 3 Blöcken besteht:

  1. Block speichert die aktuelle Zeit in der JavaScript Variable stm.
  2. Block lädt einen großen Textblock vom Server
  3. .
  4. Block speichert die aktuelle Zeit nach dem Laden in der JavaScript Variable etm, bildet die Differenz zwischen etm und stm (in Millisekunden), und dividiert das Ergebnis durch 1000 um die Zeitdifferenz in Sekunden zu erhalten. Danach wird die Größe des geladenen Textblockes (in Bit) durch die Zeitdifferenz (in Sekunden) dividiert und das Ergebnis (Bit/sec) in der JavaScript Variablen kbps gespeichert.
Wenn schließlich die Seite geladen und alle JavaScript Blöcke ausgeführt worden sind, dann veranlasst eine JavaScript Funktion den Brower die ursprüngliche Seite zu laden. In der URL der geladenen Seite wird im QueryString die Variable bhkbps mit dem Wert der JavaScript Variablen kbps belegt. Die QueryString Variable bhjs erhält den Wert 0 um anzuzeigen, daß die SpeedDetector Methode erfolgreich ausgeführt wurde.

Wenn eine ASP Seite die SpeedDetector oder GetExtProperties Methode der BrowserHawk Komponente ausführt, so kann sie nicht gleichzeitig das Ergebnis eines mittels POST-Methode abgesendeten Formulares entgegen nehmen. Hingegen wird der Inhalt eines mittels GET-Methode abgesendetes Formular problemlos an die ASP Seite weitergereicht.

Download des Codes

Klicken Sie hier, um den Download zu starten.

Verwandte Artikel

Browsereigenschaften mit BrowserHawk 2000 bestimmen

Links zu anderen Sites

BrowserHawk

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.