我有一个WCF SOAP服务,最近更改了该方法的响应。我有其他应用程序使用此方法。我没有更改方法名称,它接受的参数。我做的唯一改变是我在响应对象中添加了2个新属性。说明如下,
方法:
Public Class2 GetData(SampleClass1 data, bool extraStuffRequired)
{
var obj = new Class2();
//Process data here and load into obj
return obj;
}
改变前的Class2的定义:
Public class Class2
{
public string p1 {get; set;}
public string p2 {get; set;}
}
变更后Class2的定义:
Public class Class2
{
public string p1 {get; set;}
public string p2 {get; set;}
public string p3 {get; set;}
public string p4 {get; set;}
}
请注意,我添加了2个新属性p3和p4,并且基于busniess逻辑,我会在其中填充值或将它们设置为空字符串。
ConsumingApp1需要这些新属性,以便更新服务引用并获取生成的类并使用新属性(p3和p4)。
ConsumingApp2不需要它们,但它们确实调用了方法,但只使用p1& P2
我的问题是,我是否需要强制ConsumingApp2更新其服务引用,或者它实际上是否正常工作而没有ConsumingApp2进行任何更改?
答案 0 :(得分:0)
否,ConsumingApp2应该没有更新服务参考。因此,p3,p4的缺失值将初始化为默认值。在您的情况下,由于p3,p4是String类型,它们将被初始化为null。
对于DataContract版本规则如下
如果添加新的非必需成员,则客户端将保留 未受影响和缺失值初始化为默认值。
如果添加新的必需成员,则客户端将受到影响 抛出异常。
摘自[MSDN]的屏幕截图。1您还可以阅读有关Service Versioning&的更多信息。 Versioning Strategy
注意:在您发布的问题中,您尚未为数据类型声明任何DataContract或DataMember。