2

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

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

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

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

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

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

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

+ApplicationRoot
|---+ 配置
|---+ 框架
|---+ 处理程序
|---+ 插件
|---+ 布局
|---+ 视图
|---+ 包括
|---+ 拦截器
|---+ 型号
|---+ 模块
|---+ Application.cfc
|---+ index.cfm

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

+ApplicationRoot
|---+ 核心代码
|-----+ 框架
|-----+ 插件
|-----+ 拦截器
|-----+ 视图
|-----+ 模型
| -----+ 模块

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

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

感谢您花时间阅读本文,希望您能引导我朝着正确的方向前进。

4

1 回答 1

2

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

coldbox = {
    // .. settings above

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

    // .. more settings below
};

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

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

您也可以使用标准 ColdBox 约定覆盖布局和视图,但这不会在您的 AngularJS 代码中吗?

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

希望这可以帮助。

于 2014-07-24T19:15:39.873 回答