Какая самая простая внутренняя настройка для веб-приложения? - PullRequest
3 голосов
/ 20 октября 2010

Как начинающий, я хотел бы сосредоточиться на полировке внешнего интерфейса веб-игры, которую я пытаюсь создать. Но в игре будет около 5000-10000 различных фрагментов текста, которые мне нужны, чтобы соответствовать атрибутам игрока. Мне нужно как-то передать эти фрагменты в форме JSON в браузер. Как сделать это коротким и простым?

К вашему сведению, это карточная игра, поэтому пошаговая и только для чтения. Это означает очень маленькую нагрузку на сервер. Просто html / js / css и строка JSON пару раз в минуту для каждого игрока. Я подумал о CouchDB, услышав, что могу использовать Javascript для его представлений и тому подобного, но прежде чем уделять ему больше времени, я хотел бы узнать о других возможностях. Я бы лучше уже играл в игру, чем потратил бы недели на изучение бэк-энда программирования.

РЕДАКТИРОВАТЬ: все текстовые фрагменты имеют определенные требования. Данные игрока хранятся в данных сеанса. Если игрок слаб или без топора, не может быть никакого удара.

{ 'action':'You smash you opponents head!',
  'player1': {
      'equipment': 'axe',
      'strength': 3
}

Таким образом, в дополнение к хранению, мне нужно также просеять все действия, которые соответствуют требованиям, а затем выбрать случайное, которое будет отправлено клиенту.

Ответы [ 8 ]

5 голосов
/ 20 октября 2010

Эти фрагменты текста статичны?Как в том, что 5000-10000 охватывает их все?

В таком случае, почему бы просто не обслуживать их всех как один статический файл.Чтобы еще больше минимизировать нагрузку на сервер и ускорить работу приложения, установите для него заголовок Expires в далеком будущем.

Супер простая настройка, встроенное кэширование и сжатие, отсутствие уязвимостей в безопасности, минимизация накладных расходов на HTTP-запрос.

2 голосов
/ 20 октября 2010

Если вы сосредоточены на внешнем интерфейсе, и вам просто нужно подать 1 из 10000 фрагментов текста, я бы не использовал CouchDB или какой-либо другой задействованный бэкэнд.

Несмотря на то, что мой любимый бэкэнд - это Ruby on Rails, для начала я бы выбрал PHP и поместил все ваши текстовые фрагменты в одну таблицу MySQL или, если они статичны, почему бы не в CSV-файле. Большинство веб-фреймворков, включая PHP, могут сделать JSON для вас очень простым.

2 голосов
/ 20 октября 2010

Используйте свободно доступный и открытый, широко используемый язык сценариев с простым общим синтаксисом. Это подсказывает мне PHP или ruby.

1 голос
/ 21 октября 2010

Сколько из этих строк обычно требуется игроку за сеанс? При каждом запросе к серверу возникают большие дополнительные издержки, поэтому, если вы ожидаете, что длительные сеансы, отправка лота в первую очередь может оказаться самой легкой задачей.

Что касается данных, если размер имеет значение, пропустите JSON и сложите его самостоятельно, в вашем примере вы получите больше служебной информации, чем данные. Все ключи в вашем примере выглядят как вещи, которые можно пропустить, если только вы сохраните свои данные в правильном порядке.

Обновление:
Вы отвечаете менее чем на сотню, я думаю, что это будет предел, когда оба подхода стоят примерно одинаково. Однако отправка партии может обеспечить более плавный игровой процесс, особенно на соединениях с высокой задержкой, хотя и за счет более длительного начального времени загрузки.

Бездействие с упаковкой данных на самом низком уровне может в глазах большинства разработчиков быть мертвой дисциплиной (вполне справедливо сказать, что я просто не смог найти руководство по этому вопросу для публикации здесь), но факт для каждого Вы можете вырезать байт из данных одной строки, вы можете вырезать от 5 до 10 КБ из всей коллекции, и есть много байтов, для удаления которых не потребуется много работы.

Для того, чтобы сократить большую часть жира, не делая реализацию большой работой, я бы порекомендовал что-то вроде этого:

Поместите все данные в один массив, для каждой строки используйте две строковые записи в массиве, одну для текстовой строки, затем одну для всех метаданных, закодированных как одна строка. Например, вы можете написать каждое требование в виде двух символов: первый обозначает тип требования, второй - его значение, поэтому, если вы ограничиваете себя использованием только цифр и букв, у вас может быть до 62 типов требований, каждое из которых имеет одно из 62 возможные значения, и они будут стоить всего 2 байта за штуку.

0 голосов
/ 20 октября 2010

Я могу порекомендовать Python и базу данных Sqlite, которые я эффективно использую для приложения SMS (похоже, я смотрю и возвращаю небольшие объемы текста). Производительность потрясающая (БД может храниться в памяти), а использование декоратора Pylons @jsonify делает возврат JSON тривиальным. У Django также есть простые способы обработки JSON (сериализация, simplejson).

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

Редактировать : После дальнейших исследований webpy выглядит наиболее простым. Вы можете использовать шаблоны Mako (или их вообще нет), SQLite и SqlAlchemy для ORM (или вообще без базы данных), и установить их так же просто, как «pip web.py».

0 голосов
/ 20 октября 2010

Если вы не очень много разработали, я рекомендую вам PHP и jQuery для обработки на стороне клиента (JavaScript)

Я бы порекомендовал сначала пройти небольшой молниеносный курс по , как программировать на php . Прочитав это, пожалуйста, не стесняйтесь экспериментировать и читать документацию для PHP, это очень хорошо!

Для сохранения данных я бы использовал MySQL , если вы хотите очень дешевое решение. Но я действительно рекомендую использовать SQL Server 2005 или 2008.

После того, как вы создали модель данных SQL. Затем вы можете начать создавать игру, на этой странице вы найдете множество советов, которые были примерами в php и для многих других языков

Удачи!

0 голосов
/ 20 октября 2010

Нам нужно больше знать о ваших требованиях, чтобы реально понять ваши потребности. При этом, если ваш бэкэнд действительно прост, подойдет любая технология. Почти все современные технологии позволят вам просто делать простые вещи, все смогут выводить JSON. Так что выбирайте ту, с которой вы знакомы. Некоторые, которые приходят на ум:

  • PHP
  • Java / Java EE
  • C # / .Net
  • Ruby / RoR
  • Python / Django
  • Скала / Лифт
  • Даже C / C ++ может быть решением (...)

Редактировать: Учитывая ваши требования, ответ выше остается в силе. Любое техно будет работать для вас, и для простых требований все должно быть относительно простым в использовании.

0 голосов
/ 20 октября 2010

Я бы пошел на ASP.Net - я не уверен, следует ли считать его «самым простым», но это кажется разумной рекомендацией:

  • Это по крайней мере так же хорошо, каклюбой другой сервер
  • В Интернете можно найти множество учебных пособий, статей и другой справки
  • Существует бесплатная IDE в виде Visual Studio Express это исключает сложность выбора IDE.

Кроме того, если вы когда-нибудь станете более вовлеченным и заинтересованным в "серверной" веб-разработке, ASP.Net будет популярным выбором и все равно будет вам полезен.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...