2010-03-22 33 views
3

Nous avons une architecture principalement RESTful pour notre produit. Cela nous permet d'implémenter presque toutes les fonctionnalités requises, à l'exception de cette nouvelle exigence.Meilleure façon d'implémenter une opération de type batch dans une architecture RESTful?

J'ai besoin d'implémenter une page qui permet à l'utilisateur d'effectuer des opérations DB à grande échelle de manière synchrone. Ils peuvent arrêter l'opération entre les deux, s'ils se rendent compte qu'ils ont fait une erreur (plutôt que d'attendre qu'elle se termine et fasse une opération d'annulation)

Je me demandais si quelqu'un pouvait donner des indications sur ce qui serait le meilleur moyen de mettre en œuvre une telle fonctionnalité?

À la votre! Nirav

Répondre

1

Que diriez-vous d'une ressource qui encapsule un ensemble d'opérations de traitement par lots? La création de la ressource signifie le lancement des opérations (les données indiquant ce que les opérations doivent faire sont soumises via POST). La mise à jour de la ressource permet de l'arrêter ou de la modifier pendant le traitement.

0

Je lancerais la grande opération dans un fil séparé. Montrez à l'utilisateur un statut constamment mis à jour du fil, avec un bouton Annuler. Si l'utilisateur clique sur le bouton Annuler, vous tuez le fil.

C'est la façon dont j'ai mis des choses semblables dans le passé.

L'idée est de leur donner le contrôle de retour immédiatement, mais ne les laissez pas faire quoi que ce soit d'autre que le thread est terminé, sauf annuler.

En termes génériques, vous avez besoin d'une « file d'attente » et une façon de gérer la file d'attente.