Je dois appeler un service web reposant avec un seul paramètre de l'événement d'insertion dans une table de base de données SQL Server. Je sais que ce n'est pas la conception idéale, mais je n'ai aucun contrôle sur l'un ou l'autre point final. L'utilisation de cette fonctionnalité ne dépassera pas 100 événements/min à charge maximale.Comment appeler un service reposant de la détente SQL Server
Je suis ouvert à d'autres idées mais les deux options que j'ai trouvées étaient;
- déclencheur d'insertion - Service Broker - Windows .NET service pour appeler le service Web
- C# déclencheur CLR pour appeler le service reposant directement
Je travaille sur l'option 2 et a créé un déclencheur CLR SQL projet dans Visual Studio mais après avoir ajouté les références à System.Web
le projet ne construira pas et il n'y a pas d'erreurs de construction, vs dit simplement "build failed" dans la fenêtre de sortie.
Existe-t-il des restrictions concernant les bibliothèques CLR pouvant être utilisées dans un déclencheur CLR? L'utilisation du courtier de services me fait peur puisque je n'ai travaillé que sur un projet avec le courtier de service et que j'ai trouvé cela très difficile à mettre en œuvre.
Toute idée sur la façon d'appeler le service Web à partir de l'événement déclencheur serait grandement appréciée.
David
Pourquoi diable ne besoin d'une référence vous 'System.Web' dans un déclencheur CLR SQL ??? Les déclencheurs sont des travailleurs d'arrière-plan - et 'System.Web' contient des contrôles d'interface graphique basés sur des formulaires Web, principalement - très peu clair pourquoi vous avez besoin de cette référence.Et oui: le SQL CLR a un ensemble très limité d'assemblys qui sont déjà déployés dans SQL Server –
En outre: un déclencheur est exécuté dans le contexte et la portée de l'instruction qui le déclenche. Un déclencheur devrait être ** très agile ** - petit et rapide. Vous ne devriez jamais appeler des services externes à partir d'un déclencheur, vous ne devriez pas inclure de curseurs dans les déclencheurs - toutes ces choses vont tuer les performances de votre système et sont vraiment vraiment horriblement mauvaises à faire. Essayez de repenser votre situation et assurez-vous que le déclencheur ne fait que de très petites petites tâches - pas de lourdes charges, pas de calculs longs, pas d'appels externes, etc ... –
Je copiais les références d'un projet existant qui appelle le service reposant. Je n'étais pas sûr de ceux dont j'avais besoin et suis allé avec eux tous, le code pour appeler le service Web utilise '(HttpWebRequest) WebRequest.Create (paramètres EndPoint +);'. Je pourrais être en mesure d'utiliser simplement System.Net – David