Bonjour,
J'ai une application qui fait appelle à des WebServices JAVA. En particulier, lors du Application_OnStart de mon global.asax, j'appelle une librairie qui s'occupe d'appeler un WebService X fois (ce WS prend en entré un paramètre, je l'appel une 12aine de fois). Ce WS me retourne alors à chaque appel un graphe d'objet assez lours. les données bruts retournées par le WS peuvent atteindre plusieurs dizaine de Mo. J'utilise donc la compression (côté JAVA) pour améliorer les perfs.
Seulement, je me retrouve tout de même avec un temps de démarrage de l'appli de 3 à 5 minutes. C'est assez long. Surtout que chaque WS est appelé l'un après l'autre. Je voudrais donc pour encore améliorer tout ça utiliser les appels asynchrones des WS. Seulement, mon PB est que le WS retourne un objet sur lequel j'effectue différents traitement. actuellement mon code est de ce genre :
Seulement en passant en asynchrone, je ne peux plus avoir le retour de mon WS dans ma méthode ChargerDonnesDepuisMO(), le retour se faisant dans la méthode appelé lors du End_ObtenirProduit();
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 public List<Produit> ChargerDonnesDepuisMO() { List<Produit> produits = new List<Produit>(); // Je lis depuis un fichier XML une liste de codes qui seront les paramètres d'entré de mon WS string[] codes = ReadCodesFromXML(); foreach(string str in codes) { JavaWebService jws = new JavaWebService(); Produit pp = jws.ObtenirProduit(str); // traitements dur pp .... produits.Add(pp); } return produits; }
Et ça me pose un problème car l'architecture actuelle de mon appli ne permet pas d'appeler autre chose que la méthode ChargerDonneesDepuisMO().
En plus, le code que je vous montre là est extrement simplifier, en réalité je passe par tout un tas d'assemblys entre la méthode ChargerDonneesDepuisMO et l'appel au WS en lui-même.
Bref, tout ça est un peu confu, mais ce que je voudrais c'est avoir un moyen d'utiliser des WS asynchrone tout en gardant la chaine d'appel identique, c-a-d en appelant uniquement la méthode ChargerDonneesDepuisMO() qui me retournerais une List<Produit>
Partager