架构选择:如何在一个站点中处理多个应用程序

时间:2013-02-03 03:03:56

标签: php ruby-on-rails codeigniter

我有一个网站,其中包含一个企业的多个应用程序。 它们共有多种模型,但每种模型都有明确的功能区别。 例如,其中一个应用程序允许用户为客户端生成产品报价。另一个应用程序是购物车。另一个是跟踪产品。 他们为不同的受众做不同的事情,但他们都使用产品和用户模型等。

我的问题是,当使用像codeigniter for php或RoR这样的框架时,最好的架构决策是什么:

  1. 只构建一个包含所有功能的应用程序 它

  2. 构建多个应用程序并处理常见模型和 图书馆在一个“主应用程序”(我的选择)

  3. 谢谢!

2 个答案:

答案 0 :(得分:1)

我们也在使用相同的方案。我们的解决方案是在.NET中,但技术不是担心的问题,至少在大多数情况下都是如此。

我们的常见应用程序组件是:客户帐户管理,购物车和身份验证模型,共享3个不同的客户端Web应用程序。您可能需要调查几种方法来解决此问题。目标是在所有网站上共享通用组件。

我们选择的方法是让所有应用程序共享相同的代码库。我们从所有三个应用程序中提取了客户帐户管理,购物车和身份验证模型,并首先创建了一个公共代码库。关键是要确保通用共享模型不知道使用它的应用程序的应用程序。在某些情况下,我们使用特定于应用程序的注入,但主要的常见组件仅关注哪个应用程序数据库可以写入常见但每个应用程序不同的错误设置。

缺点是每个应用程序都有自己的二进制文件,因此当在同一个Web服务器上运行时,加载到内存中的代码是每个应用程序加载相同常用模型的三倍。但这是我们预先知道的价格,因为现在的记忆非常便宜。

优势在于我们对问题有着共同的分离,如果在某种程度上应用程序变得不同,它们就会演变成不同的动物。

另一种方法是将常见模型分离为Web服务。但是从部署的角度来看,这种方法有点轻浮。

我希望这有帮助!

答案 1 :(得分:0)

对于RoR,您应该考虑创建宝石以便在您的应用中共享。这将允许您选择这些组件的哪种组合用于这些客户端。

您可以看到的另一件事是Engines,它就像应用程序中的应用程序 - http://guides.rubyonrails.org/engines.html - 此页面为您提供了如何使用它的示例。