【问题标题】:Advice on Splitting Up an Application关于拆分应用程序的建议
【发布时间】:2010-09-17 13:49:18
【问题描述】:

我目前有一个网络应用程序,它有 3 个前端(取决于您访问的 URL),在 3 个前端之间共享很少的代码。我的目录结构如下:

\app1
    \includes
    \html
\app2
    \includes
    \html
\app3
    \includes
    \html
\crons
\libs
\logs
\setup
    \db
\shared
    \globalFunctions
    \oldAPI
    \oldClasses

App 文件夹是单独的前端,在“html”中具有自己的包容性包含和 docroot。 Crons 仅用于 CLI 作业,libs 是较新的 PHP5 库,例如我们编写的新代码和 Zend Framework 之类的东西。日志是应用程序日志,设置是部署的设置信息,共享的是一些代码仍然依赖的旧 PHP4 代码库。一切都存储在一个大型 SVN 存储库中。

什么是一种理智的方法来分解它,以便我可以将这个大型 SVN 项目变成更小的项目,以便更容易分支和合并?无论如何,大多数项目都专注于单个应用程序,因此很少需要在多个地方更新代码。

还是保持当前的结构更好,然后继续我们将 PHP4 代码移植到 OO PHP5 并自然放弃?

【问题讨论】:

    标签: php svn


    【解决方案1】:

    现实检查

    您需要问问自己,拆分此应用程序将获得什么价值以及我的成本。然后,如果您仍然想这样做,请考虑如何将大型应用程序分解为较小的应用程序是一项功能,以及添加不需要的功能如何比不添加所需的功能更糟糕。这属于LEAN 软件开发。

    将您的应用程序划分为多个应用程序

    这就是我要做的。我会把你的共享代码变成一个库。该库将被记录并视为它自己的项目。我还将为每个应用程序创建单独的部署脚本,并创建一个主部署脚本来一次部署所有这些。

    \app1
        \docs
        \includes
        \html
        \logs
        \setup
            \deploy
            \db
    \app2
        \docs
        \includes
        \html
        \logs
        \setup
            \deploy
            \db
    \app3
        \docs
        \includes
        \html
        \logs
        \setup
            \deploy
            \db
    \crons
    \deploy
        \docs
        \apps123
    \libs
        \newSharedLibName
            \docs
            \globalFunctions
            \oldAPI
            \oldClasses
        \zend
        \etc ...
    

    我不知道 cron 是用来做什么的。

    附言 将应用程序拆分成更小的部分总是比您想象的要难。

    【讨论】:

      【解决方案2】:

      您可以将其拆分为四个 SVN 项目 - 三个应用程序各一个,其余代码的第四个。然后,您可以将此共享代码定义为每个单独应用程序的外部代码,以便它们可以作为独立的结帐运行。

      这确实为您提供了单独的项目,但也带来了一系列问题 - 主要是如果您更新一个应用程序的共享部分,您必须对另外两个应用程序进行回归测试以检查您没有破坏任何依赖关系。

      这可能更麻烦,但它是值得的,但这取决于你的工作方式。

      【讨论】:

      • 我同意,在这里使用 svn:externals 是一个不错的选择
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2022-12-22
      • 2011-04-06
      • 1970-01-01
      • 2011-03-25
      • 2015-04-27
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多