差点儿全部的项目中,都会涉及到client和服务端。而client与server之间的通信又是一个非经常见但又有须要问题的技术问题。

首先,连接方式有长连接和短连接。先看看概念。

长连接短连接仅仅是一个概念性的问题,仅仅要知道其概念,不是一个特殊的东西:

    长连接:系统通讯连接建立后就一直保持。

    短连接:仅仅有系统须要相互发消息连接才建立(client发起),请求消息得到响应后连接关闭;

通讯实体间使用长连接,一般还须要定义心跳消息,定期发送来检測系统间链路是否异常,每隔一定时间发送一次心跳,假设一定次数没有收到心跳消息,这觉得此连接出现故障,须要断开连接又一次建立。

详细心跳消息的格式,以及发送间隔,以及多少次没有收到心跳就觉得链路异常,以及数据部是否算作心跳消息(有的系统假设接收到数据包则会清除心跳计时器也就相当于系统中的数据包也算作心跳消息);这个须要两端进行协商。比方GSM经常使用的短消息中心和其它网络实体互连的SMPP协议,要求建立的就是长连接。

非常显然,长连接要复杂些。对于服务端,要对连接上来的client进行管理,还要检查心跳包。非常多业务server都用的长连接,而接口server一般用短连接。

其次,数据的同步和异步请求。

在client请求到server后,client能够等待结果返回后,再处理其它的事情,也能够把请求放到队列,继续做其它的事情,有结果返回后,在做处理。这里就是同步和异步的问题。

一般来说,同步等待也是有个超时时间的,不能一直等待下去。而异步处理的话,都会有个消息队列和请求队列。当server的消息返回后,放到消息队列中,另外有一个线程来处理这个消息队列中的消息,以及和请求队列的数据做对应的处理。

另外,就是堵塞和非堵塞。

堵塞的结果就是这个线程将会等到这个结果返回,非堵塞就是仅仅发送请求,不等待结果。

在非常多时候,都会用异步和非堵塞,这样能够提高处理性能和资源的高效使用。

最后,就是报文。数据报文是自定义的。一般有2种:数据结构和xml数据。

这2种各有利弊。对于数据结构,程序内部处理比較easy,看在多版本号兼容方面没那么好,比方结构添加了字段,低版本号处理的时候,可能就有问题了。xml数据的兼容性比較好,你能够仅仅关心自己想要的字段,而不用管那些不关心的字段,所以对版本号的兼容也比較好。所以如今非常多都採用xml数据。而对xml数据,如今用的比較多的就是json,而且C++、java、android等都支持。另外就是在传输的过程中加密。当然了,对于跨平台,还要考虑字节序的问题。

最后,在总结一下:

1 连接方式:长连接和短连接。

2 数据的同步和异步请求。

3 堵塞和非堵塞。

4 报文:协议,加密,字节序。

转载请注明原创链接:http://blog.csdn.net/wujunokay/article/details/38211079

