J'ai hérité d'une application C# .NET qui parle à un service Web et le service Web parle à une base de données Oracle. J'ai besoin d'ajouter une fonction d'exportation à l'interface utilisateur pour produire une feuille de calcul Excel de certaines données.Quel est le meilleur moyen de transférer un grand ensemble de données sur un service Web ASMX?
J'ai créé une fonction de service Web pour exécuter une requête de base de données, charger les données dans un DataTable, puis les renvoyer, ce qui fonctionne correctement pour un petit nombre de lignes. Cependant, il y a suffisamment de données dans l'exécution complète pour que l'application cliente se verrouille pendant quelques minutes, puis renvoie une erreur de délai d'attente. Évidemment, ce n'est pas la meilleure façon de récupérer un tel ensemble de données. Avant d'aller de l'avant et de trouver une façon douteuse de diviser l'appel, je me demande s'il y a déjà quelque chose en place qui peut gérer cela. En ce moment, je pense à une fonction startExport appelant ensuite une fonction next50Rows jusqu'à ce qu'il n'y ait plus de données, mais comme les services web sont sans état, cela signifie que je vais devoir garder une sorte de numéro d'identification et gérer le autorisations associées. Cela voudrait dire que je n'ai pas besoin de charger l'intégralité de l'ensemble de données dans la mémoire du serveur web, ce qui est une bonne chose.
Donc, si quelqu'un connaît un meilleur moyen de récupérer une grande quantité de données (dans un format de table) sur un service Web ASNM, s'il vous plaît faites le moi savoir!
Combien de données? Êtes-vous sûr que c'est la quantité de données, pas possible la requête ou quelque chose d'autre qui cause cela? – cdonner
Il pourrait s'agir de la requête, c'est seulement quelques milliers de lignes de données. Il ne revient qu'à environ 100k/sec sur un réseau 100Mbps. Mais j'imagine que le problème est toujours le même - les données mettent beaucoup de temps à arriver, l'application cliente ne reçoit aucun retour pour savoir ce qui se passe, donc elle finit par arriver à expiration. – Malvineous