Nous examinons certains problèmes de performances avec un service Web que nous appelons. J'ai réussi à placer le code d'enregistrement du temps dans toutes les méthodes du service web proprement dit, mais maintenant il semble que le temps réel nécessaire pour sérialiser le jeu de résultats pourrait être un problème?Est-il possible d'enregistrer le temps nécessaire pour sérialiser les objets renvoyés par un service Web?
Alors je cherche à enregistrer combien de temps sérialisation ces données prend, mais je suis mal à obtenir des résultats ..
Voici un exemple méthode de service web, nous avons:
[AuthExtension]
[WebMethod]
[SoapHeader("AuthHeader", Direction = SoapHeaderDirection.In)]
public ResultSet CheckAvailability(FareSelections fareSelections)
{
ResultSet results = null;
results = Logic.CheckAvailability(fareSelections, AuthHeader.Token, timeLogger);
return results;
}
J'ai essayé , en plaçant des méthodes dans la classe renvoyée qui sont décorées avec les attributs [OnSerializing()] et [OnSerialized()], mais cela ne fonctionne pas. J'ai également essayé de capturer les timings dans la méthode en utilisant un bloc try..finally, mais je ne pense pas que ce soit l'enregistrement du temps de sérialisation réel non plus?
Il a été suggéré que je devrais implémenter mon propre sérialiseur (qui enregistrerait simplement les timings et ensuite appeler le sérialiseur par défaut de toute façon), mais je me demandais juste si c'était la seule option que j'ai?
Des pensées très appréciées.
Cela pourrait être la voie à suivre .. Je vais placer ma classe TimeLogger là-bas et l'appellera quand le message .Stage est BeforeSerialize et encore une fois lorsque le message.Stage est AfterSerialize - merci beaucoup pour cette suggestion –
Bravo, cela nous a permis d'identifier que la sérialisation des résultats prend> 30 secondes pour les grosses recherches ... maintenant pour en trouver une plus efficace façon de sérialiser cette information et de l'obtenir à l'extrémité avant. Merci beaucoup pour la réponse! –