处理服务层版本之间的能力差异

时间:2011-02-06 22:56:02

标签: asp.net-mvc design-patterns

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

我想避免使用if语句乱丢每个可能的功能差异,特别是因为我们将继续添加和支持服务层中的新功能。如果有的话,您会建议哪种设计模式能够最干净地处理这种能力差异?

1 个答案:

答案 0 :(得分:1)

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

如果版本差异很容易与操作相关联,则操作过滤器属性是一种很好的方法 - 那么您只需将[RequireVersion(1.1)]添加到不受普遍支持的每个操作中。

您还可以将这些与ActionLink的自定义版本结合使用,以查找相关操作及其RequireVersion属性,如果不支持该操作,则不会呈现任何内容。