C # - Quelles sont les meilleures pratiques / astuces pour ADO.NET?
J'ai décidé de ne pas utiliser un orm et va utiliser des droites ADO.NET pour mon projet. Je sais je sais sa va prendre plus de temps à programmer mais je veux juste le chargement des pages à grande vitesse, même à l'heure de pointe.
source d'informationauteur user161433
Vous devez vous connecter pour publier un commentaire.
Une erreur, je vois répété maintes et maintes fois:
L'instanciation et la configuration de tout (DbConnection, DbCommand, DbParameters) à l'intérieur d'une méthode qui est appelée à plusieurs reprises dans une boucle serrée.
La plupart du temps, vous pouvez restructurer ces variables locales, comme les membres de la classe de l'instanciation d'eux qu'une seule fois et de ne garder que les mises à jour de DbParameters à l'intérieur de la méthode.
Mis à JOUR pour inclure des exemples de code demandé dans les commentaires
Avertissement:
C'est un moyen rapide assemblés échantillon pour seul but de démontrer le point sur le mouvement répétitif des trucs hors de la boucle.
Les autres meilleures pratiques ne sont pas nécessairement mis en œuvre.
Sur cette première mise en œuvre, chaque chose est mis en place chaque fois que la méthode est appelée:
Nous passons maintenant à la configuration d'objets de construction de la laisser sortir de la boucle:
Ont un look à la L'amélioration de .NET Application de Performances et d'Évolutivité livre (disponible gratuitement en ligne, en ANGLAIS). Il y a un tout le chapitre sur l'amélioration de ADO.NET les performances.
Être très intelligent à propos de la gestion de la connexion. Ouverture d'une connexion DB peut être très cher, essayez donc de garder cela à l'esprit lors de l'écriture de la base de données de la couche d'accès.
Si vous n'allez pas utiliser un ORM, êtes-vous aussi ne va pas mettre en cache vos données? C'est un grand avantage de l'utilisation d'un ORM. Si il n'y a pas de cache de données, vous aurez besoin de chercher des moyens pour mettre en cache le code HTML/JavaScript. Ceci peut être accompli en utilisant OutputCache directive et SqlDependency. Ou par la publication statique fichiers HTML et JavaScript. De toute façon, vous serez en mesure de gérer de charge plus élevée si vous n'êtes pas constamment frapper la base de données à chaque requête.
Quelques liens:
ASP.NET Site Web de l'Amélioration de la Performance
http://www.codeproject.com/KB/aspnet/aspnetPerformance.aspx
10 ASP.NET les Performances et l'Évolutivité des Secrets
http://www.codeproject.com/KB/aspnet/10ASPNetPerformance.aspx
Omar AL Zabir blog sur ASP.NET Ajax et .NET 3.5
http://msmvps.com/blogs/omar/archive/tags/performance/default.aspx
L'article Martin des liens vers est excellent. Je voudrais simplement ajouter que vous voulez absolument utiliser un DataReader au lieu d'un DataSet (j'adore les jeux de données, mais pas pour des raisons de performances).
Voir ces articles:
ADO.NET et les Performances de SQL Server Conseils
Le réglage .NETTE des Performances de l'Application
ADO.NET Performance