Веб-каркас для приложения, использующего существующую базу данных? - PullRequest
1 голос
/ 24 марта 2010

Устаревшее веб-приложение, написанное на PHP и использующее базу данных MySql, должно быть полностью переписано. Однако существующая структура базы данных вообще не должна изменяться.

Я ищу предложения о том, какие рамки наиболее подходят для этой задачи? Кандидаты в языки Python, PHP, Ruby и Java.

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

С Django очень легко создавать модели автоматически. Однако я был бы признателен из первых рук о его пригодности для работы с устаревшими БД. В рассматриваемой базе данных содержатся все виды первичных ключей, включая множество составных ключей.

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

Ответы [ 8 ]

5 голосов
/ 24 марта 2010

Использование sqlalchemy. На любой основе вы выбираете. Он может отражать вашу базу данных как ORM.

3 голосов
/ 01 апреля 2010

Я сейчас перестраиваю устаревшее веб-приложение на PHP с базой данных MySQL.

PHP-код был своего рода спагетти и теперь переписан на Java, так как он безопасен, продвигает хорошо структурированный код, имеет отличные инструменты и превосходные возможности модульного тестирования Для отображения базы данных на Java я использую Hibernate / JPA.

Веб-приложение постепенно доставляется в производство. Это означает, что мы запускаем как Java, так и большие части старого PHP-кода вместе, пока приложение не будет полностью преобразовано.

Но для эффективного использования hibernate нам необходимо, чтобы база данных была логически правильной (что MySQL MyIsam не применяет). Поэтому в каждом рабочем выпуске я запускаю сценарии рефакторинга для базы данных (также используемые для создания среды разработки и выполнения модульного тестирования) и обновляю код PHP новой версией, которая работает с изменениями схемы.

В качестве веб-фреймворка я использую Stripes , поскольку он прост, элегантен и прост в освоении.

2 голосов
/ 24 марта 2010

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

Я позволю вам объяснить это: Сайт Hibernate

2 голосов
/ 24 марта 2010

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

Автоматически сгенерированные модели - это начало, поскольку MySQL не является самой строгой в своей схеме. Не то чтобы это не сработало только потому, что обычно некоторые ограничения БД содержатся в самом приложении.

2 голосов
/ 24 марта 2010

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

Для краткости, я думаю об одном из этого списка:


Теперь, если вы спрашиваете ", какой фреймворк лучший ", это вопрос, который на самом деле неесть ответ: это в основном вопрос личных предпочтений ...

Тем не менее, вот пара вопросов + ответы, которые могут принести вам интересную информацию:

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

Действительно: не стоит торопиться с этим решением.

0 голосов
/ 25 марта 2010

Нет явных победителей при выборе веб-фреймворка. У каждой упомянутой вами платформы есть свои преимущества и недостатки (стоимость оборудования, профессиональная поддержка, поддержка сообщества и т. Д.). В зависимости от вашего расписания, требований проекта и доступных аппаратных ресурсов вам, вероятно, потребуются разные ответы. Лично я бы начал ваше исследование с платформы, на которой вы и ваша команда обладаете наибольшим опытом.

Как и многие другие постеры, я могу говорить только о том, что я сейчас активно использую, и в моем случае это Java. Если кажется, что Java соответствует требованиям вашего проекта, вы, вероятно, захотите использовать одну из более новых платформ с активным сообществом. В настоящее время Spring Web MVC, Struts2 и Stripes кажутся довольно популярными. Эти структуры в основном, если не полностью, независимы от уровня персистентности, но все они хорошо интегрируются с такими технологиями, как hibernate и jpa; хотя вы должны сделать большинство, если не все, проводки самостоятельно.

Если вы хотите пойти по пути Java, есть также готовые стеки приложений, которые позаботятся о большинстве проблем с подключением. Например, вы можете посмотреть на AppFuse Мэтта Райбла. Он создал расширяемое стартовое приложение со многими комбинациями популярных технологий Java.

Если вы заинтересованы в JVM как в платформе, вы также можете рассмотреть готовые решения для стеков, такие как Grails, или инструменты, которые помогут вам быстро построить свой стек, например Spring Roo.

Почти все решения с полным стеком, которые я видел, допускают интеграцию с устаревшей схемой базы данных. Пока ваша база данных хорошо спроектирована, вы сможете отображать свои таблицы. Упоминание о составных ключах пугает меня, но в зависимости от вашей технологии сохранения это может быть или не быть проблемой. Hibernate в Java / .NET поддерживает сопоставление с составными ключами, как и GORM в Grails (построено на Hibernate). Практически во всех случаях эти сопоставления не приветствуются, но люди, которые создают постоянные структуры, знают, что вы не всегда можете выжечь землю и полностью воссоздать вашу модель.

0 голосов
/ 24 марта 2010

Попробуйте web2py , чрезвычайно легко создать прототип любого веб-приложения, и IMO немного легче понять (в целом), чем другие подобные веб-фреймворки, HTH

0 голосов
/ 24 марта 2010

Знаете, от Rails существует целый мир разработчиков веб-приложений на Ruby, например ::100100

С таким общим вопросом всегда трудно помочь ...

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