Что такое Хорошо Зарегистрированная, Стабильная, Безопасная, и Масштабируемая Платформа веб-приложений?

Я использую это:

$form_token = $_SESSION['form_token'] = md5(uniqid());

Отправить $ form_token с формой, то ...

Я проверяю form_token:

if($_SESSION['form_token'] != $_POST['form_token']) {
   echo 'Error';
}
6
задан Zee Spencer 22 May 2009 в 21:09
поделиться

12 ответов

I ' Здесь я рискну и предложу Ruby с Sinatra .

Почему?

  1. Sinatra не «хорошо документирован», но «хорошо задокументирован». Учитывая, что это намного проще, чем другие фреймворки, не нужно столько документации, и, поскольку он построен на Rack в качестве веб-сервера, он разделяет с ним некоторую общую документацию. Но то, что вам нужно знать, есть на веб-сайте, и это ' хорошо написано и не содержит ошибок, которые я обнаружил (IE, все обновлено).

    Большая часть того, что вам нужно знать, содержится в Sinatra Book , Readme и FAQ . Несмотря на то, что книга находится в стадии разработки, ее содержание очень точное и полезное. А если у вас все еще возникают вопросы, загляните в чат-комнату IRC freenode.net # sinatra.

  2. Sinatra может использоваться в функциональном методе логики / маршрутизации или путем переопределения объекта Sinatra :: Application . Вы можете либо использовать, либо разделить свою логику и методы по разным файлам, либо сохранить все в одном. Все зависит от вас.

  3. Синатра сам по себе в безопасности. Вы ДОЛЖНЫ проверять все переменные, отправленные пользователем, потому что, помимо их анализа и передачи вам, Sinatra не заботится о том, насколько они действительны. Следовательно, вы либо обеспечиваете достоверность ваших переменных, либо сожалеете об этом. ; -)

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

  5. Sinatra не нужно развертывать с Passenger, но его можно легко настроить, чтобы он работал быстро. Если вы используете такие вещи, как Enterprise Ruby и Thin , вы можете использовать прокси для Nginix или LightHTTPd. Если вы взяли два сервера, вы можете сделать один основным (с прокси и несколькими потоками), а второй - сервером базы данных (с MySQL и несколькими потоками) и отпустить их. Таким образом задачи распределяются по серверам. Это' Я дам вам больше контроля, чем я думаю, Passenger. (Не говоря уже о лучшей производительности.)

    Я считаю, что Passenger (на Dreamhost) дает относительно низкую производительность по сравнению с запущенными потоками Rack, Mongrel или Thin. Тем не менее, после загрузки приложения реагируют даже в этой среде. Если бы я предсказал это, у вас не было бы проблем с масштабированием приложения, так как вам просто пришлось бы повторно развернуть свой код и перезапустить потоки - ничего, что нельзя было бы поместить в Capistrano.

  6. Ruby для Linux - это хорошо. быстро и не проблема. MySQL с Ruby достаточно прост, и есть несколько действительно хороших пакетов ORM, таких как ActiveRecord и Sequel . Синатра не заставит вас выбрать тот, который вы ненавидите.

В дополнение к ответам на ваши вопросы, У меня есть еще несколько причин.

  1. У Синатры легкая кривая обучения, и его очень легко понять. Самая большая проблема, с которой я столкнулся, заключалась в том, чтобы загрузить его на мой сервер Dreamhost, поскольку Rack была более старой версией, но с версией Rack, поставляемой поставщиком, проблема исчезла. Если бы я мог, я бы переписал свой последний проект Rails в Sinatra с помощью ActiveRecord, чтобы облегчить себе обслуживание; слишком много усилий было затрачено на это.

    Благодаря простоте использования и легкости обучения, я обнаружил, что в Sinatra без генераторов кода я работаю более продуктивно, чем в Rails со всеми генераторами кода. И это о чем-то говорит.

  2. Sinatra поддерживает промежуточное ПО для Rack и, следовательно, очень гибок в том, что вы можете с ним делать.

  3. Если бы я усреднил полезность сообщества Sinatra, на IRC, я бы сказал, что они Вы более осведомлены о структуре, чем средний пользователь Rails - просто для беглого сравнения. Причина в том, что Rails более доступен для новичков и людей, у которых просто нет бизнес-программирования.

  4. Sinatra будет поддерживать Ruby 1.9. Я до сих пор не совсем уверен, сколько поддержки 1.9 есть в Sinatra в настоящее время, но я знаю, что изначально они ждали Rack. По состоянию на 25 апреля это больше не проблема, поэтому, по-видимому, Синатра уже готов к версии 1.9; Я точно знаю, что поддержка 1.9 находится в стадии разработки в середине 2009 года, но я не знаю, сколько времени это будет.

    Предполагая, что вы сможете заставить Sinatra работать с Ruby 1.9 с небольшими усилиями (версия 0.9.2 уже поддерживает Rack 1.0 и прокси 1.9 в коде Rack), до общедоступной 1.0 с поддержкой 1.9, ваше выступление на стороне Ruby было бы звездным. Даже если вы не можете этого сделать, Enterprise Ruby поможет скорости.

5
ответ дан 8 December 2019 в 17:27
поделиться

И Django, и Rails довольно близко подходят к большинству ваших критериев, за исключением того, что я думаю, что документация Django соответствует способу ] лучше, чем у Ruby on Rails »; документация для Django - это не что иное, как удивительно (и я не преувеличиваю здесь)