C/S通信模型和相关技术要点的更多相关文章

  1. SAAS相关技术要点

    这篇文章本来是我们开发组内部用的一个小文档.因为我们公司以前没有做SAAS的经验,就成立了一个小组做一做这方面的技术前探,我是成员之一.这篇文档想从宏观的层面把开发一个SAAS应用所要用到的技术点稍微 ...

  2. WebGPU学习(五): 现代图形API技术要点和WebGPU支持情况调研

    大家好,本文整理了现代图形API的技术要点,重点研究了并行和GPU Driven Render Pipeline相关的知识点,调查了WebGPU的相关支持情况. 另外,本文对实时光线追踪也进行了简要的 ...

  3. 【原】http缓存与cdn相关技术

    摘要:最近要做这个主题的组内分享,所以准备了一个星期,查了比较多的资料.准备的过程虽然很烦很耗时间,不过因为需要查很多的资料,因此整个过程下来,对这方面的知识影响更加深刻.来来来,接下来总结总结 一 ...

  4. React.js 常用技术要点

    最近在公司的一个移动端WEB产品中使用了React这个框架(并不是React-Native),记录一下在开发过程中遇到的各种问题以及对应的解决方法,希望能对读者有所帮助. React原则 React不 ...

  5. http缓存与cdn相关技术

    阅读目录 一 http缓存 二.Http缓存概念解析 三.cdn相关技术 摘要:最近要做这个主题的组内分享,所以准备了一个星期,查了比较多的资料.准备的过程虽然很烦很耗时间,不过因为需要查很多的资料, ...

  6. Excel阅读模式/单元格行列指示/聚光灯开发 技术要点再分享

    1. 引言 文题中所谓技术要点再分享,本意是想在大神Charltsing Liu的博文“简单介绍Excel单元格行列指示的实现原理(俗称聚光灯功能)”的基础上写一点个人开发体会.写本文的初衷有三点,一 ...

  7. Java程序员需要突破的技术要点

    一.源码分析 源码分析是一种临界知识,掌握了这种临界知识,能不变应万变,源码分析对于很多人来说很枯燥,生涩难懂. 源码阅读,我觉得最核心有三点:技术基础+强烈的求知欲+耐心. 我认为是阅读源码的最核心 ...

  8. 腾讯架构师分享的Java程序员需要突破的技术要点

    一.源码分析 源码分析是一种临界知识,掌握了这种临界知识,能不变应万变,源码分析对于很多人来说很枯燥,生涩难懂. 源码阅读,我觉得最核心有三点:技术基础+强烈的求知欲+耐心. 我认为是阅读源码的最核心 ...

  9. 混合事务分析处理“HTAP”的技术要点分析

    HTAP是近些年来比较火的一个概念,本文将聊聊HTAP的前世今生及技术特点. 一.数据应用类别 根据数据的使用特征,可简单做如下划分.在选择技术平台之前,我们需要做好这样的定位. 1.1 OLTP 联 ...

随机推荐

  1. hdu1495(bfs)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1495 题意:有三个杯子,开始时第一个杯子装满水(体积为a),倒来倒去,得到其中2个杯里的水的体积都为a ...

  2. Codeforces 164 E Compatible Numbers

    主题链接~~> 做题情绪:好题,做拉的比赛的时候想了非常久,想到枚举变幻某一位的 0 为 1 .可是每一个数都这样枚举岂不超时的节奏,当时没想到事实上从大到小枚举一次就 ok 了. 解题思路: ...

  3. solr4.9r+ Eclipse 4.3+ tomcat 7.5 +winds7(二)

    尊重原创,原文地址:http://blog.csdn.net/chunlei_zhang/article/details/38778945 这另外一种方法是将solr项目部署到tomcat上,执行to ...

  4. 【网络协议】TCP交互数据流和数据流成块

    前言 建立在TCP协议上的应用层协议有非常多,如FTP.HTTP.Telnet等,这些协议依据数据传输的多少能够分为两类:交互数据类型和成块数据类型. 交互数据类型,如:Telnet,这类协议一般仅仅 ...

  5. evnetlet hub

    hub 是 Eventlet's event loop的主要部分,用于分配I/O 事件 和调度绿色线程. Eventlet 有多种hub实现,现支持一下几种: epoll poll selects p ...

  6. PHP草根论之设计模式-訪问者模式

    关于模式本身的概念,请參考网上其他文章 此处仅仅讨论在PHP实际开发过程中的应用 此模式适用范围极为受限,适用情景: 1.适用于项目维护过程,不适用于项目开发过程 2.新增需求,要求为一个/多个类添加 ...

  7. WPF动态改变主题颜色

    原文:WPF动态改变主题颜色 国内的WPF技术先行者周银辉曾介绍过如何动态改变应用程序的主题样式,今天我们来介绍一种轻量级的改变界面风格的方式--动态改变主题色. 程序允许用户根据自己的喜好来对界面进 ...

  8. 深入浅出KnockoutJS

    深入浅出KnockoutJS 写在前面,本文资料大多来源网上,属于自己的学习笔记整理. 其中主要内容来自learn.knockoutjs.com,源码解析部分资料来自司徒正美博文<knockou ...

  9. log4net和一般的记录日志方法

    下载 http://files.cnblogs.com/crazyair/log4net.zip 1 在web项目中新建一个 Log4Net.config <?xml version=" ...

  10. vb实现多用户登录

    利用vb实现多用户登录,主要是将vb与数据库实现链接,这个问题在作品展中我们的软件“天天迹录”的登录时用到,但是当时自己只是知道有这么个功能,但是那些代码的含义并不明白,在3个月后的我又有机会接触到它 ...