2010-08-04 6 views
2

J'ai une application scientifique locale qui utilise des threads pour traiter des pièces indépendantes d'un grand calcul. Mon groupe aimerait que cela devienne une application web, alors maintenant je réfléchis à la façon de le porter (donc s'il vous plaît, pardonnez toute déclaration complète). J'utilise Google App Engine pour prendre en charge la partie "Web", mais je suis toujours en train de déterminer quelles autres traductions sont appropriées. Ma première inclination était de laisser le calcul complètement tel quel (par exemple, digérer certaines données de forme web dans le format approprié, le passer dans le calculateur qui engendre des threads, etc.).Google App Engine: tâches et threads?

Cependant, je lis aussi sur Queue s + TaskOptions - ce genre de ressemble à ce que je devrais utiliser au lieu de ExecutorService + Callable. Les sous-calculs individuels peuvent prendre un peu de temps à traiter (bien qu'ils puissent aussi différer considérablement en termes de temps), donc je suppose que, idéalement, je voudrais qu'un utilisateur demande le calcul entier et soit ensuite amené à une page qui charge les résultats à mesure qu'ils deviennent disponibles.

Est-ce que la bonne chose à utiliser est Queue s + TaskOptions? Si non, qu'est-ce que c'est? Si oui, y a-t-il des exemples parallèles pratiques à ce que je cherche à faire? Enfin, mon groupe a quelques scrupules à court terme à propos de la publication à grande échelle des calculs internes, de sorte que ses détails sont tous côté serveur - cela devrait-il apaiser ces inquiétudes? En fin de compte (après certaines publications, etc.), nous prévoyons de rendre ces éléments internes disponibles et probablement que la version Web pourrait déplacer le côté client de calcul. Y a-t-il un moyen préférable de mettre en œuvre maintenant qui rendra cette future traduction plus simple? Ou cela ne vaut-il même pas la peine de s'inquiéter (puisque j'ai déjà une version "côté client" dans mon application locale)?

Répondre

3
  1. Toutes les demandes (y compris les tâches) dans le moteur de l'application ont une limite de temps de 30 secondes. Si vos calculs prennent plus de temps, vous devrez trouver un moyen de les décomposer en plus petits morceaux. La tache douce d'App Engine est les applications Web, pas le nombre croquant.

  2. Si vous souhaitez partager du code entre le client et le serveur, vous pouvez utiliser GWT. (google web toolkit) Il vous permettra d'écrire un client en utilisant le code source java qu'il convertira ensuite en javascript. Ce serait une méthode de réutilisation du code de calcul de nombre que vous avez déjà.

2

Vous ne pouvez pas créer de thread sur App Engine. Les files d'attente de tâches + les options de tâches seraient le chemin à parcourir.

Si vous voulez garder les choses à l'intérieur - alors le garder du côté du serveur serait la chose la plus sûre à faire maintenant. Cependant, vous pouvez envisager d'exposer votre flux de travail en tant que service, de sorte qu'à l'avenir les clients puissent parler au même service.

+0

okay, bon à savoir re threads - un aperçu sur les autres parties de ma question? – Carl