一步一个脚印学习WCF之二构建一个简单的WCF应用程序前必须掌握的WCF基础术语---契约的名称与命名空间
2011-04-21 16:01
786 查看
契约的名称
在默认下契约公开的名称就是定义的接口名或者类名如下面的: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编程的命名空间具有一样的目的,确定契约的类型范围,降低契约类型的冲突几率。
在默认下契约公开的名称就是定义的接口名或者类名如下面的: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编程的命名空间具有一样的目的,确定契约的类型范围,降低契约类型的冲突几率。
相关文章推荐
- 一步一个脚印学习WCF之二构建一个简单的WCF应用程序前必须掌握的WCF基础术语---契约(Contract)
- 一步一个脚印学习WCF之二构建一个简单的WCF应用程序前必须掌握的WCF基础术语---地址(Addresses)
- 一步一个脚印学习WCF系列之WCF基础术语—契约的名称与命名空间(二)
- 一步一个脚印学习WCF系列之WCF基础术语—1-契约(Contract)
- 一步一个脚印学习WCF系列之WCF基础术语—托管(Hosting)(三)
- 一步一个脚印学习WCF系列之WCF基础术语—绑定(Binding)(五)
- 一步一个脚印学习WCF系列之WCF基础术语—地址(Address)(四)
- 一步一个脚印学习WCF系列之WCF契约设计—1-服务契约ServiceContractAttribute
- 一步一个脚印学习WCF系列之WCF契约设计—2-复杂类型序列化之可序列化类型SerializableAttribute
- 一步一个脚印学习WCF系列之WCF契约设计—3-复杂类型序列化之数据契约DataContractAttribute
- 一步一个脚印学习WCF之一WCF概要(中)之客户端与服务-WCF服务的创建与调用Demo
- 一步一个脚印学习WCF系列之WCF概要—生成元数据与代理(五)
- 一步一个脚印学习WCF之一WCF出现的目的
- 学习构建一个简单的wcf服务
- 一步一个脚印学习WCF之一WCF概要(下)之生成元数据与代理
- 一步一个脚印学习WCF系列之WCF概要—WCF服务的创建与调用HelloWorld实例,通过配置文件方式(六)
- 一步一个脚印学习WCF系列之WCF概要—WCF出现的目的(一)
- Kotlin一步一个脚印学习基础三
- 一步一个脚印学习WCF系列之WCF概要—WCF服务的创建与调用HelloWorld实例,通过编码方式(四)
- 构建一个简单的WCF应用——WCF学习笔记(1)