2010-10-29 28 views
2

Un ami et moi aimerions créer un site Web pour manipuler les données Facebook.Azure rôle web PHP, F # rôle de travailleur: développement sur différentes machines

La structure est:

  • un rôle Web PHP (contient la page Web, l'utilisateur connexion OAuth, interagit avec les files d'attente, et interagit avec la base de données SQL Azure)
  • un rôle de travailleur F # (fait des statistiques et assez lourds extractions de données)

Le processus est (en supposant un nouvel utilisateur):

  • L'utilisateur arrive sur la page Web et se connecte à Facebook via OAuth, le rôle Web PHP publie ensuite un message dans une file d'attente worktodo avec les informations de connexion et le jeton. Le rôle de travail F # lit le message de la file d'attente worktodo et commence à faire des calculs de données (en utilisant l'API Facebook) et des statistiques, puis il écrit les résultats dans une base de données SQL Azure. Enfin, il envoie un message à la file d'attente Workdone indiquant qu'il a réussi à traiter les données pour l'utilisateur.

  • Enfin, le rôle Web PHP lit la file d'attente Workdone et remarque que le travail est terminé et affiche les résultats de l'algorithme.

J'ai deux questions:

  • Y at-il un gros défaut dans cette conception? Quelle est la meilleure façon de collaborer: une personne va écrire le PHP et l'autre le F #, est-il un moyen d'utiliser le stockage de développement à partir de deux machines différentes?

Merci beaucoup! (Excuses si certains trouvent ce truc trop basique, je suis vraiment un débutant dans toutes ces questions).

Répondre

1

Je ne vois rien de mal avec ce plan.

Je ne pense pas qu'il existe un moyen d'avoir deux machines pointant sur le même stockage de développement, mais vous pouvez simplement utiliser le stockage en nuage (même en cours d'exécution localement). Je fais ça tout le temps; vous paierez pour les transactions de bande passante et de stockage, mais pour la plupart des applications en test, ce coût est négligeable.

+0

J'ai un problème avec la façon dont le rôle de travail permet au rôle web de savoir que c'est fait. La chose de file d'attente ne fonctionnera pas à moins qu'il y ait une file d'attente pour chaque utilisateur (autrement beaucoup de messages non liés à l'utilisateur). Je pourrais vérifier la base de données pour voir si elle a été remplie pour l'utilisateur (avec une minuterie), ou je pourrais créer un blob quand le travail est fait et vérifier l'existence de ce blob. Ceux-ci pourraient fonctionner mais semblent un peu artificiels, y a-t-il une meilleure solution? Merci beaucoup! – jlezard

+0

Le rôle Web va-t-il maintenir une connexion tout ce temps? Le modèle typique consiste à faire interroger le client (via AJAX), puis il semble assez naturel que le rôle web interroge à son tour un blob ou une table pour voir si le travail est terminé. – smarx

2

Si vous souhaitez suivre un chemin un peu plus expérimental, vous pouvez également essayer en regardant Phalanger. C'est un projet qui compile le code PHP en .NET, il est donc possible de l'exécuter directement sur Azure et de collaborer avec F # (Phalanger a quelques extensions de langage qui permettent d'appeler n'importe quel objet .NET et API for calling Phalanger objects de C#) . J'ai été impliqué dans le projet il y a quelque temps, mais il est maintenant développé par d'autres personnes (et comme vous pouvez le voir dans les check-ins, il est très actif à nouveau et ils seraient sûrement intéressés à collaborer pour résoudre problèmes Azure possibles). Si vous étiez intéressé, faites le moi savoir - je peux vous donner quelques contacts, afin que vous puissiez discuter du statut de Phalanger sur Azure avec eux.

+0

Sauf si vous voulez appeler le code .NET à partir de votre code PHP, je ne vois pas pourquoi il utiliserait Phalanger au lieu de PHP. – smarx

+0

comme @smarx dit que le Php n'a pas besoin d'appeler directement le code .Net. En tout cas merci de m'avoir proposé de me contacter. – jlezard