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,您將複製/使用,如果有沒有客戶特定的超越控制。

相關問題