|
|
Veröffentlicht am 11.01.2016 14:37:43
|
|
|
|

ASP.NET Web-API ist eine großartige Technologie. Das Schreiben von Web-APIs ist so einfach, dass viele Entwickler keine Zeit darauf verwenden, ihre Anwendungen zu strukturieren, um eine gute Ausführung zu erzielen. In diesem Artikel werde ich 8 Techniken behandeln, um die Leistung ASP.NET Web-APIs zu verbessern. 1) Das schnellste JSON-Serialisierungstool verwenden Die Serialisierung von JSON hat einen entscheidenden Einfluss auf die Leistung der gesamten ASP.NET Web API. In einem meiner Projekte bin ich für anderthalb Jahre vom JSON.NET Serializer auf ServiceStack.Text umgestiegen. Ich habe gemessen, dass sich die Leistung der Web-API um etwa 20 % verbessert hat. Ich empfehle dir dringend, dieses Serialisierungstool auszuprobieren. Hier sind einige aktuelle Vergleichsdaten zur Leistung beliebter Serialisierungstools.
SerializerPerformanceGraf Quelle: theburningmonk Update: Es scheint, als würde StackOverflow Jil verwenden, ihr bisher angeblich JSON-Serialisierungstool. Testdaten finden Sie auf ihrer GitHub-Seite Jil serializer. 2) Manuelle Serialisierung von JSON aus DataReader Ich habe diesen Ansatz in meinen Projekten angewendet und Leistungsleistungen erhalten. Man kann manuell JSON-Strings aus dem DataReader erstellen und unnötige Objekterstellung vermeiden, sodass man keine Werte aus dem DataReader nehmen und auf Objekte schreiben muss, dann Werte aus diesen Objekten nehmen und den JSON Serializer verwenden, um JSON zu erzeugen. Verwenden Sie StringBuilder, um JSON zu generieren und StringContent am Ende als Inhalt der Antwort in der WebAPI zurückzugeben.
Weitere Wege dazu finden Sie auf Rick Strahls Blog 3) Andere Protokollformate (Protokollpuffer, Message Pack) so weit wie möglich zu verwenden Wenn Sie andere Nachrichtenformate in Ihrem Projekt verwenden können, wie Protocol Buffers oder MessagePacks, anstatt JSON zu verwenden. Sie erhalten einen enormen Leistungsvorteil, nicht nur weil Protokollpuffer sehr schnell in der Serialisierung sind, sondern auch, weil sie in den zurückgegebenen Ergebnissen schneller formatiert werden als JSON. 4) Implementierung von Kompression Nutze GZIP oder Deflate in deiner ASP.NET Web-API. Kompression ist eine einfache und effektive Methode, um die Größe und Reaktionsfähigkeit von Antwortpaketen zu reduzieren. Das ist eine sehr notwendige Funktion, Sie können weitere Artikel über Kompression in meinem Blog lesen ASP.NET Web API GZip Compression ActionFilter mit 8 Codezeilen. 5) Caching verwenden Die Verwendung von Output-Caching in der Web-API-Methode ist tiefgreifend. Zum Beispiel, wenn eine große Anzahl von Nutzern auf Antwortinhalte zugreifen, ändert sich das nur einmal täglich. Wenn Sie manuelles Caching implementieren möchten, zum Beispiel das Speichern von Benutzerpasswörtern ins Gedächtnis, sehen Sie sich meinen Blogbeitrag "Einfache Möglichkeit, Caching in ASP.NET Web-API umzusetzen. 6) Typische ADO.NET wann immer möglich verwenden Manuell geschriebene ADO.NET ist immer noch der schnellste Weg, Werte aus der Datenbank zu erhalten. Wenn dir die Leistung deiner Web-APIs wirklich wichtig ist, dann nutze keine ORMs. Man kann Leistungsvergleiche zwischen den beliebtesten ORMs sehen. ORMMapper
Dapper und handgeschriebener Fetch-Code sind schnell, und tatsächlich sind alle ORMs langsamer als die drei. LLBLGen mit einem Resultset-Cache ist schnell, aber es muss das Resultset erneut iterieren und das Objekt erneut im Speicher instanziieren. 7) Implementierung eines asynchronen Ansatzes in der Web-API Die Nutzung eines asynchronen Web-API-Dienstes erhöht die Anzahl der HTTP-Anfragen, die Web-APIs verarbeiten, dramatisch. Die Implementierung ist einfach: Verwenden Sie einfach das asynchrone Schlüsselwort und ändern Sie den Rückgabe-Werttyp Ihrer Methode zu Task.
8) Gibt mehrere Ergebnismengen und Kombinationen von Mengen zurück Die Reduzierung der Anzahl der Übertragungen ist nicht nur für mehrere Datenbanken vorteilhaft, sondern auch für Web-APIs, die es ermöglichen, die Leistungsfähigkeit von Ergebnissätzen zu nutzen. Das bedeutet, dass Sie mehrere Ergebnissätze aus DataReader extrahieren können, siehe folgenden Democode:
Sie können mehrere Objekte in einer einzigen Antwort aus einer Web-API zurückgeben, versuchen Sie, Ihre zurückgegebenen Objekte zu kombinieren und die folgenden Objekte zurückzugeben:
Dadurch werden HTTP-Anfragen an Ihre WEB-API reduziert. Vielen Dank, dass Sie diesen Artikel gelesen haben.
|
Vorhergehend:SyntaxError: Missing parentheses in call to printNächster:vsftpd, um neue Nutzer hinzuzufügen
|