wcf学习日记 2014-7-1

Wcf的所有的服务都会公开契约,即描述服务功能的基本方式

 

Wcf的契约有4

:服务契约——描述客户端能够执行的服务操作

:数据契约——描述与服务交互的数据类型(intstring隐式定义了契约)

:错误契约——描述服务出错如何处理

:消息契约——允许服务可以直接和消息交互

 

定义和实现服务契约:

[ServiceContract]//将一个CLR接口映射成一个与技术无关的服务契约
interface IMyContract
{

[OperationContract]
string MyMethod(string text);
}

 

注意:1ServiceContract与类型限定无关,类型限定属于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协议。

 

自托管:开发者自己提供和管理宿主的生命周期,这样的话就要在客户端调用宿主之前启动宿主

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值