拥有单独的Web应用程序的标准是什么?

时间:2011-12-14 10:26:16

标签: ruby-on-rails architecture admin

我正在尝试设置一个包含2个逻辑上分离的组件的Rails项目,即管理面板和用户门户。从我到目前为止所读到的,有很多方法来设置它;

  1. 将单个网络应用与单个数据库结合使用
  2. 为管理员和主要应用分开网络应用,但使用通用数据库
  3. 将网络应用与单独的数据库分开
  4. 将两者合并,但部署单独的实例,一个以管理员身份运行,另一个以主应用程序
  5. 运行

    主应用需要处理繁忙的流量,管理员适度低 在四个选项中设置项目的最佳方法是什么? 还有什么可能是每个人的缺点? 还有其他方法可以做得更好吗?

1 个答案:

答案 0 :(得分:9)

关于可能的架构解决方案的一些想法:

1。将单个Web应用程序与单个数据库结合使用

专业人士:

  • 您拥有一个项目配置下的所有内容, 这样就可以避免两次配置项目设置。

  • 您无需复制文件或参考文件即可重复使用代码 在不同的目录中,有时可能会很麻烦。

<强>缺点:

  • 安全性,可以将系统中的内容颠倒过来的功能 在与用户相关的代码的同一屋檐下,所以它有更大的概率 管理员相关的功能可被恶意用户利用。

2。管理员和主要应用程序的单独Web应用程序,但使用公共数据库

专业人士:

  • 在不同的应用程序中使用不同的上下文分隔代码,使事情更简单 并且用户体验更加简洁。

<强>缺点:

  • 由于第二个应用程序存在的原因是操纵数据和 在主应用程序中,它必须读取并影响主应用程序中使用的数据;因此减少了开销。

这在大多数情况下都是最好的情况。

3。使用单独的数据库分隔Web应用程序

在第二个应用程序出现时,无法想到为什么要这样做 处理第一个和数据库的内容。 如果你要去 在第二个应用程序中使用与您的数据无关的大量数据 主要应用,这将是一个合理的选择。

4。将两者结合使用但部署单独的实例,一个作为Admin运行,另一个作为Main app

运行

缺点:

  • 您将开发解决方案一,增加处理两个实例的复杂性。

  • 恶意用户可能会找到一种方法来登录您的管理实例并获取访问权限 管理级功能。