关于客户端与服务端通信的一点感悟
来源:互联网 发布:手机语音读书软件 编辑:程序博客网 时间:2024/06/06 10:44
一、引言
一直以来在公司从事于桌面客户端的开发,从事已有一年有余,却直到今天才领悟了客户端是如何与服务端进行通信的。这一方面大大得益于“Web Scraping with Python”作者对于 API 相关内容的描述,这不是我第一次接触 API,却是我第一次系统的了解 API。
那么这篇博客也是我的一点感悟,围绕以下几个问题开展:
1. 客户端如何与服务端一直保持联系?
2. 客户端如何与数据库进行通信?
二、服务端的两个部分
这里,对于大部分客户端来说,其实打交道的服务端有两个子模块:
1. 即时服务端:只在客户端在线的时候进行临时管理的逻辑,用于即时实时的连接控制。
2. 长时服务端:即使客户端下线,也要一直存在的管理逻辑,用于处理大量的数据,封装控制 API 等等。
二、客户端与即时服务端的通信
我们随便打开一个桌面软件,比如说 QQ。当我们登录之后,服务端会控制我们客户端的一些行为,比如显示新闻、显示未读信息等等。这些数据是怎么来的呢?客户端是如何得知的呢?
显然是通过即时服务端获取的。
也就是说,当我们客户端运行之后,第一件事情就是与即时服务端进行通信,建立可靠的 TCP 连接,使得我们的客户端与服务端可以即时通信。当我们客户端想要从服务端获取信息了,我们就发送信息给服务端,然后监听服务端的返回数据;当服务端想要控制客户端的行为时,就发送信息给客户端,客户端就做出相应的响应操作。
也就是说,客户端与即时服务端是实时即时通信的。
三、客户端与长时服务端的通信
而客户端总会有需要请求数据库数据的时候。这个时候,与即时服务端通信也无法满足要求了,我们该怎么办呢?
很简单,调用长时服务端的 API。
当我们用户登录之后,即时服务端会发送一个独属于这个用户的用于认证的 ticket,这个 ticket 可以看做是 API 调用时的凭证信息。
当我们客户端想要从数据库中获取信息时,我们就使用 HTTP 的 GET 方法调用 API 函数。然后监听返回的 Response 数据。
当我们客户端想要往数据库中存储信息时,我们就使用 HTTP 的 POST 方法调用 API 函数,从而达到往数据库中存储信息的方法。
至于 HTTP 的 PUT 和 DELETE 方法,用的比较少。
四、总结
这是我的一点感悟,用词不准确之处也敬请谅解。
即时服务端准确的说,应该是即时控制客户端的逻辑;长时服务端准确的说,应该是存储数据的数据库的逻辑(其中封装了大量 API)。客户端在与这两方进行通信时,显然采取了两种方式,前者即时通信,而后者采用了 API 的方式,Request-Response 的方式进行通信。
很多客户端软件都是这样的设计架构,也得益于这样的设计架构,才让我们的客户端脱身于复杂的数据库逻辑,在服务端的控制下更加灵活轻巧。
- 关于客户端与服务端通信的一点感悟
- MFC_SOCKET_关于socket的服务端与客户端的通信
- 简单的服务端与客户端通信代码
- 客户端与服务端的Socket通信
- socket客户端与服务端的通信
- sokect服务端与客户端的通信
- 关于指针与数组的一点感悟
- 关于i++与++i的一点感悟
- socket通信 客户端与服务端
- 客户端与服务端通信原理
- 关于客户端和服务端通信方式的一些实验
- 警察与小偷的实现之一客户端与服务端通信
- 使用简单的ServiceSockt实现服务端与客户端的通信
- WinSocket实现的服务端与客户端的通信
- 简单的客户端,服务端通信
- Windows客户端与Android服务端的Socket通信
- Windows客户端与Android服务端的Socket通信(USB
- Windows客户端与Android服务端的Socket通信(USB)
- unix时间戳和普通时间戳 转换
- spark rdd转dataframe的两种方式
- 带着黑科技3D Xpoint,Intel消费级Optane SSD 900P强势来袭
- 软件测试中的用户思维
- 八 iOS之 CATransition (转场动画)
- 关于客户端与服务端通信的一点感悟
- Xcode9.0.1
- 枚举:enum
- java并发编程:volatile关键字解析
- python匿名函数
- Android studio import module问题集锦.
- 数据结构中二叉树的相关操作
- iOS 保持界面流畅的技巧
- hibernate工具类