0

我已经在asp.net论坛上问过这个问题,找不到任何满意的答案。您可以访问它以获取更多详细信息。 http://forums.asp.net/t/1420283.aspx

我们有一个可以为每个客户配置的产品。

配置选项是 UI 和业务逻辑。

在 UI 中,他们可以选择以任何他们想要的方式重新排列给定页面中的所有控件,我们隐藏他们不想看到的控件(因为这些控件是根据其他客户的请求)。

在业务逻辑中,许多“切换/选择案例”分支根据每个客户端的设置实现逻辑。(我想知道我是否可以根据客户端选择在运行时插入外部程序集/dll(项目构建),这意味着通用代码库将为每个客户端调用一个外部代码来根据他们的需要处理事情...... .....或者也许只是将不同客户的逻辑分开在他们自己的类中)

现在,UI 完全是在运行时构建的......在我看来(IMO)这不是必需的,因为一旦配置,UI 对客户端来说仍然是静态的(除了非常少且相距甚远的增强功能)。

但是我们希望维护一个单一的代码库以便于维护。(至少是业务逻辑,我想知道每个客户端都有不同的 UI,从一个通用模板生成)。

我敢肯定,对于不同的产品,这一定是一百次……但我从来没有遇到过,而且我在互联网上找不到任何东西。

4

2 回答 2

2

就您的业务逻辑而言,听起来您正在尝试根据用户设置做一些非常复杂的事情。您可能想考虑一个商业规则引擎来提供帮助。我过去见过的一个是:

规则

于 2009-08-06T15:36:58.683 回答
1

查看 Django 框架以获取有关此类事情的指导。

  1. 每个客户端都有一个单独的“应用程序”,由一组通用的库和组件构建而成。客户端的独特应用程序是核心应用程序的扩展。

  2. 视图函数做真正的工作。

    我们所做的是将视图功能分成两层。顶层是客户特定层,其中包括通用组件库。

    没有“切换/选择案例”分支,因为每个客户的逻辑都是他们独特的逻辑。为了最大限度地减少编写客户端版本所需的工作量,我们从通用组件库中合并了尽可能多的通用逻辑。我们总是将不止一个客户端使用的东西移到通用库中,并重写客户端代码以简化它。

  3. 模板生成 HTML 页面。

    在模板搜索路径上找到模板。

    每个客户可以有不同的搜索路径,以便在默认模板之前搜索他们的自定义模板目录。

什么没有大量的应用程序和大量的 if 语句来定制它。我们有许多小型应用程序,它们扩展了一个通用的、通用的、基线应用程序。

于 2009-08-06T15:55:55.417 回答