wcf学习日记 2014-7-1
2014-07-02 09:01
169 查看
Wcf的所有的服务都会公开契约,即描述服务功能的基本方式
Wcf的契约有4种
:服务契约——描述客户端能够执行的服务操作
:数据契约——描述与服务交互的数据类型(int,string隐式定义了契约)
:错误契约——描述服务出错如何处理
:消息契约——允许服务可以直接和消息交互
定义和实现服务契约:
[ServiceContract]//将一个CLR接口映射成一个与技术无关的服务契约
interface IMyContract
{
[OperationContract]
string MyMethod(string text);
}
注意:1:ServiceContract与类型限定无关,类型限定属于clr,所以即使定义为私有的,契约任会公开。以便跨边界调用。只用接口和类可以标记为ServiceContract。即使给类或者接口应用了ServiceContract,并不代表这个类里面的所有方法都是契约,所以需要OperationContract标记
2:服务类的约束:避免使用带参构造函数,因为wcf只能使用默认的构造函数,客户端是无法访问类内部的属性、索引、内部成员的。
3:虽然说ServiceContract可以直接应用到类上,但是我们因为避免这个行为,让他应用在接口上方便不能场景下使用契约。
可以为契约定义命名空间:
[ServiceContract(Namespace= "MyNamespace")],意义与.net的命名空间一样,为了名称避免冲突。契约的默认命名空间为http://tempuri.org,默认情况下契约公开的名字就是接口的名字,但是也可以通过name属性修改名称
托管:
Wcf的每个服务都必须托管在windows的进程中,这个进程我们把他叫做宿主进程,wcf没有要求宿主进程又是客户端进程。
宿主可以由iis提供,可以由windows激活服务提供,甚至可以作为应用程序的一部分
Iis托管:使用iis托管服务的优势是客户端在第一次访问时,自动启动服务,同时可以借助iis管理该服务的生命周期。缺点是只能使用http协议。
自托管:开发者自己提供和管理宿主的生命周期,这样的话就要在客户端调用宿主之前启动宿主
Wcf的契约有4种
:服务契约——描述客户端能够执行的服务操作
:数据契约——描述与服务交互的数据类型(int,string隐式定义了契约)
:错误契约——描述服务出错如何处理
:消息契约——允许服务可以直接和消息交互
定义和实现服务契约:
[ServiceContract]//将一个CLR接口映射成一个与技术无关的服务契约
interface IMyContract
{
[OperationContract]
string MyMethod(string text);
}
注意:1:ServiceContract与类型限定无关,类型限定属于clr,所以即使定义为私有的,契约任会公开。以便跨边界调用。只用接口和类可以标记为ServiceContract。即使给类或者接口应用了ServiceContract,并不代表这个类里面的所有方法都是契约,所以需要OperationContract标记
2:服务类的约束:避免使用带参构造函数,因为wcf只能使用默认的构造函数,客户端是无法访问类内部的属性、索引、内部成员的。
3:虽然说ServiceContract可以直接应用到类上,但是我们因为避免这个行为,让他应用在接口上方便不能场景下使用契约。
可以为契约定义命名空间:
[ServiceContract(Namespace= "MyNamespace")],意义与.net的命名空间一样,为了名称避免冲突。契约的默认命名空间为http://tempuri.org,默认情况下契约公开的名字就是接口的名字,但是也可以通过name属性修改名称
托管:
Wcf的每个服务都必须托管在windows的进程中,这个进程我们把他叫做宿主进程,wcf没有要求宿主进程又是客户端进程。
宿主可以由iis提供,可以由windows激活服务提供,甚至可以作为应用程序的一部分
Iis托管:使用iis托管服务的优势是客户端在第一次访问时,自动启动服务,同时可以借助iis管理该服务的生命周期。缺点是只能使用http协议。
自托管:开发者自己提供和管理宿主的生命周期,这样的话就要在客户端调用宿主之前启动宿主
相关文章推荐
- WCF学习日记
- Jsp 学习日记(2004-9-28 农历八月十五 晴)
- LINUX开发学习日记(第一部)(UNIX环境高级编程)
- [学习日记]进程、线程和模块
- asp.net 学习日记数据分页
- Oracle 学习日记(二)
- Shark工作流学习日记
- [学习日记]VB图像处理之像素的获取和输出
- [学习日记]重构简易RSSREADER的UML类图
- Tomcat代码学习日记系列.
- [Struts]学习日记1 - 一个简单的例子
- java学习日记(线程)
- [学习日记]对SOAP请求的头添加内容的方法
- [学习日记]对SOAP头内添加信息的验证,可实现对请求WEB服务进行身份验证。
- [学习日记]在文本框最前面一行追加新内容的一个SUB
- [Struts]学习日记2 - 增加一些验证
- 学习日记--8.5--linux初装
- 日记:2004年10月08日 读《向微软学习什么》
- [学习日记]对控件的继承和重载
- oracle 学习日记(一)