2013-03-16 213 views
3

我们有一个非常大的应用程序,它有大约8个使用Zend Framework 1编写的模块(大模块),它已经由几个开发人员开发了3年多。它每天都有很高的流量。我们也使用Amozon s3,Sphinx,Memcache和其他一些第三方服务。从Zend Framework迁移到Zend Framework 2 1

将它迁移到Zend Framework 2是一个好主意吗?因为当我们简要地浏览文档时,似乎Zend框架2已经被完全重写。因此,我们认为我们无法轻松迁移应用程序,而不是根据ZF 2重新编写应用程序。

宝贵的想法将不胜感激。

+0

是否有特定*需要*迁移? – deceze 2013-03-16 14:09:32

+0

这是一个长期的应用程序。所以我们必须确保任何东西都不会被弃用。 – Shaolin 2013-03-16 14:15:47

+0

为什么有人投票结束这个问题?我不认为我问过重复的东西。我们的需求有点特定 – Shaolin 2013-03-16 14:32:00

回答

6

你是正确的,ZF2是一个完全不同的动物。事实上,不同的是,没有一成不变的迁移计划/战略。

但是,我最近做了类似的迁移。这是一个相当复杂的业务线应用程序,最初是在约18个月的时间内编写的,具有多种功能。决定的主要驱动因素是模块和事件系统的改进。

在我们的案例中,它变成了产品的主要发布版本,最终包括一系列UI更改以及所有管道。

假设你喜欢ZF1,好消息是ZF2是更好的框架(作为框架)。 ModuleManager,EventManager,Di和ServiceManager组件(和一般的MVC相关的东西)真的很棒,一旦你有了它们。坏消息是他们完全偏离了ZF1。所以你至少要注册完全检查你的调度和路由,你会告别Zend_Registry(ServiceManager/ServiceLocator是一个巨大的改进)。

另一个好消息是,只要你需要它们,几乎可以肯定地保留所有旧的ZF1型组件。所以如果你依赖于Zend_Cache,Zend_Log,Zend_Mail等,那么使用自动加载器配置的一些小技巧应该可以做到这一点。

我在暗示的是,如果你确实冒险,那么可以考虑先迁移到ZF2作为框架,然后再担心ZF2作为组件库。

如果你坚持使用fat-model/skinny-controller范例,那么以一种相当直接的方式替换控制器,Front-Controller,Zend_Application可能是可行的。一旦你开始投入生产,你可以在时间允许的情况下去除ZF1组件的依赖。在我的情况中,并没有太多的东西,因为事情已经被很好地考虑和包装了(所以,例如,从Zend_Cache移动到Zend \ Cache是​​微不足道的)

最后,你应该知道前面那个View层次的东西(主要是帮手相关的东西)也不同。如果你在整个地方都有一堆复杂的视图相关的东西(partials,custom view-helpers等),你需要预测重写它们,或者找到一种方法在ZF2中使用旧的Zend_View,这样你就可以迁移零碎。我没有真正处理这个问题,因为我们的界面非常简单,我们把它作为检修用户界面的机会。

只是我的0.02美元,但我希望它有帮助。

+0

谢谢,这是非常有用的 – Shaolin 2013-03-17 07:31:23