2013-02-03 35 views
0

我有一个网站,其中有一个企业的多个应用程序存在。 他们共有多个模型,但每个模型都有明确的功能区分。例如,其中一个应用程序允许用户为客户进行产品报价。另一个应用程序是购物车。另一个是跟踪产品。 他们为不同的受众做了不同的事情,但他们都使用产品和用户模型等等。建筑选择:如何处理一个网站中的多个应用程序

我的问题是,与像笨的PHP或RoR的框架工作时,什么是最好的架构决策:

  1. 仅生成一个与塞到 它的所有功能应用。

  2. 构建多种应用程序和处理常用模型和 库在一个 “主应用程序”(我的选择)

谢谢!

回答

1

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

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

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

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

好处是我们有共同的问题分离,如果在某些时候应用程序变得足够不同,他们可以演变成不同的动物。

另一种方法是将通用模型分为网络服务。但是从部署的角度来看,这种方法有点吓人。

我希望这有助于!

+0

因此,基本上共同的基本代码就是我们称之为所有应用程序共享的“主应用程序”或“核心组件”。 另一个缺点是,例如,框架更新。我们必须仔细更新每个应用程序内的每个框架代码。 但对我来说,这个选择的优点是比缺点更有意义。 这个我发现它非常有帮助: *“关键是要确保普通的共享模型不知道使用它服务的应用程序”* 谢谢! – atoledo

0

对于RoR,您应该研究创建在应用程序之间共享的宝石。这将允许您选择这些组件的哪些组合用于这些客户端。

你可以看到的另一件事是发动机,它就像一个应用程序内的应用程序 - http://guides.rubyonrails.org/engines.html - 这个页面给你一个如何使用它的例子。

+0

是的,我会研究它。 我发现Ruby on Rails是一个更加复杂和智能的框架 – atoledo

相关问题