3

我有一个安装在多个客户的服务器上的“white labelled”应用程序。在任何给定的安装中,差异将包括内容,样式表和图形,但也包括一些实际的代码/业务逻辑。我希望我的TFS服务器自动构建我的应用程序的所有风格。我的选择是什么?例如我应该使用主题? #if条件编译标志怎么样?我如何“白色标签”我的ASP.Net MVC应用程序?

P.S.问题不在于如何设置构建服务器 - 我已经完成了。

回答

3

对于业务逻辑,我会将差异抽象为单独的库,然后可以使用IoC/DI模式或提供者模式在运行时解析正确的业务逻辑。

至于内容我会考虑的主题。实际上,您可以让构建服务器构建一次所有代码,然后在打包代码时选择需要的程序集并使用适当的配置,然后为手头的客户端选择合适的主题文件夹。

我不喜欢使用#指令在这种情况下。如果你考虑一下,你的单元测试必须针对每个条件执行。如果删除条件并抽象化差异,则您的单元测试可以立即在所有可插入组件上运行。

-1
  1. 内容/图片 - 你可以使自己的HtmlHelper/UrlHelper扩展做的Html \ Url.Content()以皮卡为正确的客户正确的事情,除了从右侧文件夹复制所需的文件(这是简单的,/Content +/ContentCustomer1,2,...)。
  2. 没有单一的答案,我想。一个简单的答案会是您的Order.Calculate()方法移动到部分类,让你有
    • OrderPartsForCustomer1.cs
    • OrderPartsForCustomer2.cs

在那里你会有

public partial class Order 
{ 
    public Money Calculate() 
    { 
    } 
} 

然后,您只需包含所需的.cs类,并且不要使用#ifs混淆您的代码。

如果你想为所有的公共代码,并只为特定的客户覆盖,你可以有OrderPartsCommon.cs,您将复制/使用,如果有没有客户特定的超越控制。

相关问题