处理向现有操作添加新(可选)参数而不要求客户端更新其WSDL的最佳方法是什么?我不想更新名称空间来描述新版本的服务合约,因为这应该与旧客户端向后兼容。向WCF操作添加新参数:选项?
我应该用新参数添加一个新的操作吗?或者,我应该只是将参数添加到现有的操作?
这里是我的操作:
[OperationContract]
MyResponse GetData();
它应该是:
[OperationContract]
MyResponse GetData();
[OperationContract]
MyResponse GetData(string filter);
或者更简单地说,只是把它改成这样:
[OperationContract]
MyResponse GetData(string filter);
后一种选择似乎是最好的,并根据我的参考书“对客户端的影响是没有的。新的参数被初始化到服务的默认值。“WCF是否将其初始化为所谓的默认值?如果是这样,那么默认值是多少?
这是一个不间断的变化。我会处理,如果过滤器无效或空的优雅。 – 2009-11-17 22:13:12
@Mike:我不认为它没有突破 - 突然,你的方法“GetData”现在预计一个参数并不是由原来的调用者提供的...... – 2009-11-18 06:24:08
@marc_s:由于WCF的灵活性在值可以为null的情况下,不向其传递任何内容的客户端仍然可以工作。这是WCF中允许版本不匹配的优点。 – 2009-11-18 10:55:54