Azure PHP web角色,F#工作者角色:在不同的机器上开发

Azure PHP web角色,F#工作者角色:在不同的机器上开发,php,azure,f#,azure-web-roles,azure-worker-roles,Php,Azure,F#,Azure Web Roles,Azure Worker Roles,我和一位朋友想创建一个网站来处理Facebook数据 结构如下: PHP web角色(包含网页、用户OAuth登录、与队列交互以及与SQL Azure数据库交互) F#工作者角色(进行统计和大量数据提取) 该过程是(假设有一个新用户): 用户到达web页面并通过OAuth登录到Facebook,然后PHP web角色在worktodo队列中发布一条消息,其中包含登录信息和令牌 F#worker角色从worktodo队列读取消息,并开始进行数据处理(使用Facebook API)和统计,然后

我和一位朋友想创建一个网站来处理Facebook数据

结构如下:

  • PHP web角色(包含网页、用户OAuth登录、与队列交互以及与SQL Azure数据库交互)
  • F#工作者角色(进行统计和大量数据提取)
该过程是(假设有一个新用户):

  • 用户到达web页面并通过OAuth登录到Facebook,然后PHP web角色在worktodo队列中发布一条消息,其中包含登录信息和令牌

  • F#worker角色从worktodo队列读取消息,并开始进行数据处理(使用Facebook API)和统计,然后将结果写入sqlazure数据库。最后,它向workdone队列发布一条消息,说明它已经成功地为用户进行了数据处理

  • 最后,PHPWeb角色读取workdone队列并注意到工作已完成,并显示算法结果

我有两个问题:

  • 这个设计有很大的缺陷吗

  • 协作的最佳方式是什么:一个人编写PHP,另一个人编写F#,有没有办法从两台不同的机器上使用开发存储


非常感谢!(如果有人觉得这些东西太简单,我深表歉意,我在所有这些方面都是初学者)。

如果你想走一条更具实验性的道路,你也可以试试看。这是一个将PHP代码编译成.NET的项目,因此可以直接在Azure上运行它,并与F#很好地协作(Phalanger有一些语言扩展,允许您调用任何.NET对象,也可以从C#调用一些对象)


不久前我参与了这个项目,但现在它是由其他人开发的(从签入中可以看到,它又非常活跃,他们肯定会有兴趣合作解决可能的Azure问题)。如果您感兴趣,请告诉我-我可以给您一些联系人,以便您可以与他们讨论Azure上的Phalanger状态。

我认为此计划没有任何问题


我认为没有办法让两台机器指向同一个开发存储,但您可以只使用云存储(即使在本地运行)。我总是这样做;您将为带宽和存储事务付费,但对于大多数测试中的应用程序,这一成本微不足道。

除非您想从PHP代码调用.NET代码,否则我不明白他为什么会使用Phalanger而不是普通的PHP。正如@smarx所说,PHP不需要直接调用.NET代码。无论如何,感谢您主动提出与我联系。我对worker角色如何让web角色知道它已经完成有一个问题。除非每个用户都有一个队列(否则会有大量与该用户无关的消息),否则队列就无法工作。我可以检查datbase以查看是否已为用户填充了数据(使用计时器),或者在工作完成时创建一个blob并检查是否存在此blob。这些可能会起作用,但似乎有点不现实,有更好的解决方案吗?谢谢!web角色会一直保持连接吗?典型的模式是让客户端轮询(通过AJAX),然后web角色依次轮询blob或表以查看工作是否完成,这似乎很自然。