2010-02-18 4 views
3

J'ai un service Web SOAP et j'essaie de comprendre comment enregistrer/consigner les 10 dernières demandes pour chaque utilisateur. Chaque utilisateur doit envoyer son utilisateur/passe dans chaque requête, il est donc facile de savoir de qui provient la requête. Avec ces 10 dernières requêtes enregistrées, mon objectif est de développer une sorte de page qui leur permettra de se connecter avec leurs informations d'identification et d'afficher la requête brute, le message SOAP réel, les informations d'en-tête http et tout ce que je peux penser .Enregistrement des 10 derniers appels de service Web

Le but est de permettre aux gens de résoudre les leurs propres problèmes de connexion au lieu d'avoir à me contacter à chaque fois qu'ils ne peuvent pas se connecter, ont des problèmes pour formater leur demande, etc ....

Ma première pensée était de stocker toutes ces informations dans la mémoire dans un hashtable ou quelque chose, mais cela peut avoir des problèmes d'évolutivité lorsque nous avons des centaines/milliers d'utilisateurs qui frappent le service Web.

Nous pourrions utiliser notre base de données pour stocker ces demandes. Au lieu de cliquer sur la base de données à chaque fois, il se peut que je devrais créer un mécanisme de "tampon" qui ne mettra à jour la base de données qu'une fois que le tampon aura atteint un certain nombre de requêtes. Y a-t-il une bibliothèque ou un mécanisme existant qui le fera?

Nous ne pouvons pas stocker ces demandes sur le système de fichiers sur la machine hébergeant le service Web. Étant donné que ces demandes peuvent potentiellement contenir des informations sensibles, c'est une décision commerciale que je devrai contourner.

Ou peut-être y a-t-il une meilleure façon de réaliser ce que j'essaie de faire?

+0

Le meilleur moyen serait d'utiliser WCF. La fonction de traçage est disponible hors de la boîte. –

+0

Si j'avais le choix, je réécrirais le service Web actuel en utilisant WCF. Malheureusement, ce n'est pas un choix que je peux faire. – nivlam

Répondre

2

Je vois deux alternatives.

1.- Mélangez vos deux approches: Créez la table de hachage en mémoire et, quand elle atteint une limite (disons 1000 requêtes), poussez-les dans la base de données. Pas besoin d'une bibliothèque spéciale pour cela. L'hastable est votre tampon de mémoire.

2.- Mettre en place un processus totalement différent sniffing the requests, et offrir aux clients de télécharger les captures de paquets (ou traiter et les présenter vous-même.) Ceci est sans doute plus de travail, mais sépare l'enregistrement des demandes de votre application. Vous pouvez même ensuite déplacer le renifleur vers une autre machine si la charge le demande.

Questions connexes