ASP.NET Web API ist eine großartige Technologie. Das Schreiben von Web-APIs ist so einfach, dass viele Entwickler keine Zeit damit verbringen, ihre Anwendungen zu strukturieren, um eine gute Leistung zu erzielen.
In diesem Artikel stelle ich 8 Techniken zur Verbesserung der Leistung der ASP.NET-Web-API vor.
1) Verwenden Sie das schnellste JSON-Serialisierungstool
JSON-Serialisierung hat einen entscheidenden Einfluss auf die Leistung der gesamten ASP.NET-Web-API. Bei einem meiner Projekte bin ich anderthalb Jahre lang vom JSON.NET-Serialisierungstool auf ServiceStack.Text umgestiegen.
Ich habe gemessen, dass die Leistung der Web-API um etwa 20 % gestiegen ist. Ich empfehle Ihnen dringend, dieses Serialisierungstool auszuprobieren. Hier finden Sie einige aktuelle Vergleichsdaten zur Leistung gängiger Serialisierungstools.
Quelle: theburningmonk
Update: Es scheint, dass StackOverflow Jil verwendet, von dem sie behaupten, dass es das bislang schnellste JSON-Serialisierungstool ist. Testdaten finden Sie auf der GitHub-Seite Jil Serializer.
2) Manuelle Serialisierung von JSON von DataReader
Ich habe diese Methode in meinem Projekt verwendet und Leistungsvorteile erzielt.
Sie können JSON-Strings manuell aus dem DataReader erstellen und unnötige Objekterstellung vermeiden. Auf diese Weise müssen Sie keine Werte aus dem DataReader übernehmen und Objekte schreiben und dann Werte aus diesen Objekten übernehmen Verwenden Sie den JSON-Serializer, um JSON zu generieren.
Verwenden Sie StringBuilder, um JSON zu generieren und StringContent am Ende als Inhalt der Antwort in WebAPI zurückzugeben.
var response = Request.CreateResponse(HttpStatusCode.OK); response.Content = new StringContent(jsonResult, Encoding.UTF8, "application/json"); return response;
Weitere Methoden finden Sie im Blog von Rick Strahl
3) Verwenden Sie so weit wie möglich andere Protokollformate (Protokollpuffer, Nachrichtenpaket)
Wenn Sie können Geben Sie in Ihrem Projekt andere Nachrichtenformate an, z. B. Protocol Buffers oder MessagePack, anstatt JSON zu verwenden.
Sie erhalten enorme Leistungsvorteile, nicht nur, weil die Serialisierung von Protokollpuffern sehr schnell ist, sondern auch, weil die Formatierung der zurückgegebenen Ergebnisse schneller ist als bei JSON.
4) Komprimierung implementieren
Verwenden Sie GZIP oder Deflate in Ihrer ASP.NET-Web-API.
Komprimierung ist eine einfache und effektive Möglichkeit, die Größe des Antwortpakets und die Antwortgeschwindigkeit zu reduzieren.
Dies ist eine sehr notwendige Funktion. Weitere Artikel zur Komprimierung finden Sie in meinem Blog ASP.NET Web API GZip-Komprimierung ActionFilter mit 8 Codezeilen.
5 ) Verwendung von Caching
Die Verwendung von Ausgabe-Caching in Web-API-Methoden ist tiefgreifend, wenn beispielsweise eine große Anzahl von Benutzern auf denselben Antwortinhalt zugreift, der sich nur einmal am Tag ändert.
Wenn Sie manuelles Caching implementieren möchten, z. B. das Zwischenspeichern von Benutzerkennwörtern im Speicher, lesen Sie bitte meinen Blog-Beitrag Einfache Möglichkeit, Caching in der ASP.NET-Web-API zu implementieren.
6) Verwenden Sie es so viel wie möglich Typisches ADO.NET
Manuell geschriebenes ADO.NET ist immer noch der schnellste Weg, Werte aus der Datenbank abzurufen. Wenn Ihnen die Web-API-Leistung wirklich wichtig ist, dann verwenden Sie keine ORMs.
Sie können einen Leistungsvergleich zwischen den beliebtesten ORMs sehen.
Dapper 和hand-written fetch code 很快,果不其然,所有的ORM都比这三种慢.
带有resultset缓存的LLBLGen 很快,但它要重新遍历一遍resultset并重新再内存中实例化对象。
7)在 Web API 中实现异步方法
使用异步的 Web API 服务大幅增加 Web API 对于Http 请求的处理数量。
实现是简单的,只需使用 async 的关键字和 将你方法的返回值类型改为 Task 即可。
[HttpGet] public async Task OperationAsync() { await Task.Delay(2000); }
8) 返回多个结果集和集合的组合
减少传输的次数不仅多数据库有好处,对于 Web API同样 ,你才有可能使用结果集的功能。
也就是说你可以从DataReader去提取多个结果集 参见以下演示代码:
// read the first resultset var reader = command.ExecuteReader(); // read the data from that resultset while (reader.Read()) { suppliers.Add(PopulateSupplierFromIDataReader( reader )); } // read the next resultset reader.NextResult(); // read the data from that second resultset while (reader.Read()) { products.Add(PopulateProductFromIDataReader( reader )); }
你可以在一个 Web API 的一次响应中返回多个对象,试着将你的返回的多个对象进行组合后返回 如下:
public class AggregateResult { public long MaxId { get; set; } public List<Folder> Folders{ get; set; } public List<User> Users{ get; set; } }
这种方式将减少对你的WEB API的HTTP请求。

