ASP.NET Web API to świetna technologia. Pisanie API webowych jest tak proste, że wielu programistów nie poświęca czasu na strukturyzację swoich aplikacji, by uzyskać dobrą wydajność wykonawczą. W tym artykule omówię 8 technik poprawy wydajności ASP.NET API webowych. 1) Użyj najszybszego narzędzia do serializacji JSON Serializacja JSON ma kluczowy wpływ na wydajność całego ASP.NET Web API. W jednym z moich projektów przeszedłem z JSON.NET serializatora na ServiceStack.Text na półtora roku. Zmierzyłem, że wydajność Web API poprawiła się o około 20%. Gorąco polecam wypróbować to narzędzie do serializacji. Oto kilka najnowszych danych porównawczych dotyczących wydajności popularnych narzędzi do serializacji.
SerializerPerformanceGraf Źródło: theburningmonk Aktualizacja: Wygląda na to, że StackOverflow używa Jil, swojego dotychczas deklarowanego narzędzia do serializacji JSON. Dane testowe można znaleźć na ich stronie GitHub Jil serializer. 2) Ręczna serializacja JSON z DataReader Stosowałem to podejście w moich projektach i uzyskałem korzyści z wydajności. Możesz ręcznie tworzyć ciągi JSON z DataReadera i unikać niepotrzebnego tworzenia obiektów, dzięki czemu nie musisz pobierać wartości z DataReadera i zapisywać do obiektów, a następnie pobierać wartości z tych obiektów i używać JSON Serializer do generowania JSON. Użyj StringBuildera, aby wygenerować JSON i zwrócić StringContent na końcu jako treść odpowiedzi w WebAPI.
Więcej sposobów na to znajdziesz na blogu Ricka Strahla 3) Używanie innych formatów protokołów (bufor protokołu, pakiet wiadomości) tak często, jak to możliwe Jeśli możesz użyć innych formatów wiadomości w swoim projekcie, takich jak Protocol Buffers czy MessagePacks, zamiast używać JSON. Uzyskasz ogromną przewagę wydajnościową, nie tylko dlatego, że protokołu są bardzo szybkie w serializacji, ale także dlatego, że są formatowane szybciej niż JSON w zwróconych wynikach. 4) Implementacja kompresji Użyj GZIP lub Deflate w swoim ASP.NET Web API. Kompresja to prosty i skuteczny sposób na zmniejszenie rozmiaru i responsywności pakietów odpowiedzi. To bardzo potrzebna funkcja, możesz przeczytać więcej artykułów o kompresji na moim blogu ASP.NET Web API GZip kompresji ActionFilter z 8 linijkami kodu. 5) Korzystanie z buforowania Wykorzystanie buforowania wyjściowego w metodzie Web API jest bardzo ważne. Na przykład, jeśli duża liczba użytkowników korzysta z treści odpowiedzi, zmienia się to tylko raz dziennie. Jeśli chcesz wdrożyć ręczne buforowanie, na przykład buforowanie haseł użytkowników w pamięci, zobacz mój wpis na blogu Prosty sposób implementacji buforowania w ASP.NET Web API. 6) Używaj typowych ADO.NET, kiedy tylko to możliwe Ręcznie zapisane ADO.NET to nadal najszybszy sposób na uzyskanie wartości z bazy danych. Jeśli wydajność twoich webowych API jest dla ciebie naprawdę ważna, to nie używaj ORM. Można zobaczyć porównania wydajności między najpopularniejszymi ORM-ami. ORMMapper
Dapper i ręcznie pisany kod pobierania są szybkie, a rzeczywiście, wszystkie ORM-y są wolniejsze niż te trzy. LLBLGen z pamięcią podręczną zbioru wyników jest szybki, ale musi ponownie powtórzyć zbiór wyników i ponownie instancjonować obiekt w pamięci. 7) Implementacja podejścia asynchronicznego w Web API Korzystanie z asynchronicznej usługi Web API znacząco zwiększa liczbę żądań HTTP przetwarzanych przez Web API. Implementacja jest prosta, wystarczy użyć asynchronicznego słowa kluczowego i zmienić typ wartości zwrotnej metody na Task.
8) Zwraca wiele zbiorów wyników oraz kombinacji zbiorów Zmniejszenie liczby transferów jest korzystne nie tylko dla wielu baz danych, ale także dla Web API, które pozwalają wykorzystać potencjał zestawów wyników. Oznacza to, że możesz wyodrębnić wiele zestawów wyników z DataReader, zobacz poniższy kod demonstracyjny:
Możesz zwrócić wiele obiektów w jednej odpowiedzi z Web API, spróbuj połączyć zwrócone obiekty i zwróć następujące obiekty:
To zmniejszy liczbę żądań HTTP do Twojego WEB API. Dziękuję za przeczytanie tego artykułu.
|