我正在为我的WCF服务中的每个合同指定Name
和Namespace
,如Microsoft Service Versioning指南中所述。但是,在每个合同的示例中,Namespace
始终以Name
值为后缀,如下所示:
[DataContract(
Name = "PurchaseOrder",
Namespace = "http://examples.microsoft.com/WCF/2005/10/PurchaseOrder")]
public class PurchaseOrderV1 : IPurchaseOrderV1
{
[DataMember(...)]
public string OrderId {...}
[DataMember(...)]
public string CustomerId {...}
}
为什么Namespace
上会加上 PurchaseOrder ?这不是多余的吗? Namespace
不应该反映整个不变的合同吗?
如果我希望将DataContracts
和ServiceContracts
严格版本化,则Namespace
值不应 http://examples.microsoft.com/WCF/ 2005/10 / ?
答案 0 :(得分:4)
这很自然。
http://examples.microsoft.com/WCF/2005/10/定义了一般产品版本的值。与在C#代码中具有更细粒度的命名空间的方式相同,您也可以对WCF命名空间执行相同的操作。
在一天结束时,命名空间只是一个命名空间,这种命名只是一个约定。