sensboston
@sensboston

Стоит ли использовать Microsoft Azure для простого игрового web-сервиса?

Я работаю над простой turn-based игрой для Windows Phone/Windows Store (universal app), и хочу добавить возможность сетевой игры. Скажу сразу, что с web приложениями и cloud сервисами у меня большой пробел в знаниях - я практически никогда с подобными приложениями не работал, несмотря на весьма долгий профессиональный опыт разработчика.

Когда-то, впрочем, я экспериментировал с Windows Phone 7 приложением и ASP .NET Web сервисом (был такой в VS 2010), все получилось (захостил сервис тогда на каком-то бесплатном ASP хостинге), и даже работало (правда, пришлось повозиться с периодическим падением клиента по unhandled exceptions в авто-генерированном коде).

На страничке моего эккаунта BizSpark-а давно висело предложение бесплатного Microsoft Azure; я сделал небольшое гугл-исследование и выяснил, что Microsoft считает Azure самым эффективным средством для mobile services. Ну, попробовать-то недолго... Зарегистрировался, создал Mobile service, скачал их sample. Что любопытно, он даже заработал (без вылетов по необработанным исключениям, естественно, не обошлось :) ).

Но когда я посмотрел в консоль Azure, то был немного (точнее, изрядно) удивлен: простейшая операция вывода 3 строк ("заметок") совершила порядка 10 API calls (из 16667/day бесплатных), при этом ушло около 350 Kb трафика (замечу сразу - с кодом sample не разбирался, fiddler-ом пока не смотрел).

Честно говоря, мне все это очень не понравилось: помимо моих возможных расходов (а неизвестно еще, окупится приложение или нет), неплохо-бы и поэкономить мобильный трафик будущих пользователей... Да и на производительность это "толстые" запросы влияют не лучшим образом, плюс "первый call всегда комом" - не знаю, отчего, но на Windows Phone первый раз идет timeout, и лишь после перезапуска приложение начинает работать. Напомню, что речь идет не о моем коде, а о примере, который выдает Microsoft Azure при создании Mobile service.

Мои требования к нужному мне сервису чрезвычайно низкие:
- он должен писаться на .NET/C# (нужно использовать shared код из клиентов, написанных на C#)
- в функциональность должно входить:
- регистрация пользователя ("вход в комнату")
- отправка сообщений пользователям (текстовых - чат, и приглашения сыграть)
- отправка ходов между пользователями, начавшими игру (нужно пересылать всего один байт)
- обработка ошибок связи и информирование клиентов (т.е. "отпал" один из играющих, и второго нужно уведомить) - т.е. простой суб-сервис типа ping
- база данных мне, как таковая, не нужна; ну, разве что хранить результаты игр, но это (пока) опционально.

Хочу спросить у знатоков: что вы мне можете посоветовать? Клиентов я предвижу немного (я - реалист); максимум (в самом лучшем случае!) порядка 50. Буду также очень благодарен за исходные тексты подобного простенького сервиса.

Заранее огромное спасибо!
  • Вопрос задан
  • 3487 просмотров
Решения вопроса 2
Jump
@Jump
Системный администратор со стажем.
@sensboston
Вы сделали не совсем корректные выводы насчет сервиса на основании единичного примера.

Попробую объяснить с помощью аналогии -
Вот смотрите у вас задача сходить в магазин за продуктами, до магазина 500метров.
У вас выбор - либо идти пешком, либо ехать на машине.
Вы пробуете доехать на машине - выходите из дома, идете до стоянки 150метров, прогреваете машину, обнаруживаете что бензина мало, едете на заправку, после чего в магазин.
В итоге вы потратили 40минут чтобы доехать до магазина. А пешком до этого магазина идти 10-15минут.
И на основании этого вы делаете вывод, что на машине проехать 500метров по времени занимает примерно 40минут. Т.е передвигаться на машине в три раза медленнее чем пешком.

Так же и с вашей простейшей операцией на вывод трех строк - запуск сервиса сам по себе требует ресурсов, даже если там одна строка, или вообще нет строк.
Ответ написан
newross
@newross
Product owner
Виртуальная машина на Azure + ServiceStack. Сервер получится очень шустрый, трафика гонять будет немного.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@bratarti
Говнище, с AWS от амазона и рядом не стоит!
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы