Service Performance mit Whois

Web Services oder besser REST Services, sind die nun langsam oder schneller im vergleich zu einem “native” Socket Service. So eine Aussage bedarf immer einer Reihe von definierten Rahmenbedingungen. Als Testkandidat darf der RIPE Whois Dienst herhalten, weil es den in einer Socket und in einer REST Variante gibt. Hier kommen natürlich Flaschenhälse in Spiel, die das Ergebnis beeinflussen können.

Zunächst die Whois Socket Lösung die sich dem RFC Standard bedient. Der ist so einfach das man mit Telnet das auch tun kann. Die Ip Adresse ist dann die Benutzereingabe. Der Rest vom Service.

image

   1:   Dim res As String = ""
   2:  Dim Tcp As TcpClient = New TcpClient("whois.ripe.net", 43)
   3:  Tcp.Client.Send(
   4:         Encoding.UTF8.GetBytes("188.194.160." + (Int(Rnd(255) * 255)).ToString +
   5:                            Environment.NewLine))
   6:   Using stream = Tcp.GetStream()
   7:         Using reader = New System.IO.StreamReader(stream)
   8:                res = reader.ReadToEnd()
   9:          End Using
  10:  End Using
  11:  Tcp.Close()

Es werden knapp 2 KB Daten übertragen.

die Zweite Lösung nimmt die neuere REST API. Weniger Code geht nicht.

   1:   Dim hc = New HttpClient()
   2:   Dim r As String = Await hc.GetStringAsync
   3:  ("http://apps.db.ripe.net/whois/lookup/ripe/inetnum/188.194.160." +
Int(Rnd(255) * 255).ToString + ".json")
   4:       

Hier kommt nun Json oder XML als Antwort mit auch rund 1,5 bis 2,5 KB.

image

Der Test wurde mehrere Male durchgeführt und dann Überschlagsmäßig gemittelt. Ausreißer wurden dabei weggelassen um externe Einflüsse, vor allem erhöhte Netzwerklast herauszurechnen. Die so ermittelten Antwortzeiten sind in beiden Fällen nahezu ident. Das überrascht mich doch ein wenig. Damit gibt es im Webumfeld keine Gründe mehr auf native Sockets zu wechseln wenn der Webserver per REST die Daten liefern kann.

Kommentare sind geschlossen