Question

Nous examinons certains problèmes de performances avec un service web que nous appelons. Je suis parvenu à un code d'enregistrement du temps lieu à travers les méthodes de WebService réel lui-même, mais maintenant il est à la recherche comme si le temps réel qu'il faut pour sérialiser le jeu de résultats pourrait être un problème?

Alors je cherche à enregistrer combien de temps ces données sérialisation prend, mais je suis en difficulté pour obtenir des résultats ..

Voici un exemple de 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 qui sont retournés sont décorées avec [OnSerializing ()] et [OnSerialized ()] attributs, mais cela ne fonctionne pas. J'ai aussi essayé de timings de capture dans la méthode en utilisant un bloc try..finally, mais ne pense pas que ce soit le temps d'enregistrement de sérialisation réelle soit?

Il a été suggéré que je puisse avoir à mettre en œuvre ma propre sérialiseur (ce qui serait tout simplement timings enregistrement, puis appeler le sérialiseur par défaut de toute façon), mais se demandait si cela était la seule option que j'ai?

Les pensées très apprécié.

Était-ce utile?

La solution

Vous pouvez utiliser un personnalisée SoapExtension . Dans la méthode ProcessMessage (), vous pouvez voir 4 événements, avant et après la sérialisation et avant et après désérialisation. Démarrez un chronomètre dans les Befores, fin sur les Afters, puis stocker le temps loin quelque part.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top