化零为整WCF系列文章索引-阿里云开发者社区

开发者社区> 开发与运维> 正文

化零为整WCF系列文章索引

简介:
[源码下载]


化零为整WCF系列文章索引


作者:webabcd


介绍
WCF (Windows Communication Foundation) :契约, 绑定, 宿主, 异常处理, 异步调用, 双向通讯, MTOM, 流数据传输, 序列化, 实例模型, 会话状态, 并发, 限流, 事务, 安全, 可靠性消息, 消息队列, WCF创建REST, AJAX调用WCF


1、化零为整WCF(1) - 不能免俗,我也从Hello开始
介绍
废话不多说,俗也不能免,我也从Hello开始。
  
2、化零为整WCF(2) - 契约Contract(ServiceContract、OperationContract、DataContract、ServiceKnownType和DataMember)
介绍
服务契约(ServiceContract),操作契约(OperationContract),数据契约(DataContract),服务已知类型(ServiceKnownType),数据成员(DataMember)。

3、化零为整WCF(3) - 绑定Binding(basicHttpBinding和netTcpBinding)
介绍
Http以basicHttpBinding为例,Tcp以netTcpBinding为例。

4、化零为整WCF(4) - 异常处理(Exception、FaultException、FaultException、IErrorHandler)
介绍
一般Exception的处理,FaultException和FaultException的抛出和处理,使用IErrorHandler处理异常。

5、化零为整WCF(5) - 宿主Hosting(宿主在IIS, Application, WAS, WindowsService)
介绍
WCF服务可以宿主在IIS, Application, WAS, WindowsService。本文以宿主在WindowsService为例。

6、化零为整WCF(6) - 消息处理(异步调用OneWay, 双向通讯Duplex)
介绍
通过操作契约的IsOneWay参数实现异步调用,基于Http, TCP, Named Pipe, MSMQ的双向通讯。

7、化零为整WCF(7) - 消息处理(使用消息传输优化机制 - MTOM)
介绍
MTOM(Message Transmission Optimization Mechanism) - 消息传输优化机制。本文以web方式上传大文件为例。

8、化零为整WCF(8) - 消息处理(使用流数据传输文件)
介绍
使用流数据传输文件,减少内存开销。

9、化零为整WCF(9) - 序列化(DataContractSerializer, XmlSerializer, DataContractJsonSerializer, SoapFormatter, BinaryFormatter)
介绍
本文分别以DataContractSerializer, XmlSerializer, DataContractJsonSerializer, SoapFormatter, BinaryFormatter为例。

10、化零为整WCF(10) - 实例模型(InstanceContextMode)
介绍
ServiceBehavior 
InstanceContextMode.PerCall - 新的 System.ServiceModel.InstanceContext 对象在每次调用前创建,在调用后回收。 
InstanceContextMode.PerSession - 为每个会话创建一个新的 System.ServiceModel.InstanceContext 对象。 
InstanceContextMode.Single - 只有一个 System.ServiceModel.InstanceContext 对象用于所有传入呼叫,并且在调用后不回收。如果服务对象不存在,则创建一个。

11、化零为整WCF(11) - 会话状态(Session)
介绍
ServiceContract 
SessionMode.Allowed - 指定当传入绑定支持会话时,协定也支持会话(默认值) 
SessionMode.Required - 指定协定需要会话绑定。如果绑定并未配置为支持会话,则将引发异常 
SessionMode.NotAllowed - 指定协定永不支持启动会话的绑定 
OperationContract 
IsInitiating - 获取或设置一个值,该值指示方法是否实现可在服务器上启动会话(如果存在会话)的操作。 
IsTerminating - 获取或设置一个值,该值指示服务操作在发送答复消息(如果存在)后,是否会导致服务器关闭会话。

12、化零为整WCF(12) - 并发和限流(Concurrent和Throttle)
介绍
ConcurrencyMode.Single:单线程并发模式。系统自动加锁,无并发问题 
ConcurrencyMode.Reentrant:可重入的单线程并发模式。有可重入(回调)操作时,此模式才会生效,从回调返回的线程会进入队列尾部排队 
ConcurrencyMode.Multiple:多线程并发模式。系统不会自动加锁,有并发问题 
WCF(Windows Communication Foundation) - 限流(Throttle): 
maxConcurrentCalls - 服务中同时存在的最大活动消息数,默认值为 16 
maxConcurrentInstances - 服务中同时存在的最大服务实例数,默认值为 Int32.MaxValue 
maxConcurrentSessions - 服务中同时存在的最大会话数,默认值为 10

13、化零为整WCF(13) - 并发控制(锁)(Mutex, Semaphore, Monitor, Lock, ThreadPool, Interlocked, ReaderWriterLock)
介绍
以ConcurrencyMode.Multiple并发模式及InstanceContextMode.Single实例模型为例(此时有并发问题),介绍如何做并发控制,即各种锁的使用(Mutex, Semaphore, Monitor, Lock, ThreadPool, Interlocked, ReaderWriterLock)

14、化零为整WCF(14) - 事务(Transaction)
介绍
对契约方法使用TransactionFlowAttribute声明(设置TransactionFlowOption参数),以指定服务操作的事务流策略 
对服务方法是用OperationBehaviorAttribute声明(设置TransactionScopeRequired参数),以指定方法是否在事务范围(TransactionScope)内执行 
配置host和client的binding节点的transactionFlow属性,以指定绑定是否支持流事务

15、化零为整WCF(15) - 可靠性消息(ReliableMessaging)
介绍
通过重试的方法来保证消息的可靠传递,默认为8次 
当配置了“有序传递”的时候,客户端和服务端会开辟缓冲区,服务端缓冲区在接到所有客户端发来的消息后,按照客户端调用的顺序排序各个消息,然后有序地调用服务端

16、化零为整WCF(16) - 消息队列(MSMQ - MicroSoft Message Queue)
介绍
netMsmqBinding的binding属性配置如下: 
ExactlyOnce - 确保消息只被投递一次 
Durable - 消息是否需要持久化 
TimeToLive - 消息过期并且从原有的队列移动到死信队列的时间 
ReceiveRetryCount - 将消息传输到重试队列前尝试发送该消息的最大次数 
MaxRetryCycles - 重试最大周期数 
RetryCycleDelay - 重试周期之间的延迟 
ReceiveErrorHandling - 指定如何处理错误的消息 
DeadLetterQueue - 指定所使用的死信队列的类型 
CustomDeadLetterQueue - 本地自定义死信队列的URI  

17、化零为整WCF(17) - 安全(Security)
介绍
本文以用户名和密码做验证,通过X.509证书做加密为例

18、化零为整WCF(18) - Web编程模型(WCF创建REST, AJAX调用WCF)
介绍
使用WCF创建REST服务,使用asp.net ajax调用WCF服务 
System.ServiceModel.Activation.WebServiceHostFactory - 用于承载使用 WCF Web 编程模型的服务 
System.ServiceModel.Activation.WebScriptServiceHostFactory - 能够向服务中自动添加 ASP.NET AJAX 终结点而无需进行配置


OK

[源码下载]





     本文转自webabcd 51CTO博客,原文链接:http://blog.51cto.com/webabcd/343999,如需转载请自行联系原作者



版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

分享:
开发与运维
使用钉钉扫一扫加入圈子
+ 订阅

集结各类场景实战经验,助你开发运维畅行无忧

其他文章