WCF总结
1、WCF(原代号为Indigo)是一个用于创建和运行分布式系统的技术集合,使用它能创建安全的、可靠的、跨平台的的分布式解决方案。它的面向服务的编程模型,整合了.Net平台下以往全部的分布式开发技术,是微软在SOA领域推出的一款主打产品。
2、WCF是微软为SOA(Service-Oriented Architecture)而设计的一套完整的技术框架
3、通过WCF技术可以创建服务
跨进程
跨机器
跨网络
4、WCF 提供了创建安全的、可靠的、事务服务、多种协议的统一框架
5、WCF 整合和扩展了现有分布式系统的开发技术,如Microsoft .Net Remoting、Web Services、Web Services Enhancements (WSE)等等。
6、优点:
开放性好,跨平台。
使用80端口穿透防火墙
数据格式简单
7、缺点:
安全性不高
不能方便的跨域访问
不支持双工模式
对于复杂的数据类型无法进行传递,需要使用中
间件技术进行扩展或,自行开发序列号支持
Wcf在该方面做成了很大的改进
8、WCF通信模型
a) 服务端可以提供的服务
i. 指定一个规则
ii. Contract
iii. 协定,契约,合同
b) 协定分类
i. Service Contract ----服务契约
1. 定义了服务的类型,用一个接口或类订阅WCF的Service Contract。
ii. Operation Contract
1. 定义了WCF 服务中提供给外部系统访问的方法
iii. Data Contract ----数据契约
1. 自定义的复杂数据类型
iv. Message Contract ----消息契约
1. 用于控制SOAP消息的规则
v. Fault Contract -----错误契约
1. 用于捕获服务端错误消息
9、宿主(Service Hosting):我们把承载WCF服务的进程称为宿主(Service Hosting)
常见的寄宿方式:
1、使用应用程序(winform 、控制器)开放。
2、使用IIS(Web项目、Web网站、ASP.NET MVC)开发。
3、WCF服务应用程序
10、WCF中的基本概念-ABC
a) A:Address ------地址决定了服务的位置,解决了服务寻址的问题;
i. where -服务在哪里
b) B:Binding -------绑定实现了通信的细节,包括网络传输模式、消息编码,以及其他为实现某种功能(比如安全、可靠传输、事务等)对消息进行的相应处理
i. how -通过什么协议取得服务
c) C:Contract -------契约是对服务操作的抽象,也是对消息交换模式以及消息结构的定义
i. what -定义的服务是什么
10、Binding的作用
a) 指明通过什么方式(协议)连接WCF 服务。
b) 常用协议
11、Address地址的作用
A) 通过一个URI Endpoint告诉潜在的WCF service的调用者如何找到这个WCF Service。
B) 表现形式
12、消息模式
a) 客户端与服务器之间是进行消息通讯的方式
b) 三种主要消息模式
i. 单向 One Way
ii. 请求/答复Request/Reply
iii. 双工Duplex
13、单向模式
a) One Way Call
b) 指的是发送端负责把消息发送给对方并且收到本地发出信息的确认消息之后,就完成交互的方式。
14、特点
a) 未知:消息是否最终到达服务的终节点
b) 已知:消息发送成功
c) 一般只能为返回void 的操作指定单向消息交换
d) Operation Contract Attribute的IsOneWay 属性需要设置为True,默认为false.
15、请求/答复模式
a) Request/Reply
b) 客户端发送一个消息并且接收一个返回消息来完成一次交互
16、特点
a) 请求方(客户端应用程序)发出请求以后,一直等待对方(WCF方)答复。
b) 这是默认的模式
[OperationContract]
void Method();
17、双工模式
a) duplex
b) 客户端和服务端都可以任意地向对方发送消息,而对方也可以以任意的次序来接收消息。
c) 服务端 :
i. 1 需要设计用于回调的服务协定,
ii. 2 将该回调协定的类型分配给ServiceContractAttribute Attribute的CallbackContract property。
d) 客户端:
i. 1 要对该接口实现
18、经典错误
解决方案:把wcf配置文件中的“<serviceDebug includeExceptionDetailInFaults="false" />”修改成“<serviceDebug includeExceptionDetailInFaults="true" />”
Wcf步骤
Demo1、在wcf接口中实现对数据的增删改查
一、引入类库“DBHeleper”
二、连接字符串
三、在接口定义增删改查四种方法
四、实现接口的连接字串
五、实现接口中的增删改查
六、启动项目