【问题标题】:Site architecture for white-label applications白标应用程序的站点架构
【发布时间】:2014-07-25 03:15:39
【问题描述】:

我即将启动一个白标服务器端应用程序,但我不想跳进去开始编码。这是我以前不需要做的事情,至少不是从头开始,这次我是掌控者!

我参与过许多应用程序,无论好坏,但在大多数情况下,我总是注意到从架构的角度来看,应用程序背后缺乏思考,这最终会影响到我们。这不是对任何人的反映,大多数时候我们都受到打电话的业务的约束。总之……

我决定使用 mysql 与 Railo、Coldbox 和 AngularJs 一起使用。但这不是讨论的重点,它更像是一个仅供参考。

我正在寻求帮助的是如何设计一个网站,以便我能够保存核心和自定义代码(我将其称为客户端代码)。是的,不幸的是,我对此进行了研究,没有太多关于如何解决这个问题的讨论。

这是什么意思?我想要一个网站的基本外壳,其中一组代码文件可以被多个客户使用,例如,将进行注册、公司详细信息、登录、语言设置等的模块。但是,对于每个客户,总是有请求对于自定义,所以我希望能够使用客户端代码覆盖核心代码。

我对 Coldbox 基础知识(即一个代码库一个站点)有很好的了解,但还不足以实现我的目标。

这是 Coldbox 应用程序的基本结构,这就是我看到客户端目录结构的方式。

+应用程序根
|---+ 配置
|---+ 框架
|---+ 处理程序
|---+ 插件
|---+ 布局
|---+ 浏览量
|---+ 包括
|---+ 拦截器
|---+型号
|---+ 模块
|---+ 应用程序.cfc
|---+ 索引.cfm

如果以上是一个客户应用程序的基本结构,它将如何扩展到核心代码?请记住,我认为核心代码将包含模块的 dao、服务、网关、bean。这些将存在于何处,核心代码是否会在其他文件夹中具有类似的结构?

+应用程序根
|---+ 核心代码
|-----+ 框架
|-----+ 插件
|-----+ 拦截器
|-----+ 浏览量
|-----+ 型号
|-----+ 模块

---+ 客户端一
|-----+ 按照上面的客户端目录结构

---+ 客户端二
|-----+ 按照上面的客户端目录结构

感谢您抽出宝贵时间阅读本文,希望您能指引我正确的方向。

【问题讨论】:

  • 这似乎很宽泛,但我希望这里的一些架构师能够权衡好的架构。
  • 您基本上是在这里寻求免费咨询,这实际上不在 StackOverflow 的范围内。请记住,这是一个问答网站,因此您需要提出一个有答案的问题,而不是征求讨论。你最好在论坛上问这个。由于它以 Railo 为中心,Railo oogle 小组将是一个合理的地方。也就是说,它是如此模糊,我想知道您对反馈的期望是什么?我也考虑不重新发明轮子,而是环顾四周,如果有什么东西已经完成了这一切。也许是 PresideCMS?
  • 不,我不是在要求免费赠品或关于最佳实践的冗长讨论,正如我所说的“我希望你能引导我朝着正确的方向前进。”我相信这个问题很清楚,我已经考虑了我想要实现的目标以及我的设想,并基于这个想法提出了我的问题。我不想重新发明任何东西,因此我在这里。以反馈的方式,更有建设性的是表明我所设想的是否完全不正确,也许指向我可能有助于完成这项任务的一些东西,或者只是指向我一些开源代码(感谢 PresideCMS)。

标签: angularjs railo coldbox


【解决方案1】:

您需要一个用于存放常见 ColdBox 对象的文件夹,这些对象将在客户端之间共享。您可以在ColdBox.cfcconfigure these locations

coldbox = {
    // .. settings above

    //Extension Points
    UDFLibraryFile              = "includes/helpers/ApplicationHelper.cfm",
    coldboxExtensionsLocation   = "",
    modulesExternalLocation     = ["/common/modules/"],
    pluginsExternalLocation     = "",
    viewsExternalLocation       = "",
    layoutsExternalLocation     = "",
    handlersExternalLocation    = "",
    requestContextDecorator     = "",

    // .. more settings below
};

您的网络根目录可能如下所示:

- clientA
    - skeleton
- clientB
    - skeleton
- clientN
    - skeleton
- common
    - extensions
    - handlers
    - layouts
    - modules
    - plugins
    - requestContextDecorator
    - views

您也可以override layouts and views 使用标准的 ColdBox 约定,但这不会在您的 AngularJS 代码中吗?

至于覆盖处理程序操作,这是可能的。我的公司对此有一个自定义流程,但我们还没有开源它。

希望这会有所帮助。

【讨论】:

  • re.AngularJs,据我了解,绑定、过滤、指令显然会出现在我可以根据您的建议覆盖的视图中。模块、控制器和服务将位于我的 include/javascript 文件夹中,我打算从 common 文件夹中调用它们或覆盖在 clientX/include 文件夹中。我没有仔细考虑过,但正如你现在提到的那样,我认为我需要尽快研究这个问题。 非常感谢您的积极和宝贵的反馈
猜你喜欢
  • 2010-12-24
  • 1970-01-01
  • 1970-01-01
  • 2015-11-22
  • 2016-08-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多