客户端自定义

时间:2008-10-22 18:20:28

标签: architecture customization

我们的产品安装基数约为50,其中超过50%的安装在业务逻辑的代码中都有自定义,目前由巨大的IF和Switch语句完成。

我们目前正在将代码更新为.NET 3.5,并希望以更加可管理的方式处理自定义。我们目前唯一能想到的方法是要么坚持使用大型IF和Switch语句,要么在源代码控制中为每个客户端分配单独的文件,这似乎并不理想。

是否有可靠的方法在代码库中处理大量自定义?

3 个答案:

答案 0 :(得分:4)

这不叫inheritance吗?通过添加自定义功能使类从基类扩展。每当我有大量的If或case时,我都会质疑是否应该重构为多个类。

答案 1 :(得分:2)

我很想安排事情,以便自定义是文本形式(可能是XML,但我想这不是唯一的选择),主应用程序是通用的,并通过解析这些配置文件获取客户特定的功能。

然后,您可以为每个客户建立一个存储库,其中包含配置文件(可能还有资源,如徽标和/或自定义脚本),以及主应用程序的存储库。

对于给定的客户版本,您的构建系统会自动收集应用程序和客户的存储库,并构建自定义版本。

我有这样一个系统的经验,你可以通过这种方式获得相当广泛的定制。它首先在应用程序方面使事情变得更复杂,因为您需要添加解析功能,但它使各种客户版本的管理变得更加简单,并且更不容易出错。

答案 2 :(得分:0)

DI框架与继承相结合可以使您的系统保持开放/封闭原则,使其更加模块化,并解决生命周期和分发问题,就像您需要分发扩展的基础库一样特定客户。

例如,您可以在BaseLibrary中使用Transfer类,然后您可以在CustomerX库中创建一个类LoggingTransfer extends Transfer,其中仅包含自定义基本功能的代码。