Веб-роль Azure PHP, рабочая роль F#: разработка на разных машинах

Мы с другом хотели бы создать веб-сайт для управления данными Facebook.

Структура:

  • веб-роль PHP (содержит веб-страницу, пользовательский вход OAuth, взаимодействует с очередями и взаимодействует с базой данных SQL Azure)
  • рабочая роль F# (выполняет статистику и извлечение довольно тяжелых данных)

Процесс (предполагая нового пользователя):

  • пользователь заходит на веб-страницу и входит в Facebook через OAuth, затем веб-роль PHP отправляет сообщение в очередь worktodo с данными для входа и токеном.

  • Рабочая роль F# считывает сообщение из очереди worktodo и начинает обрабатывать данные (используя API Facebook) и статистику, а затем записывает результаты в базу данных SQL Azure. Наконец, он отправляет сообщение в очередь выполненных работ о том, что ему удалось выполнить обработку данных для пользователя.

  • Наконец, веб-роль PHP считывает очередь выполненных работ и замечает, что работа выполнена, и отображает результаты алгоритма.

У меня есть два вопроса:

  • Есть ли большой недостаток в этой конструкции?

  • Каков наилучший способ совместной работы: один человек будет писать PHP, а другой — F#, есть ли способ использовать хранилище для разработки с двух разных машин?

Большое спасибо! (Извините, если кому-то это покажется слишком простым, я очень новичок во всех этих вопросах).


person jlezard    schedule 29.10.2010    source источник


Ответы (2)


Я не вижу ничего плохого в этом плане.

Я не думаю, что есть способ, чтобы две машины указывали на одно и то же хранилище разработки, но вы можете просто использовать облачное хранилище (даже при локальном запуске). Я делаю это все время; вы будете платить за пропускную способность и транзакции хранения, но для большинства тестируемых приложений эта стоимость тривиальна.

person user94559    schedule 30.10.2010
comment
У меня проблема с тем, как рабочая роль сообщает веб-роли, что это сделано. Очередь не будет работать, если для каждого пользователя нет очереди (в противном случае будет много сообщений, не связанных с пользователем). Я мог бы проверить базу данных, чтобы увидеть, была ли она заполнена для пользователя (с помощью таймера), или я мог бы создать большой двоичный объект, когда работа будет выполнена, и проверить существование этого двоичного объекта. Они могут работать, но кажутся немного неестественными, есть ли лучшее решение? Большое спасибо! - person jlezard; 01.11.2010
comment
Будет ли веб-роль поддерживать соединение все это время? Типичным шаблоном является опрос клиента (через AJAX), а затем кажется вполне естественным, что веб-роль, в свою очередь, опрашивает большой двоичный объект или таблицу, чтобы увидеть, выполнена ли работа. - person user94559; 01.11.2010

Если вы хотите пойти более экспериментальным путем, вы также можете посмотреть на Phalanger. Это проект, который компилирует PHP-код в .NET, поэтому его можно запустить непосредственно в Azure и хорошо взаимодействовать с F# (у Phalanger есть несколько языковых расширений, которые позволяют вам вызывать любые объекты .NET и некоторые API для вызова объектов Phalanger из C#).

Некоторое время назад я участвовал в этом проекте, но сейчас его разрабатывают другие люди (и, как вы можете видеть из проверок, он снова довольно активен, и они наверняка будут заинтересованы в сотрудничестве для решения возможных проблем с Azure). . Если вам было интересно, дайте мне знать — я могу дать вам несколько контактов, чтобы вы могли обсудить с ними статус Phalanger на Azure.

person Tomas Petricek    schedule 29.10.2010
comment
Если вы не хотите вызывать код .NET из своего PHP-кода, я не понимаю, почему он будет использовать Phalanger вместо обычного PHP. - person user94559; 30.10.2010
comment
как говорит @smarx, Php не нужно напрямую вызывать код .Net. В любом случае спасибо за предложение связаться со мной. - person jlezard; 31.10.2010