ASP.NET Web API er en fantastisk teknologi. At skrive web-API'er er så nemt, at mange udviklere ikke bruger tid på at strukturere deres applikationer for at opnå god eksekveringsydelse. I denne artikel vil jeg dække 8 teknikker til at forbedre ydeevnen af ASP.NET web-API'er. 1) Brug det hurtigste JSON-serialiseringsværktøj Serialiseringen af JSON har en afgørende indvirkning på ydeevnen af hele ASP.NET Web API'en. I et af mine projekter skiftede jeg fra JSON.NET serializer til ServiceStack.Text i halvandet år. Jeg har målt, at ydeevnen af Web API'en er forbedret med omkring 20%. Jeg kan varmt anbefale, at du prøver dette serialiseringsværktøj. Her er nogle nylige sammenligningsdata om ydeevnen af populære serialiseringsværktøjer.
SerializerPerformanceGraf Kilde: theburningmonk Opdatering: Det ser ud til, at StackOverflow bruger Jil, deres påståede JSON-serialiseringsværktøj til dato. Testdata kan findes på deres GitHub-side Jil serializer. 2) Manuelt serialisere JSON fra DataReader Jeg har brugt denne tilgang i mine projekter og har modtaget præstationsfordele. Du kan manuelt oprette JSON-strenge fra DataReader og undgå unødvendig objektoprettelse, så du ikke behøver at tage værdier fra DataReader og skrive til objekter, og derefter tage værdier fra disse objekter og bruge JSON Serializer til at generere JSON. Brug StringBuilder til at generere JSON og returner StringContent til sidst som indholdet af svaret i WebAPI'en.
Du kan se flere måder at gøre dette på Rick Strahls blog 3) Brug andre protokolformater (protokolbuffer, beskedpakke) så meget som muligt Hvis du kan bruge andre beskedformater i dit projekt, såsom Protocol Buffers eller MessagePacks, i stedet for at bruge JSON. Du får en stor ydelsesfordel, ikke kun fordi protokolbuffere er meget hurtige i serialisering, men også fordi de er formateret hurtigere end JSON i de returnerede resultater. 4) Implementér komprimering Brug GZIP eller Deflate i dit ASP.NET Web API. Komprimering er en simpel og effektiv måde at reducere størrelsen og responsiviteten af responspakker. Dette er en meget nødvendig funktion, du kan læse flere artikler om komprimering på min blog ASP.NET Web API GZip compression ActionFilter med 8 linjer kode. 5) Brug caching Brugen af output caching i Web API-metoden er dybtgående. For eksempel, hvis et stort antal brugere får adgang til svarindhold, ændres det kun én gang om dagen. Hvis du vil implementere manuel caching, som for eksempel at cache brugeradgangskoder til hukommelsen, se mit blogindlæg Simpel måde at implementere caching i ASP.NET Web API. 6) Brug typisk ADO.NET når det er muligt Manuelt skrevet ADO.NET er stadig den hurtigste måde at hente værdier fra databasen på. Hvis ydeevnen af dine web-API'er er virkelig vigtig for dig, så brug ikke ORM'er. Du kan se performance-sammenligninger mellem de mest populære ORM'er. ORMMapper
Elegant og håndskrevet fetch-kode er hurtige, og ganske rigtigt, alle ORM'er er langsommere end de tre. LLBLGen med en resultset-cache er hurtig, men den skal gentage resultsset og instansiere objektet i hukommelsen igen. 7) Implementér en asynkron tilgang i Web API'en Brugen af en asynkron Web API-tjeneste øger dramatisk antallet af HTTP-forespørgsler, som Web API'er behandler. Implementeringen er simpel, brug bare det asynkrone nøgleord og ændr returværditypen for din metode til Opgave.
8) Returnerer flere resultatsæt og kombinationer af sæt At reducere antallet af overførsler er ikke kun gavnligt for flere databaser, men også for web-API'er, som giver dig mulighed for at udnytte kraften i resultatsæt. Det betyder, at du kan udtrække flere resultatsæt fra DataReader, se følgende demokode:
Du kan returnere flere objekter i ét svar fra et web-API, prøv at kombinere dine returnerede objekter og returner følgende objekter:
Dette vil reducere HTTP-forespørgsler til din WEB API. Tak fordi du læste denne artikel.
|