利用现有数据库的应用程序的Web框架?

时间:2010-03-24 12:11:19

标签: java php python ruby

使用PHP编写并使用MySql数据库的遗留Web应用程序需要完全重写。但是,现有的数据库结构根本不能更改。

我正在寻找哪种框架最适合此任务的建议?候选语言是Python,PHP,Ruby和Java。

根据许多消息来源,在现有数据库中有效利用rails可能具有挑战性。另外,我还没有找到一种从数据库中自动生成模型的方法。

使用Django可以很容易地自动生成模型。但是,我很欣赏其与旧版数据库的适用性的第一手经验。有问题的数据库包含各种主键,包括许多复合键。

我也很欣赏其他值得考虑的框架的建议。

8 个答案:

答案 0 :(得分:5)

使用sqlalchemy。在您选择的任何框架上。它可以将您的数据库反映为ORM。

答案 1 :(得分:3)

我目前正在用自己的MySQL数据库重建遗留的PHP Web应用程序。

PHP代码是一种意大利面条,现在用Java重写,因为它类型安全,促进结构良好的代码,具有出色的工具并具有卓越的单元测试功能。对于数据库到Java映射,我使用Hibernate / JPA。

Web应用程序逐步交付到生产环境。这意味着我们将Java和大部分旧PHP代码一起运行,直到应用程序完全转换为止。

但是为了有效地使用hibernate,我们需要数据库是逻辑正确的(MySQL MyIsam不强制执行)。因此,对于每个生产版本,我都会为数据库运行一个重构脚本(也用于构建开发环境并进行单元测试),并使用适用于架构更改的新版本更新PHP代码。

作为一个Web框架,我使用Stripes,因为它简单,优雅且易于学习。

答案 2 :(得分:2)

我想任何PHP框架(我是一个PHP人,所以我只会谈论PHP)对你来说可能没问题;但是你应该使用一个得到良好支持,拥有大型社区的......,

为了简短起见,我正在考虑这个清单中的一个:


现在,如果你问“哪个框架是最好的”,那么这个问题实际上并没有答案:这主要是个人偏好问题......

不过,这里有几个问题和答案可以带给你一些有趣的信息:

另外,请注意选择框架是一个重要的决定 - 这意味着您应该花一些时间来评估每个框架以及它将如何满足您的特定需求。

真的:你绝对不应该急于做出决定。

答案 3 :(得分:2)

我对Django有很好的经验。每次我需要它都可以完成与现有数据库连接的任务。

自动生成模型是开始,因为MySQL不是最严格的模式。并不是说它通常只会在应用程序本身中保存一些数据库限制。

答案 4 :(得分:2)

我的第一个想法是使用Hibernate和Java,但我可能有偏见,因为这就是我的经验。你通常在创建数据库之后通过Hibernate映射你的Model类,所以它可能不是一个坏的选择。

我会让它向你解释:Hibernate's website

答案 5 :(得分:0)

你知道,有一个完整的Ruby web开发世界远离Rails,例如:

有了这样一般的问题,总是有点难以帮助......

答案 6 :(得分:0)

尝试web2py,非常容易构建任何webapp原型,并且IMO比其他类似的Web框架(整体)更容易掌握(HTH)

答案 7 :(得分:0)

选择Web框架时没有明确的优胜者。您提到的每个平台都有其优点和缺点(硬件成本,专业支持,社区支持等)。根据您的时间表,项目要求和可用的硬件资源,您可能需要一些不同的答案。个人而言,我会在您和您的团队最有经验的平台上开始调查。

像许多其他海报一样,我只能谈谈我现在正在积极使用的内容,而在我的情况下,它是Java。如果Java似乎符合您的项目要求,您可能希望使用其中一个具有活动社区的较新框架。目前,Spring Web MVC,Struts2和Stripes似乎相当受欢迎。这些框架大部分(如果不是完全的话)独立于持久层,但都与hibernate和jpa等技术很好地集成在一起。虽然你必须自己做大部分(如果不是全部)接线。

如果你想走Java之路,还有预先构建的应用程序堆栈,可以解决大部分的布线问题。举个例子,你可能想看看Matt Raible的AppFuse。他构建了一个可扩展的入门应用程序,其中包含许多流行的Java技术。

如果您对作为平台的JVM感兴趣,您可能还需要查看Grails等完整的堆栈解决方案,或者像Spring Roo一样快速构建堆栈的工具。

我见过的几乎所有完整堆栈解决方案都允许与遗留数据库模式集成。只要您的数据库设计得很好,您就应该能够映射表格。提到复合键有点让我感到害怕,但根据你的持久性技术,这可能是也可能不是问题。 Java / .NET中的Hibernate支持映射到复合键,Grails中的GORM(基于hibernate构建)也是如此。几乎在所有情况下都不鼓励使用这些映射,但构建持久性框架的人知道你不能总是烧焦地并完全重建你的模型。