wcf必知必会以及与Webapi的区别

快速阅读

介绍wcf中的信息交换模式MEP以及数据在传输过程当中的序列化,endpont的介绍和wcf的三种实例模式以及安全模式 以及和Webapi的简单对比。html

wcf介绍

支持跨平台。web

支持多种协议 tcp, named pipes, HTTP, HTTPS, 消息队列MSMQjson

支持部署在IIS,应用程序或windows服务等windows

配置比起比较麻烦,定义各类协议,契约,以及行为。api

HTTP协议与TCP协议的比较

TCP对应于传输层 通常流媒体用的多。浏览器

http是对应于应用层,是创建在tcp基础之上。 http链接是会选创建tcp链接,请求完成之后,断开与tcp的链接 。是一种无状态的链接 ,网页的请求服务通常会用http链接安全

信息交换模式MEP

包括单工通讯,双工通讯和请求应答服务器

  1. 单工通讯:只发送不接收。 好比告诉消息让你排队。不但愿接收到消息session

  2. 双工通讯:客户端和服务端均可以发送和接收。好比发布订阅模式就是采用双工。tcp

  3. 请求应答:用的最多,客户端发送请求,同步等待返回结果 。

数据序列化

数据要序列化之后才能传输,因此传输的数据必须先序列化以才能传输

  1. 类上加 [Serializable] 表示使用的Soap序列化传输,

  2. 类上加【XmlSerializeFormat】,字段上加[XmlElement,XmlAttribute]表示使用的是xml序列化。若是model是第三方提供的,能够用这种方式传输[XmlSerializeFormat]

  3. 类上加Datacontract,字段上加DataMember表示使用的是DataContract序列化,这种序列化比xmlserialize快,

  4. DataContractJsonSerializer 也支持json序列化。 对接收到的数据直接调用DataContractJsonSerializer转为json

Endpoint

客户端与服务端经过Endpoint进行交互 ,Endpoint的三要素ABC, Address表示服务器地址,Binding表示选择哪一种传输的协议(TCP,http,ssl, soap)Contract契约(服务、操做、数据Contract)表示消息包含的内容 以及信息交换模式(one-way单工模式, duplex 双工械, request/reply请求响应模式)

wcf的实例模式

  1. Per call :每次调用都会建立一个实例。能有效利用内存,但须要特别手段维护Session

    [ServiceBehavior(InstanceContextMode=InstanceContextMode.Percall)]
  2. Per session :每一个用户的整个会话期创建一个session

    [ServiceBehavior(InstanceContextMode=InstanceContextMode.PerSession)]
  3. Single:单例模式,全部用户共享一个session

    [ServiceBehavior(InstanceContextMode=InstanceContextMode.Single)]

wcf安全模式

主要是传输安全,包括

传输层安全

和消息层安全

https://www.cnblogs.com/artech/archive/2011/05/22/authentication_01.html

webapi

  1. 能够把服务暴露给一系列客户端,包括浏览器,手机和平板
  2. 可使用http全部特征,如URI,request/response header.
  3. 能够支持多种数据格式 xml, json, text

如何选择

若是应用须要支付 消息队列和全双工通讯则必需要用wcf ,

但若是要用到http的一些特征,好比request, response, 及多不一样客户端时须要用到webapi .

友情提示

​ 我对个人文章负责,发现好多网上的文章 没有实践,都发出来的,让人走不少弯路,若是你在个人文章中遇到没法实现,或者没法走通的问题。能够直接在公众号《爱码农爱生活 》留言。一定会再次复查缘由。让每一篇 文章的流程都能顺利实现。

相关文章
相关标签/搜索