2

Dans une application ASP.NET, j'ai un petit nombre d'opérations assez complexes et fréquemment utilisées à exécuter sur une base de données. Dans ces opérations, une ou plusieurs tables ont besoin de mises à jour ou d'insertions basées sur une évaluation logique des paramètres d'entrée et des valeurs de certaines tables. J'ai maintenu une séparation de la logique et l'accès aux données, l'opération ressemble actuellement à ceci:Procédures stockées CLR

  1. Demande reçue du client
  2. couche d'affaires invoque couche de données pour récupérer des données à partir base de données
  3. des processus de la couche d'affaires résultat et détermine l'opération à exécuter
  4. couche d'affaires invoque opération de données appropriée
  5. Réponse envoyée au client

Comme vous pouvez le voir, le client est maintenu en attente pendant que deux demandes distinctes sont faites à la base de données. En cherchant une solution à ce problème, j'ai trouvé des procédures stockées CLR, mais je ne suis pas sûr d'avoir la bonne idée de leur utilité.

J'ai écrit un remplacement pour le code ci-dessus qui place notamment les étapes 2-4 dans un SPR CLR. Ma compréhension est que le SP sera exécuté localement par SQL Server et qu'un seul appel est effectué sur le serveur.

Ma question est fondamentalement, est-ce l'utilisation prévue de SPR CLR ou est-ce que je manque quelque chose? Je réalise que c'est un peu un compromis structurellement, donc s'il y a une meilleure façon de le faire, j'aimerais l'entendre.

Répondre

3

Les procédures CLR sont destinées à effectuer un traitement de requête avancé où il serait très difficile à une procédure stockée de faire. J'ai rencontré très peu de situations où ils étaient beaucoup plus bénéfiques. Ils ne sont pas destinés au travail de couche de gestion, bien que vous puissiez le faire. Je ne voudrais pas tout intégrer dans le processus CLR; la séparation des couches est très bénéfique dans une application. Si vous avez besoin d'accélérer votre code, consultez les profileurs de mémoire/code disponibles qui peuvent vous aider à identifier les points problématiques dans votre code. Dans la mesure du possible, remplacez le code côté serveur par les rappels AJAX, les services Web, etc., car cela accélèrerait vraiment le processus (au moins, cela vous permettrait de faire plus de travail asynchrone).

HTH.