WCF中使用的主要传输的方式有HTTP,TCP和命名管道。
绑定包括可选的协议绑定元素(如安全),必需的编码绑定元素和必须的传输协定绑定元素三个部分,而由传输方式则是由传输绑定元素来决定的。
HTTP是客户端与服务器之间的一个请求/响应协议,不是基于连接的(即不需要建立通信会话),如果通信双方都是WCF,则建议使用TCP和命名管道通信。
TCP是与HTTP相反,它是基于连接的,且TCP提供可靠传输(TCP通知发送方开始传递包,保证按发送时同样的顺序传递这些包,传输丢失的包和确保数据包不重复),WCF的TCP传输针对两端都是基于WCF的情况进行了优化,通过使用BinaryMessageEncodingBinddingElement编码来实现不同计算机间的通信,TCP传输也提供双工通信。
而命名管道则是Windows操作系统内核中的一个对象,可用于单一计算机上的进程之间的单向或双工通信,同一计算机上的不同WCF应用程序之间要求通信,而又希望阻止另一台计算机的任何通信时也可以使用命名管道传输。
选择了传输,需要选择消息编码器来确定消息在传输通道中存在的形势,消息编码器在上篇中说过,就不再赘述。这里再补充下传输配额的三种类型
超时:可减少通过长时间占用系统资源来实施的拒绝服务攻击。
内存分配限制:可防止单个连接耗尽系统内存。
集合大小限制:可限制对间接分配内存或限量供应的资源的消耗。
Net.Tcp还有一个重要的点:端口共享,简单点说端口共享可以减少服务器对外暴露的端口数,从而提升安全系数。要启用端口共享,你的先开启相关的windows功能,然后在绑定中设置protSharingEnabled=“true”。
<binding name="portSharedBiding" portSharingEnabled="true">
先简单说到这里,我得趁着还有点时间,再看会儿书。
时间: 2024-12-28 00:32:21