C# und .NET-Laufzeit arbeiten eng zusammen, um Entwickler effiziente, leistungsstarke und plattformübergreifende Entwicklungsfähigkeiten zu befähigen. 1) C# ist eine vom Typ befindliche und objektorientierte Programmiersprache, die so konzipiert ist, dass sie nahtlos in das .NET-Framework integriert werden. 2) Die .NET-Laufzeit verwaltet die Ausführung von C# Code, bietet Müllsammlung, Type Sicherheit und andere Dienste und sorgt für einen effizienten und plattformübergreifenden Betrieb.

Um die C# .NET -Entwicklung zu starten, müssen Sie: 1. Verstehen Sie das Grundkenntnis von C# und die Kernkonzepte des .NET -Frameworks; 2. Meister Sie die grundlegenden Konzepte von Variablen, Datentypen, Kontrollstrukturen, Funktionen und Klassen; 3.. 4. Mit Debugging -Techniken und Leistungsoptimierungsmethoden für häufige Fehler vertraut sein. Mit diesen Schritten können Sie nach und nach in die Welt von C#.NET eindringen und effiziente Anwendungen schreiben.

Die Beziehung zwischen C# und .NET ist untrennbar miteinander verbunden, aber nicht dasselbe. C# ist eine Programmiersprache, während .NET eine Entwicklungsplattform ist. C# wird verwendet, um Code zu schreiben, in .NETs Intermediate Language (IL) zu kompilieren und von der .NET -Laufzeit (CLR) ausgeführt zu werden.

C#.NET ist immer noch wichtig, da es leistungsstarke Tools und Bibliotheken bietet, die mehrere Anwendungsentwicklung unterstützen. 1) C# kombiniert .NET Framework, um die Entwicklung effizient und bequem zu machen. 2) Mechanismus zum Typensicherheit und Müllsammlung von C#erhöht die Vorteile. 3) .NET bietet eine plattformübergreifende laufende Umgebung und eine reichhaltige APIs, wodurch die Flexibilität der Entwicklung verbessert wird.

C#.NETisversatileforbothwebanddesktopdevelopment.1)Forweb,useASP.NETfordynamicapplications.2)Fordesktop,employWindowsFormsorWPFforrichinterfaces.3)UseXamarinforcross-platformdevelopment,enablingcodesharingacrossWindows,macOS,Linux,andmobiledevices.

C# und .NET passen sich durch kontinuierliche Aktualisierungen und Optimierungen an die Bedürfnisse neuer Technologien an. 1) C# 9.0 und .NET5 Führen Sie den Datensatztyp und die Leistungsoptimierung ein. 2) .NETCORE verbessert die native und containerische Unterstützung von Cloud. 3) ASP.NetCore integriert sich in moderne Webtechnologien. 4) ML.NET unterstützt maschinelles Lernen und künstliche Intelligenz. 5) Asynchrone Programmierung und Best Practices verbessern die Leistung.

C#.NetissoBableFoREenterPrise-Level Applications-WithemicrosoftCosystemDuetoitsStrongtyPing, Richlibrary, Androbustperformance.

Der Programmierungsprozess von C# in .NET enthält die folgenden Schritte: 1) Schreiben von C# Code, 2) Kompilieren in eine mittlere Sprache (IL) und 3), die durch die .NET -Laufzeit (CLR) ausführt. Die Vorteile von C# in .NET sind die moderne Syntax, das leistungsstarke Typsystem und die enge Integration in das .NET -Framework, das für verschiedene Entwicklungsszenarien geeignet ist, von Desktop -Anwendungen bis hin zu Webdiensten.


Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

AI Hentai Generator
Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

Heiße Werkzeuge

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

MinGW – Minimalistisches GNU für Windows
Dieses Projekt wird derzeit auf osdn.net/projects/mingw migriert. Sie können uns dort weiterhin folgen. MinGW: Eine native Windows-Portierung der GNU Compiler Collection (GCC), frei verteilbare Importbibliotheken und Header-Dateien zum Erstellen nativer Windows-Anwendungen, einschließlich Erweiterungen der MSVC-Laufzeit zur Unterstützung der C99-Funktionalität. Die gesamte MinGW-Software kann auf 64-Bit-Windows-Plattformen ausgeführt werden.

Dreamweaver CS6
Visuelle Webentwicklungstools

mPDF
mPDF ist eine PHP-Bibliothek, die PDF-Dateien aus UTF-8-codiertem HTML generieren kann. Der ursprüngliche Autor, Ian Back, hat mPDF geschrieben, um PDF-Dateien „on the fly“ von seiner Website auszugeben und verschiedene Sprachen zu verarbeiten. Es ist langsamer und erzeugt bei der Verwendung von Unicode-Schriftarten größere Dateien als Originalskripte wie HTML2FPDF, unterstützt aber CSS-Stile usw. und verfügt über viele Verbesserungen. Unterstützt fast alle Sprachen, einschließlich RTL (Arabisch und Hebräisch) und CJK (Chinesisch, Japanisch und Koreanisch). Unterstützt verschachtelte Elemente auf Blockebene (wie P, DIV),

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung