惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

月光博客
月光博客
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
人人都是产品经理
人人都是产品经理
IT之家
IT之家
Cyberwarzone
Cyberwarzone
T
Troy Hunt's Blog
有赞技术团队
有赞技术团队
阮一峰的网络日志
阮一峰的网络日志
T
Threat Research - Cisco Blogs
S
SegmentFault 最新的问题
Apple Machine Learning Research
Apple Machine Learning Research
G
GRAHAM CLULEY
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
博客园 - 叶小钗
Last Week in AI
Last Week in AI
C
CERT Recently Published Vulnerability Notes
The Hacker News
The Hacker News
Jina AI
Jina AI
T
Tor Project blog
V
Vulnerabilities – Threatpost
酷 壳 – CoolShell
酷 壳 – CoolShell
Spread Privacy
Spread Privacy
博客园_首页
C
Cybersecurity and Infrastructure Security Agency CISA
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
Simon Willison's Weblog
Simon Willison's Weblog
Security Latest
Security Latest
cs.CV updates on arXiv.org
cs.CV updates on arXiv.org
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
博客园 - 司徒正美
V2EX - 技术
V2EX - 技术
I
Intezer
The Cloudflare Blog
Cisco Talos Blog
Cisco Talos Blog
SecWiki News
SecWiki News
博客园 - 【当耐特】
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
L
Lohrmann on Cybersecurity
Scott Helme
Scott Helme
Google Online Security Blog
Google Online Security Blog
量子位
The Last Watchdog
The Last Watchdog
AI
AI
Application and Cybersecurity Blog
Application and Cybersecurity Blog
S
Security Affairs
P
Palo Alto Networks Blog
S
Secure Thoughts
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
Attack and Defense Labs
Attack and Defense Labs

博客园 - JerryShi

使用流模式传输大型数据 对象序列化之 替换(Surrogate) 使用 IExtensibleDataObject 进行往返式序列化 使用 NetDataContractSerializer 共享类型 WCF可序列化方式 序列化 VS 编码 自定义 Behavior 操作行为 之 事务 服务行为 之 元数据 服务行为 之 并发与实例化 基本的WCF编程(实例) WCF 体系结构 WCF服务 使用netTcpBinding 无法打开默认数据库 SharePoint 创建SSP时出现找不到 Windows NT 用户或组 的异常 SQL Server 2008 Mirror 泛型(一) 自定义属性Attribute(三) 自定义属性Attribute(二)
WCF Behaviors(行为)
JerryShi · 2011-09-25 · via 博客园 - JerryShi

WCF体系结构》中介绍了WCF各个组成部分,本章分多次详细介绍behaviors

Behaviors(行为)  定义WCF 客户端与服务端运行时的特性或配置,behaviors 不仅影响WCF 运行时,还会影响客户端与服务端之间的数据通信。

Behaviors 主要分为三类:

Service behaviors(服务行为):运行于服务级别,适用于所有端点,负责内容如:实例化、事务、授权、审计 等;

Endpoint behaviors(端点行为):适用于服务端点,负责对进出服务的消息进行审查和处理;

Operation behaviors(操作行为):适用于操作级别,负责如 序列化、事务流、参数处理等;

其他behaviors:

Callback behaviors 控制客户端创建端点,用于双工通信;

运行时初始化方式:在客户端由ChannelFactory初始化运行时,在服务端则有SerivceHost初始化运行时,执行功能如下:

  1. ChannelFactory 通过泛型方式接收CLR类型 ,ServiceHost 通过构造方式接受CLR类型,读取CLR类型属性及特性信息;
//ChannelFactory
DuplexChannelFactory channelFactory = new DuplexChannelFactory(stockContext, endpointName);
//ServiceHost
ServiceHost servcieHost = new ServiceHost(type);

此操作中,会分析作为代码定义的特性信息,如:

[ServiceBehavior(TransactionTimeout="00:00:30")]
  1. 从 app.config或web.config 文件加载配置信息,ChannelFactory 主要关注绑定信息,ServiceHost 主要关注契约和绑定信息;

分析配置文件中behavior定义,如:

  1. 构造运行时环境结构,即:ServiceDescription;

ChannelFactory 与 ServiceHost均构建了运行时,并将第1、2步中的行为插入到运行时中;

  1. 启动通信,ChannelFactory使用通道(信道)来连接服务,ServiceHost打开通道(信道)来监听消息。

在客户端,行为通常用来执行3种功能:

参数校验:在参数的数据转换为序列化之前,检验、修改 CLR形式的数据;

消息格式化:在CLR类型和序列化之间转换数据的过程中,检验、修改该数据;

消息校验:在转换成CLR类型之前,检验、修改该XML形式的数据。

在服务端,行为通常用于另外两种场景:

操作选择:在服务级别,检验入站消息并决定应该调用哪个操作;

操作调用:在操作级别,调用类的方法。

行为元素之间的控制流,图示:

行为控制流