Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

  • »
  • Community
  • |
  • Diskussionsforum
Parsen von HTTP User Agents mit .NET
Abt
myCSharp.de - Team

Avatar #avatar-4119.png


Dabei seit:
Beiträge: 16204

Themenstarter:

Parsen von HTTP User Agents mit .NET

beantworten | zitieren | melden

Servus zusammen,

gfoidl und ich haben die letzten Tage einen HTTP User Agent Parser geschrieben, der dem aktuellen Stand von .NET doch ganz gut gerecht wird :-)

Hintergrund war, dass gfoidl im Rahmen der Analyse der Leistung des Forums aufgefallen ist, dass unser bisheriger Parser (UA Parser) doch relativ viel Performance gefressen hat und wir keine so richtig gute, existierende Lösung gefunden haben.
Entsprechend mit Zahlen zu sehen ist das auch in den Benchmarks, in dem wir unseren Code mit anderen Bibliotheken verglichen haben - und doch sehr gut (~50x schneller ohne Caching) abschneiden :-)

GitHub
MyCSharp.HttpUserAgentParser auf GitHub

Auf GitHub gibt es entsprechende Beispiele zur Nuztung sowie zur jeweiligen Integration.
Dem Quellcode kann entnommen werden, welche User Agents aktuell unterstützt werden.

NuGet
Neben dem Parser selbst gibt es zwei weitere Pakete für die Nutzung des Parsers mit einem Cache sowie der direkten Integration mit ASP.NET Core.
MyCSharp.HttpUserAgentParser auf NuGet
MyCSharp.HttpUserAgentParser.MemoryCache auf NuGet
MyCSharp.HttpUserAgentParser.AspNetCore auf NuGet

PS: weil wir zeitlich immer noch nicht dazu kamen den angekündigten Architekturartikel des Forums zu schreiben, kann man das Projekt hier als kleinen Ausschnitt sehen, wie wir arbeiten, und wie wir Software Architektur leben :-)

Grüße,
gfoidl und Abt
- performance is a feature -

Microsoft MVP - @Website - @blog - @AzureStuttgart - github.com/BenjaminAbt
private Nachricht | Beiträge des Benutzers
gfoidl
myCSharp.de - Team

Avatar #avatar-2894.jpg


Dabei seit:
Beiträge: 7572
Herkunft: Waidring

beantworten | zitieren | melden

Hallo zusammen,
Zitat
im Rahmen der Analyse der Leistung des Forums aufgefallen ist, dass unser bisheriger Parser (UA Parser)
Dazu als Ergänzung / Erklärung.

UA Parser kann ziemlich viele User Agents parsen, aber (leider) ist die .NET Bibliothek ein ziemlich direkter Port des JavaScript Projekts. Das macht sich v.a. durch die unzähligen Closures bemerkbar und sind in einem GC-Dump deutlich sichtbar -- siehe Anhang.

Für eine Web-Anwendung hätte ich mir Objekte von Kestrel (Server), MVC, EF Core, etc. erwartet und nicht dass eine "Hilf-Bibliothek" dort so dominant zu sehen ist.
BTW: unser eigener Code, abgesehen vom DbContext, taucht erst relativ weit unten auf und ist in diesem Abschnitt nicht zu sehen.
Attachments
Stellt fachliche Fragen bitte im Forum, damit von den Antworten alle profitieren. Daher beantworte ich solche Fragen nicht per PM.

"Alle sagten, das geht nicht! Dann kam einer, der wusste das nicht - und hat's gemacht!"
private Nachricht | Beiträge des Benutzers