WCF学习笔记

EndPoint的组成:

Address、Binding、Contract、Behavior


双向通讯:

单向属性:

OperationContract的IsOneWay属性

两种支持双工通信的绑定:

netTcpBinding、wsDualHttpBinding

回调契约:

Callback Contract

非单向的并发处理:

ServiceBehavior(ConcurrencyMode=ConcurrencyMode.Reentrant或者ConcurrencyMode.Multiple)


Serialization(序列化):

Serializer:

DataContractSerializer(WCF默认的序列化器)

XMLSerializer(.NET WEBSERVICE默认的序列化器)

NetDataContractSerializer(和DataContractSerializer区别不大)

Encoding:

Binary:性能好

Text:互操作性好

MTOM:适合传输大数据量


对重载(overloading)的支持:

通过OperationContract的Name属性为重载的方法指定一个别名来实现对重载的支持。


Session:

  • Session的创建和结束都依赖于客户端的调用。
  • 可以通过System.ServiceModel. OperationContractAttribute的IsInitiating和IsTerminating参数来指定初始化和终止Session的Operation。
  • WCF保证处于某个Session中传递的Message按照他发送的次序被接收。
  • WCF并没有为Session的支持而保存相关的状态数据。
  • Session的表现体现在以下两种方式:
    • Session的周期与Proxy的周期绑定,这种方式体现为默认的Session支持。
    • Session的周期绑定到开始和终止Session的方法调用之间的时间段内,这种方式体现在我们在定义Operation Contract时通过IsInitiating和IsTerminating显式指定开始和终止Session的Operatoin。
  • Instance Context Mode决定着不同的Session表现。
  • 在WCF中支持以下三种不同级别的Instance Context Mode:
    • PerCall:WCF为每个Serivce调用创建 一个Service Instance,调用完成后回收该Instance。这种方式和Remoting中的SingleCall相似。
    • PerSession:在Session期间的所有Service调用绑定到某一个Service Instance,Session被终止后,Service Instance被回收。所以在Session结束后使用同一个Proxy进行调用,会抛出Exception。这种方式和Remoting中的CAO相似,这也是WCF默认的Instance Context Mode。
    • Singleton:这种方式和Remoting的Singelton相似。不过它的激活方式又有点特别。当为对应的Service type进行Host的时候,与之对应的Service Instance就被创建出来,此后所有的Service调用都被forward到该Instance。
  • BasicHttpBinding不支持Session。

Exception Handling:

  • 使用FaultContract来定义异常契约。
    • [FaultContract(typeof(MathError))]
    • double Divide(double x, double y);
    •  MathError error = new MathError("Divide""Divided by zero");
    • throw new FaultException<MathError>(error,new FaultReason("Parameters passed are not valid"),new FaultCode("sender"));



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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值