2011-02-06 64 views
0

我们有不同的客户端运行我们软件服务层的不同版本。较新的服务组件具有一些较旧的服务组件所没有的功能。我们正在研究一个我们希望为所有客户提供的新表示层。它应该适用于具有较旧服务的客户端,但如果客户端运行最新的服务层,则可以访问较新的功能。处理服务层版本之间差异的能力

我想避免乱抛垃圾的代码,如果有关每个可能的功能差异的陈述,特别是我们将继续添加和支持服务层的新功能。你会建议如何处理这种能力差异的最佳设计模式?

回答

1

如果差异主要在视图中,部分视图和用自定义扩展RenderPartialIfSupported替换RenderPartial应该保持代码相当干净。在版本文件夹中排列视图,您不需要直接在主视图代码中指定所需的版本。

如果版本差异很容易链接到动作,一个动作过滤器属性是一个很好的方法 - 那么你可以添加[RequireVersion(1.1)]到未得到普遍支持每一个动作。

您还可以将这些与ActionLink的自定义版本组合起来,该版本查找相关操作及其RequireVersion属性,并在操作不受支持时不呈现任何内容。

+0

Upvoting获得很好的建议。我希望有一个解决方案,视图和控制器不知道版本号,只是不同的存储库功能。我们将库依赖关系注入到我们的控制器中,所以我们可以将它留给我们的DI框架来知道我们正在打哪个版本。 – traffichazard 2011-02-08 21:43:14

相关问题