zoukankan      html  css  js  c++  java
  • 一步一个脚印学习WCF系列之WCF基础术语—契约的名称与命名空间(二)

       契约的名称

       在默认下契约公开的名称就是定义的接口名或者类名如下面的:IMyContract和MyClass

       [ServiceContract]
     interface IMyContract
     {

     }
     [Service Contract]
     class MyClass
     {
     }

       但是可以为契约定义别名,如下面定义后的别名是:MyServiceContract和MeServcieContract

       举例如下:

       [ServiceContract(Name="MyServiceContract")]
     interface IMyContract
     {

     }
     [Service Contract(Name="MeServiceContract")]
     class MyClass
     {
     }

       为什么要为契约定义别名?

       因为,客户端要调用服务,必须用到元数据(Metadata),而元数据(Metadata)中用别名描述服务,能降低耦合度。如果都用IMyContract作为服务的名称是不就冲突了。

       举例如下:用Name属性

       [ServiceContract(Name="MyServiceContractA")]
     interface IMyContract
     {

     }

       [ServiceContract(Name="MyServiceContractB")]
     interface IMyContract
     {

     }

       契约的命名空间

       默认情况下契约的命名空间是http://tempuri.org,但是可以为契约定义命名空间。对外提供服务的命名空间通常使用公司的URL。

       举例如下:用Namespace属性

       [ServiceContract(Namespace="http://www.mycompany.com.cn/")]
     interface IMyContract
     {

     }

     为什么要为契约定义命名空间?

       契约的命名空间和.NET编程的命名空间具有一样的目的,确定契约的类型范围,降低契约类型的冲突几率。


     

  • 相关阅读:
    对象的数组去重
    js中map()、some()、every()、filter()的区别
    vue-cli3.0 vue脚手架3.0的使用
    统计各元素出现的次数(字符串,数组)
    string转换为其它数据类型 atoi _atoi_l, _wtoi, _wtoi_l
    static_cast void*
    printf()
    strlen _tcslen
    CSting 类型转换
    模板
  • 原文地址:https://www.cnblogs.com/menglin2010/p/2023303.html
Copyright © 2011-2022 走看看