WCF合同和命名空间?

时间:2012-07-10 07:32:28

标签: wcf web-services namespaces datacontract servicecontract

您好,

WCF中数据/服务合同的默认命名空间为"http://tempuri.org/"。通过设置ServiceContract.NamespaceServiceBehavior.Namespace,我们可以获得自定义命名空间。但我对此有一些疑问:

  1. 我是否必须使用http://命名空间,还是可以将其命名为相同的CLS命名空间?
  2. 如果我需要在MyApp.IO下设置我的所有datacontracts以使用CLS命名空间,有一种简单的方法可以在不手动设置所有这些的情况下完成此操作吗?
  3. 是否有一种简单的方法可以将CLS名称空间设置为整个服务及其数据对象的合约名称空间?

1 个答案:

答案 0 :(得分:3)

问题1.命名空间可以是任何东西。人们通常使用某种形式的URI,但它不必指向实际的网页。通常人们会在命名空间中使用版本标识符,但是没有关于你应该做什么的规则。

问题2.见上文。

问题3.您可以为所有合同设置名称空间,如下所示:

// This overrides the standard namespace mapping for all contracts 
// in Contoso.CRM. 
[assembly: ContractNamespace("http://schemas.example.com/crm",
   ClrNamespace = "Contoso.CRM")]
namespace Contoso.CRM
{
    // The namespace is overridden to become: 
    // http://schemas.example.com/crm.
    // But the name is the default "Customer".
    [DataContract]
    public class Customer
    {
        // Code not shown.
    }
}

您可以查看此MSDN Article了解更多信息