【问题标题】:Multiple applications under one domain website best architecture一个域网站下的多个应用程序最佳架构
【发布时间】:2013-02-07 04:17:55
【问题描述】:

我正在开发一个内部网站,其中包含大约 30 个单独的实用程序(将来还会添加更多)。我正在尝试用 Laravel 做到这一点。这样做的最佳做法是什么?

以下是本网站的一些特点。

  • 一些实用程序足够大,可以被视为单独的应用程序
  • 有些非常小,显示静态数据,无需用户交互,但需要数据库交互
  • 某些显示动态内容是与用户交互的结果
  • 有些是 CRUD 实用程序
  • 每个实用程序都有自己的权限,每个用户都有不同的权限集
  • 一次登录,用户应该能够访问他/她被允许使用的实用程序
  • 每个实用程序都与不同数据库中的不同表进行交互。它们有一些共同使用的表,但这种情况很少见

目前,我对每个实用程序都有单独的控制器、模型、视图,这使得 MVC 模式无用。我想将每个实用程序作为一个捆绑包,但是它违反了 DRYness(我可能不得不重复我的代码的某些部分) .

构建这个网站的最佳方式是什么?

【问题讨论】:

  • 我想再问几个问题,应用程序是否需要相互交互?它们是由同一个团队开发还是在团队之间拆分?你们的发布流程是怎样的?
  • 与你的团队一起做agile development
  • @datasage 回答您的问题。 1.各个应用程序之间没有交互。 2. 自己开发。我是这里唯一的网络人。 3. 我不确定你所说的发布过程是什么意思。我们已经在服务器上运行了这些实用程序,但一年前我的结构非常糟糕。由于在不久的将来会添加更多的应用程序,我想让它更具可扩展性。所以,如果这就是您的意思,请不要着急。
  • 在发布过程中,我指的是进行更改并将其推送到生产中的过程。只有 1 人可能不是很参与。我会把一些想法写下来给你一个答案。

标签: php architecture laravel


【解决方案1】:

暂时将所有内容放在一个单一的应用程序中可能没问题,但将来可能会带来一些挑战。这与能够单独发布单个应用程序有关。

如果我从头开始设计你所拥有的东西,我会看到这样的东西:

  1. 基础框架,可能是现有框架的扩展,添加了所有应用程序通用的组件。这个框架应该自己进行版本控制,并将链接到每个应用程序(使用类似 svn 外部的东西)。每个应用程序都可以选择他们正在使用的框架版本,以防一个或多个应用程序发生变化。

  2. 单点登录,如果您有现有的 LDAP 服务器、域控制器、谷歌应用程序,我会使用它对任何应用程序进行基本身份验证。

  3. 所有应用程序都可以访问相同的数据库或数据存储。

  4. 您可能能够集中权限控制,但这取决于。这可能会变得相当笨拙,但同时它会给你一个地方来处理权限。也许允许每个应用发布它需要的权限。

【讨论】:

  • 感谢您的回答。你能更具体地谈谈#3吗?也许有一个所有应用程序都引用的数据库配置文件?另外,我理解#2 和#4,但我对#1 有点困惑。如果我弄错了,请纠正我。有一个基础框架,其中添加了每个应用程序的通用组件。每个应用程序都使用这个基本框架的副本。由于未来会修改基础框架,因此请跟踪每个应用程序兼容的框架版本。
  • 在 3 上,您可以拥有一个共享文件,或者每个应用程序都有自己的文件。我想这取决于框架的工作方式以及每个应用程序可能需要的变化。一方面,每个应用程序都将使用一个基本框架的版本,如果您使用一个标记过程,它可能并不总是相同的版本。假设应用程序 A 使用基本框架的 1.2 版本,而应用程序 B 使用 1.1。稍后,您可以更新应用程序 B 以使用 1.2,如果您在应用程序级别控制它,您可以限制重大更改,直到您有时间修复它们。
  • 好吧,我想我明白了。我需要一些时间根据您的回答来构建它。非常感谢。
  • 我使用 git 已经有一段时间了,所以我想我可以使用 git tag 来跟踪框架版本。然后我突然想到,如果我想更新所有应用程序的框架版本,我必须执行 git pull 命令 30 次。我是不是想错了?
  • 你可能会使用 git 子模块,它的工作方式类似于 svn external。
猜你喜欢
  • 1970-01-01
  • 2011-03-28
  • 2015-11-17
  • 2019-05-27
  • 1970-01-01
  • 2011-11-03
  • 2011-06-16
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多