Framework/Language для новых сайтов Web 2.0 (2008 и 2009)
Я знаю, что получу тысячу ответов "Зависит от того, что вы пытаетесь", но, если серьезно, на самом деле пока нет точной информации об этом в Интернете. Вот мои предположения - я думаю, что они похожи для многих людей прямо сейчас:
- Сейчас октябрь 2008 года. Я хочу начать писать приложение для января 2009 года. Я готов использовать бета-код и тому подобное, но к январю я хотел бы, чтобы сайт не имел "странных" проблем. С учетом вышесказанного, если язык просто на 10% медленнее, чем другой, мне все равно, пока проблема линейна. Моя главная забота - производительность разработчиков.
- Я буду использовать Linux, Apache, MySQL для приложения.
- Мне нужна возможность выполнять такие функции, как запуск клиентских функций scp и ftp со стабильными библиотеками (я выбрал только эти две, потому что они не связаны с сетью, но в то же время представляют довольно распространенные сетевые протоколы, которые может использовать любое крупное приложение). Будут также использованы такие технологии, как OpenID и Oauth.
- Опытные веб-разработчики легко доступны (то есть мне не нужно искать людей из финансовых компаний и тому подобное).
- Какой бы выбор не был распространен, он будет существовать некоторое время.
- Вот кикер. Я хотел бы иметь возможность использовать расширенные инструменты / языки уровня представления, подобные HAML, SASS. Я определенно хочу использовать JQuery.
- Я буду создавать приложение для Facebook и в какой-то момент заниматься такими вещами, как работа с SMS-сообщениями, приложениями для iPhone и т. Д.
На данный момент языком является PHP (Cake,Symfony,Zend), Python (Django), Ruby (Merb). На данный момент я действительно между Джанго и Мербом, в основном потому, что, похоже, все остальные идут по этому пути.
Пожалуйста, не размещайте здесь какие-либо технологии, которые не предназначены для массового использования. Я знаю, что Merb в основном не тестировался, но их заявленная цель - это надежная платформа, и за ней стоит большой импульс, поэтому я уверен, что она выполнима. Пожалуйста, не отвечайте, насколько велик Perl или.Net.
Для будущих ссылок - эти выборы уже были сделаны:
- Debian (Lenny) - для преобразования циклов процессора в нечто полезное. Trac
- 0.11 - Для управления проектами Gliffy - Для каркасов и тому подобное
- Документы / приложения Google - для документации, электронной почты и т. Д.
- Amazon ec2 / S3 - для хостинга, хранилища.
Ура, Адам
13 ответов
Это зависит.
php - symfony - это отличный фреймворк Недостатки: PHP, Wordy и тяжелый каталог. Propel становится раздражающим в использовании. плюсы: php везде, а рабочая сила дешевая. хорошо сделанная структура и хорошая поддержка. много плагинов, чтобы сделать вашу жизнь проще
Python - Django также отличная структура. Недостатки: программистов на Python найти сложнее, а Django - еще сложнее. изменить вашу схему БД может быть довольно сложно, так как нет официальных миграций. не совсем делает MVC, как вы ожидаете. Достоинства: делает все, что вам нужно, и имеет большую библиотеку Python STD и сообщество позади него.
ruby - я никогда не использовал merb, поэтому я буду обращаться к рельсам. Плюсы: есть плагин, драгоценный камень или рецепт для всего, что вы можете захотеть сделать. легко использовать. недостатки: эти плагины, драгоценные камни и рецепты иногда не работают таинственным образом. исправление обезьяны часто является злом. сообщество.. вокал. самоуверенное программное обеспечение, и иногда эти мнения ошибочны (отсутствие внешних ключей). Рельсы сами по себе похожи на карточную башню, которая ждет взрыва и отнимает часы вашей жизни.
С учетом всего сказанного я являюсь независимым разработчиком php / symfony и ruby / rails. Я работал над несколькими проектами на обоих языках и в рамках. Мой последний проект в Rails исключительно из-за ActiveMerchant. Я долго искал причину для разработки приложения django. Если бы существовала подобная ActiveMerchant библиотека для django, я, вероятно, использовал бы ее.
Джанго!
Посмотрите доклады DjangoCon на Google/Youtube - особенно "Многоразовые приложения" (www.youtube.com/watch?v=A-S0tqpPga4)
Я использовал Django в течение некоторого времени, после того, как начал работать с Ruby/Rails. Я обнаружил, что Сообщество Django легче освоить (лучше), язык задокументирован на превосходных примерах, и его модульность удивительна, особенно если вы хотите добавить собственные компоненты в микс, и не будете вынуждены использовать определенные вещи здесь и там.
Я уверен, что, возможно, есть способы быть столь же гибкими с Rails или чем-то подобным, но я настоятельно рекомендую вам внимательно взглянуть на введения Django и т. Д. На http://www.djangoproject.com/
Юджин упомянул, что сейчас он равен 1.0 - и, следовательно, будет оставаться стабильной и обратно совместимой кодовой базой до января 2009 года.
Кроме того, создаваемые им интерфейсы автоматического администрирования готовы к работе и чрезвычайно гибки.
Извините, но ваш вопрос не так. Люди, вероятно, будут голосовать за меня за это, но я все равно хочу это сказать:
Я не ожидал бы получить объективный ответ! Зачем? Это просто:
- Все защитники Ruby скажут использовать Ruby.
- Все защитники Python скажут использовать Python.
- Все сторонники PHP скажут использовать PHP.
- Вставьте дополнительные языки здесь.
Есть идея?
Я рекомендую вам попробовать каждый из языков, которые вы упомянули для себя. По крайней мере, несколько дней каждый. После этого у вас будет гораздо лучшая основа для принятия окончательного решения.
Тем не менее, я бы выбрал Ruby (потому что я адвокат Ruby).
Все они выполнят свою работу.
Используйте тот, который вам и вашей команде наиболее знаком
Это будет иметь гораздо большее влияние на время доставки и стабильность вашего приложения, чем любая другая переменная.
Я бы пошел с Django, если вы знакомы с решением Python. Сейчас она в версии 1.0 и прекрасно развивается, с большой базой пользователей и многими участниками. Интеграция jQuery не проблема, и я сделал это без проблем.
Единственное, насколько я могу судить, Ruby сейчас гораздо более популярен для веб-разработки, поэтому найти разработчиков Ruby проще. Я получаю такое впечатление от просмотра недавних объявлений о работе - их не так много для Python или Django. Я не знаю много о Мербе, поэтому я не могу дать справедливое сравнение.
Я сделал достаточно PHP, чтобы не рекомендовать начинать новый проект с ним.
Чтобы почувствовать, где в настоящее время находится экосистема Django, вы можете проверить
- http://djangopeople.net/ (попробуйте http://djangopeople.net/us/ny/ для штата Нью-Йорк)
- http://djangogigs.com/
Исходя из твоих соображений, я бы пошел с Руби. Я вижу, что вам нужны некоторые инструменты администрирования (scp, ftp client), и у Ruby они есть (библиотеки net/sftp и net/ftp).
Кроме того, есть замечательные жемчужины, такие как Бог для мониторинга вашей системы, Влад Развертыватель для развертывания и т. Д. И множество альтернатив в области Мерба, просто используйте то, что вам больше подходит для ваших нужд (Тонкий, Mongrel, ebb и т. Д.).
Не зацикливайтесь на мышлении макета страницы на стороне сервера. Рассмотрим такие технологии, как SproutCore, GWT или ExtJS, которые полностью размещают код компоновки на клиенте, делая сервер ответственным только за сортировку и обработку данных (и их легко заменить).
И вам действительно нужно знать, какую серверную платформу вы хотите. Не выбирайте один, потому что это аромат месяца, выбирайте один, потому что вам это удобно. Ароматы не длятся долго, прочно построенная кодовая база.
Я должен предвосхитить это, согласившись с Орионом Эдвардсом, выбрать тот, с которым ваша команда больше всего знакома.
Однако я также должен отметить любопытное отсутствие языков ASP.NET в вашем списке. Не провоцировать великую армию фанатиков, но где говядина? .NET - это стабильная платформа для быстрой разработки, и рабочая сила растет с каждым днем. VB.NET и C# являются переносимыми наборами навыков, и это может много значить, когда вы создаете команду разработчиков для работы над разнообразным набором задач. .NET также позволяет вам отделить уровень представления от внутреннего кода, как и другие языки, но также позволяет вам предоставлять этот внутренний код в качестве веб-службы для таких вещей, как приложения для iPhone и Facebook.
Примите каждое предложение с добавлением соли и выберите то, что лучше всего подходит для вашего случая. Сделайте свое исследование, и дизайн для функции, а не фанатики.
Отказ от ответственности: однажды PHP, ColdFusion и Perl разработчик. Гибкий фанат, и любитель Adobe. Сейчас пишу корпоративные.NET приложения. ;)
Не забудьте Mono, который позволит вам запускать.NET под *nix. Не то чтобы я говорил, что это будет прекрасно, просто играю адвоката дьявола.
Создав приложения в Django, я могу засвидетельствовать его полезность. Если бы все рамки были такими же элегантными (да, весна, я смотрю на тебя).
Однако, с точки зрения ставок на ферму на Django, нужно учитывать одно обстоятельство: Python 3 будет выпущен в ближайшее время. Python 3 не имеет обратной совместимости, и есть риск, что он раскроет язык и в конечном итоге замедлит импульс для всех проектов Python, пока они справляются с последствиями. Честно говоря, Ruby 2.0 тоже скоро выйдет, но я не думаю, что он будет таким же разрушительным.
Мой опыт работы с различными новыми технологиями за последние десять лет заставляет меня рекомендовать вам сделать стабильность платформы серьезным критерием. Это все хорошо и хорошо развивается с помощью новейшей и самой лучшей среды, но когда вы обнаружите, что она продвинулась вперед в точечной версии, и внезапно то, как вы все сделали, устарело, это может привести к дополнительной ненужной работе. Это был мой опыт работы с рельсами немного впереди версии 1. Только по этой причине я бы избегал любой платформы, которая была не ниже 1.0, когда вы начнете работать над ней.
С Ruby приятно работать, и он будет поддерживать высокую производительность вашего разработчика, но если Django - более стабильная платформа, я бы предпочел это.
Update: I ended up using, and loving, Django. I'm totally done with PHP - sorry about that. Future readers trying to create a new web 2.0 site (assuming they have a programming background), should greatly consider this setup:
Amazon ec2 для хостинга ($80/ месяц - не дешево, но стоит, если вы можете себе это позволить) Django/Python (Python - самый мощный язык сценариев на планете - и Django просто заставляет его работать в Интернете)
Разработка должна выполняться с использованием SQLlite и сервера разработки, поставляемого с Django. Не тратьте время на Nginx, Apache, MySQL, пока не проведете бета-тестирование в течение нескольких недель.
О, и теперь я работаю на Mac, который отлично подходит для локальной разработки Django.
Это платит, чтобы не быть предвзятым по поводу настройки вашего сервера. Любой современный веб-фреймворк, достойный веса в исходном коде, имеет некоторый уровень абстракции SQL. PostgreSQL получает намного лучшую производительность, и это происходит от бывшего партизана MySQL.
Apache - зверь, как для настройки, так и для ресурсов вашего сервера. Почему бы не пойти с чем-то более легким, например, с nginx или lighttpd?
(Кстати, я большой пользователь Django, но, как сказал принятый ответ, делайте то, что знает ваша команда. Быстрые повороты - не время для изучения новых фреймворков. Если вы нанимаете команду с нуля иди с Джанго.)