2011-02-06 32 views
0

我們有不同的客戶端運行我們軟件服務層的不同版本。較新的服務組件具有一些較舊的服務組件所沒有的功能。我們正在研究一個我們希望爲所有客戶提供的新表示層。它應該適用於具有較舊服務的客戶端,但如果客戶端運行最新的服務層,則可以訪問較新的功能。處理服務層版本之間差異的能力

我想避免亂拋垃圾的代碼,如果有關每個可能的功能差異的陳述,特別是我們將繼續添加和支持服務層的新功能。你會建議如何處理這種能力差異的最佳設計模式?

回答

1

如果差異主要在視圖中,部分視圖和用自定義擴展RenderPartialIfSupported替換RenderPartial應該保持代碼相當乾淨。在版本文件夾中排列視圖,您不需要直接在主視圖代碼中指定所需的版本。

如果版本差異很容易鏈接到動作,一個動作過濾器屬性是一個很好的方法 - 那麼你可以添加[RequireVersion(1.1)]到未得到普遍支持每一個動作。

您還可以將這些與ActionLink的自定義版本組合起來,該版本查找相關操作及其RequireVersion屬性,並在操作不受支持時不呈現任何內容。

+0

Upvoting獲得很好的建議。我希望有一個解決方案,視圖和控制器不知道版本號,只是不同的存儲庫功能。我們將庫依賴關係注入到我們的控制器中,所以我們可以將它留給我們的DI框架來知道我們正在打哪個版本。 – traffichazard 2011-02-08 21:43:14

相關問題