将遗留应用程序迁移到 Symfony2

Posted

技术标签:

【中文标题】将遗留应用程序迁移到 Symfony2【英文标题】:Migrate Legacy Application to Symfony2 【发布时间】:2014-12-09 06:41:28 【问题描述】:

我有一个带有自定义框架的应用程序,它在 7 年前就已经很老了,使用的是旧技术和设计模式。

我们正面临问题。 我们正在使用 DAO 层来访问数据对象,并且由于业务需求变得如此复杂,DAO 不再能够满足业务需求,我们正在考虑使用 Symmfony2 和 Doctrine2。

但问题是: 应用程序真的很大。 超过 7 年的开发和添加功能。 大约 11.500 个文件和文件平均 1500 行。

我知道这不是一件容易的工作,但我确信有一种方法可以迁移或至少暂时使用 Doctrine 而不会损害遗留代码。

请指教。 谢谢。

【问题讨论】:

【参考方案1】:

您的问题没有简单的答案。处理遗留代码总是很困难。

如果可能,您应该将 Symfony 包裹在您的应用程序周围。在您的应用程序周围实现命令或外观模式,并让 Symfony 控制器调用这些类。

尝试使用存储库模式分离您的 DAO 访问层。不是 Doctrine 存储库,而是特定于您的应用程序的自定义存储库。当您将存储库与应用程序的接口分开时,您可以对它们逐一进行原则实现。

值得考虑将您的应用程序与 Symfony 分离,这样您将来就不会遇到此类问题。

另外,如果可以的话,尝试编写尽可能多的测试,这将使您将来更容易重构。

我写了一篇博文,里面有一些关于如何从框架here 中分离出来的技巧。相同的模式适用于存储库。

【讨论】:

以上是关于将遗留应用程序迁移到 Symfony2的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Dojo AMD 中包含遗留模块

如何将 iOS 应用程序连接到 Symfony2 RESTful Webservice?

跨两个应用服务器管理会话

如何将遗留的 Dojo Toolkit 代码转换为 AMD?

如何将 Spring Boot 项目迁移到旧 Spring MVC 项目。面临的问题,如何在遗留 Spring MVC 项目中读取 application.properties 文件

Symfony2 在 Doctrine Fixtures Load 中执行 SQL 文件