IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 网络协议 -> webservice、wcf、http区别(自学) -> 正文阅读

[网络协议]webservice、wcf、http区别(自学)

?

?1.webservice

1.1用vs2019创建一个webservice

?

1.1.1建立一个方法,返回传入的参数。

?

1.1.2本地运行,新建一个控制台和类库调用该service

这是.net core 似乎无法直接调用,如下图。

?

?

类库的方法

1.1.3 调试获得结果(config文件需要定义endpoint)

1.2 原理

?

主要看3 4 5 6步骤

客户端(应用程序调用端) 通过wsdl协议 产生soap文件,传给webservice服务器, 服务器读取soap 调用内部方法 将结果以soap的形式返回给客户端。

1.2.1 什么是wsdl?

在刚刚建的类库引用服务的时候,会自动生成wsdl文件

打开文件可以看到,里面定义了传入参数,返回参数,端口等信息。

具体说明如下:

WSDL 服务进行交互的基本元素:

Types(消息类型):数据类型定义的容器,它使用某种类型系统(如 XSD)。

Message(消息):通信数据的抽象类型化定义,它由一个或者多个 part 组成。

Part:消息参数

PortType(端口类型):特定端口类型的具体协议和数据格式规范。,它由一个或者多个 Operation组成。

Operation(操作):对服务所支持的操作进行抽象描述,WSDL定义了四种操作:

1.单向(one-way):端点接受信息;

3.要求-响应(solicit-response):端点发送消息,然后接受相关消息;

4.通知(notification[2] ):端点发送消息。

Binding:特定端口类型的具体协议和数据格式规范。

Port:定义为绑定和网络地址组合的单个端点。

Service:相关端口的集合,包括其关联的接口、操作、消息等。

外层结构里面也可能有多层结构。

其中我们可以看到配了soap 和soap12,其实soap12 是soap的升级版,规范会不一样。

1.2.2 什么是soap?

Soap是xml协议,可用类似fiddler的工具获得。也可在浏览器输入url查看示例。

2.WCF

2.1用vs2019创建一个wcf

可以看到新建wcf时候会自动建立一个接口iwcf,需要在接口中也配置这样的契约。

2.1.1

同样用控制台调用该wcf,但是config文件中bindingconfiguration需要置空才行

2.1.2 wcf有专有的框架

2.1.3 调用接口依然成功

3. WCF和webservice和http的区别

3.1 soap(webservice)和http区别

Soap是基于http上的协议, 就是以http的形式传递soap xml 字符串,服务器(IIS)解析soap 并将返回的内容以soap打包返回。

Soap的方式相当于 比http多了一步,效率肯定要低了。

那么有什么优点呢?

不需要区分大小写,传参更方便,什么格式的都可以传递。

3.2 webservice和WCF区别

WebService相当于WCF里的wsHttpBinding或者BasicHttpBinding

WCF还有很多中绑定,像NetTcpBindingNetNamedPipesBindingNetMsmqBinding等方式,甚至可以自扩展WCF方式

例如NetMsmqBinding的绑定是可以用来做消息队列(下订单)处理的

NetTcpBinding用于TCP通信,应为TCP通信可以实现全双工,可以允许服务器自主的发送数据给客户端。

3.2.1下面是对于TCPHTTP的区别

在网络游戏开发中,通讯协议是其中必须要经历的一个重要环节,无论对于客户端开发中还是服务器开发的程序猿来说,制定一个合适的通讯协议是很有必要的。

在选择通讯协议的时候大家关注的重点要放在延迟低,易用,低成本等上面,下面对比TCPUDPHTTPWebSocket四种协议优缺点、特性,帮助大家选择最适合自己项目的通讯协议。

TCP

优点:可靠性、全双工协议、开源支持多、应用较广泛、面向连接、研发成本低、报文内容不限制(IP层自动分包,重传,不大于1452bytes

缺点:操作系统:较耗内存,支持连接数有限、设计:协议较复杂,自定义应用层协议、网络:网络差情况下延迟较高、传输:效率低于UDP协议

特性:面向连接、可靠性、全双工协议、基于IP层、OSI参考模型位于传输层、适用于二进制传输

UDP

优点:操作系统:并发高,内存消耗较低、传输:效率高,网络延迟低、传输模型简单,研发成本低

缺点:协议不可靠、单向协议、开源支持少、报文内容有限,不能大于1464bytes、设计:协议设计较复杂、网络:网络差,而且丢数据报文

特性:无连接,不可靠,基于IP协议层,OSI参考模型位于传输层,最大努力交付,适用于二进制传输

HTTP

优点:协议较成熟,应用广泛、基于TCP/IP,拥有TCP优点、研发成本很低,开发快速、开源软件较多,nginx,apache,tomact

缺点:无状态无连接、只有PULL模式,不支持PUSH、数据报文较大

特性:基于TCP/IP应用层协议、无状态,无连接、支持C/S模式、适用于文本传输

WebSocket

优点:协议较成熟、基于TCP/IP,拥有TCP优点、数据报文较小,包头非常小、面向连接,有状态协议、开源较多,开发较快

缺点:没发现啥缺点

特性:有状态,面向连接、数据报头较小、适用于WEB3.0,以及其他即时联网通讯

协议选择

通过以上对协议特性分析,我想大家心里已经有低儿了。建议:

1、对于弱联网类游戏,必须消除类的,卡牌类的,可以直接HTTP协议,考虑安全的话直接HTTPS,或者对内容体做对称加密;

2、对于实时性,交互性要求较高,且team有过相关经验,可以优先选择websocket,其次TCP协议;

3、对于实时性要求极高,且可达性要求一般可以选择UDP协议;

4、局域网对战类,赛车类,直接来UDP协议吧(公网对战,P2PUDP还得“打洞”处理)

  网络协议 最新文章
使用Easyswoole 搭建简单的Websoket服务
常见的数据通信方式有哪些?
Openssl 1024bit RSA算法---公私钥获取和处
HTTPS协议的密钥交换流程
《小白WEB安全入门》03. 漏洞篇
HttpRunner4.x 安装与使用
2021-07-04
手写RPC学习笔记
K8S高可用版本部署
mySQL计算IP地址范围
上一篇文章      下一篇文章      查看所有文章
加:2021-08-08 13:38:02  更:2021-08-08 13:38:05 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/25 19:22:39-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码