Однако я не знаю о масштабируемости Django. Я знаю, что Rails достаточно хорошо масштабируется (до определенного момента), но не знаю, можно ли то же самое сказать о Django. (Я не говорю, что не может ; я просто говорю, что честно не знаю , так как я никогда не писал большой приложение с использованием Django.

4
ответ дан 8 December 2019 в 17:27
поделиться

Хорошо. Масштабируемость получить нелегко. Для времени отклика, подобного Google, вам понадобится что-то вроде MapReduce . Хорошо. Не обманывайте себя, супер-масштабируемость - ничто для новичков.

Что касается всех остальных точек, Seaside явно лучше. Что касается безопасности, посетите побережье. st , чтобы понять, почему он по своей сути более безопасен, чем все другие известные мне фреймворки (включая Rails и Seam, например). Приморье достаточно хорошо задокументировано, но также смотреть на его внутреннее строение настолько легко и удобно, что вряд ли у сообщества остается открытым вопрос, на который обычно можно ответить быстро. Seaside работает стабильно уже много лет, так что я думаю, вам это понравится.

Что касается ориентированности на производительность: запустите коммерческую Seaside, GLASS , и вы получите потрясающую производительность по сравнению с LAMP-подобная установка, благодаря гораздо более быстрому интегрированному решению базы данных, и структуре, которая жертвует памятью на скорость и получает большую скорость.

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

3
ответ дан 8 December 2019 в 17:27
поделиться

Что касается PHP, мне нравится фреймворк Zend (хотя для меня это не совсем фреймворк). Одна из его лучших особенностей заключается в том, что каждый компонент не зависит от других ... Так что, если какая-то часть вам не нравится, просто не используйте ее. Также вы упомянули JSON ... Zend полностью поддерживает JSON в обоих направлениях ....

0
ответ дан 8 December 2019 в 17:27
поделиться

Попробуйте их всех, чтобы найти правильный ответ!

Что ж, люди, которые будут предлагать «единый фреймворк, чтобы управлять ими всеми», тоже не испробовали бы их всех!

1
ответ дан 8 December 2019 в 17:27
поделиться

Ruby on Rails широко документирован с множеством плагинов и уже протестирован на масштабируемость (см. BaseCamp и другие решения, созданные на рельсах)

0
ответ дан 8 December 2019 в 17:27
поделиться

Вы можете взглянуть на Django, фреймворк Python. Это очень хорошо документированный фреймворк, у него есть автоматический интерфейс администратора CRUD для базы данных, а также есть бесплатная онлайн-книга, которую, конечно, вы можете купить по-настоящему :)

2
ответ дан 8 December 2019 в 17:27
поделиться

Я думаю, если была бы такая основа, она была бы одна-единственная.

0
ответ дан 8 December 2019 в 17:27
поделиться

Глядя на ваш список приоритетов, трудно сказать, что какой-то один маршрут является «правильным». Что касается PHP, я потратил значительное количество времени на CakePHP, который выполняет многое из того, что вы ищете. Но будучи парнем, который ненавидит PHP, я бы посоветовал держаться подальше от всего в этой сфере.

Все дело в стиле и опыте. Я использовал Ruby On Rails, не самый элегантный язык, но он отлично справляется со своей задачей. Он не настолько развит, как использование стека Spring / Hibernate на Java или использование .Net, который обрабатывает почти все прямо из коробки, но выполняет свою работу исключительно хорошо. Я предпочитаю проекты на основе Java / .Net, потому что они намного лучше подходят для того, как я люблю программировать.

Нет "правильного" ответа, только много хороших. ASP. Например, Net MVC - хороший выбор. Всегда назад я использовал Spring на Java, который также довольно эффективно справлялся со своей задачей. Даже PHP - правильный выбор. Ruby On Rails, с которым я работал только над двумя проектами, очень легко освоить, и он делает некоторые довольно сложные задачи на других языках довольно простыми.

0
ответ дан 8 December 2019 в 17:27
поделиться

Я думаю, что по количеству документации вы не сможете превзойти J2EE. Он также считается безумно масштабируемым и стабильным.

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

0
ответ дан 8 December 2019 в 17:27
поделиться

Если вы думаете о Java, я бы порекомендовал Джерси , он отлично работает, и я думаю, что он достигает всех ваших 5 целей ...

0
ответ дан 8 December 2019 в 17:27
поделиться

Если Java есть в вашем наборе инструментов, взгляните на Stripes.

Стабильное, восторженное, но не очень большое сообщество. Хорошая документация, некоторые устаревшие, но система настолько стабильна, что даже "старые вещи" актуальны. Очень хорошая, недавняя (конец прошлого года) книга. Полосы достаточно малы, чтобы книга могла и «покрывает все».

Это структура действий, которая мало что делает в области презентации (за исключением форм, в основном, и у нее есть полностью необязательные шаблоны / макеты. объект). Вы можете использовать JSP, FreeMarker или что-нибудь еще. Он также может выполнять веб-службы (хотя и не так хорошо, как Джерси).

Он не зависит от серверной части, но для него существует проект интеграции JPA.

Наконец, вы можете использовать, если хотите, все из другого комплекта Java / Java EE, если хотите. Поскольку Stripes не использует весь стек, у вас есть большая гибкость, чтобы выбрать нужные вам части. Полная версия Java EE, транзакции, сессионные компоненты, JMS. Работает со Spring (он «осознает» Spring и имеет хорошую интеграцию) JPA, iBatis, Hibernate, raw JDBC, Lucene, JSR-170 Content Repository, что угодно.

Это отличный комплект.

0
ответ дан 8 December 2019 в 17:27
поделиться
Другие вопросы по тегам:

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