当前位置: 首页 > news >正文

平台化技术:从C/S到B/S

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

1. 首先,不管是服务器程序还是客户端程序,在程序工程上分为两大类:

1)和自己本地通信:就是调用本地宿主机的资源:CPU、存储、内存、传感设备等等

2)和别分远程通信:就是通过网络(有线网络和无线网络)【路】去别人家的主机访问他们的资源!这个网络可以是以太网络、蓝牙网络、红外线网络、射频网络等等...

我们知道使用各个网络有各个网络的协议,我们在蓝牙网络的时候需要遵循蓝牙的协议...在以太网的时候我们要遵循以太网的协议。就是TCP/IP协议

3)而目前影响力最广、网络地域最广、最普及、用户最多的当属以太网构建的全球性互联网!

4)在以太网中我们主要遵循TCP/IP协议簇

5)在TCP/IP五层模型中。从应用层的数据经过传输层的TCP/UDP协议的封装之后,下达到网络层的IP协议,然后继续经过了数据链路层协议,最后通过以太网网口把数据报文给发送出去!接收则反之。这是我们通常在写以太网通信软件的通信路程。

6)我们看到在以太网的传输层,就只要两个协议,TCP/UDP协议。所有上层应用层都需要传输层的TCP和服务器建立连接(三次握手之后),把数据封装成各种各样的协议格式(HTML/XML/简单文本/图片/视频/音频/邮件/等等),交个一个【套接字:socket】的载体,然后给到TCP进行继续封装下去。

应用层XMLHTML
txtEmail
图片视频
音频密文等等
下传  
socket套接字 
  
   
传输层TCPUDP
   

7)我们卡住一个套接字socket。然后回想一下,好像我们学过的C/C++/C#/java也好,都有一个socket网路编程的概念,然后我们知道socket分为ClientSocket【C】和Serversocket!在此就产生了C/S架构的概念!最开始我们还没那么发达的时候,各自都是孤零零的客户端和服务器,且很多还是嵌入式式产品的客户端。独立运营。再到后来,有了操作系统的技术之后,便是一个平台化技术的开始!!所有的客户端可以全部丢到一个硬件设备【的操作系统】平台上运行,当然服务器程序也是。但是网络编程的客户端还是发socket,但是统一由平台帮忙管理的收发!你只需要去特定的端口提交你的需求和接收你的信息。端口的诞生也是以为操作系统平台化产生的,因为一个硬件设备只有一个真实的以太网端口,但是这个设备上有很多的不用的客户端,怎么办?操作系统OS就为没一个程序(进程)划分各自的虚拟端口!所以你用IP【设备】+端口。就能找到特定的进程通信!!这是平台化的第一层。客户端不需要自己去制造硬件设备!

8)再接着,有些客户端不断的壮大,自己的用户越来越多。从流量经济和分流的角度,它可以分发给各个代理商来利用流量经济,从而从中获取利益。浏览器这个有专门学术名称的客户端(还是socket客户端)就诞生了!浏览器把自己的搭建成一个C/S平台。让大家把自己的想法和业务功能以一个更加简单的方式【HTML】直接丢到自己的平台上,就能完成和单独写socket客户端一样的功能!这是平台化的第二层。客户不需要自己实现socket客户端程序了!只要你的内容遵循行业协会的标准即可:HTTP。

9)另外一边,服务器那端也是,Apache这个服务器厂商也在服务端那用ServerSocket搭建了一个平台:Tomcat。也让开发者们不需要亲自写服务器端的socket程序也能和自己的客户端通信服!又节省了成本!!只要你写好一个叫做servlet的东西,并遵循其标准丢到这个平台上来!这样一个Tomcat平台就的实现很多个服务器服务了!Tomcat也即被称为servlet的容器!!

8)和9)的技术结合起来就是今天的B/S架构。B是Browser浏览器的意思。S就是server的意思!!html*Browser/Tomcat*servlet

 B/S
应用层html*BrowserHTTPTomcat*servlet
ClientSocketsocketServerSocket
C/S
传输层 TCP/IP 

10)我们看下如下浏览器内核webkit的技术原理

11)我们看下如下Tomcat内核的技术原理

12)我们看到以上浏览器内核和Tomcat都有socket和TCP的身影!都是需要建立TCP连接和socket收发管理。

13)如今平台技术发展越来越好。比如,再由微信平台承载的小程序、公众号和天猫平台承载的各个电商的产品售卖服务!平台化技术能发展得越来越好不轻易到的原因是:共赢模式,我让大家都赚钱了,我不可能倒,以为大家的力量不可能让我倒下的!这就是为什么每个公司做到一定程度之后,都想往平台化发展的原因!

 

转载于:https://my.oschina.net/u/3697586/blog/1942155

相关文章:

  • ckeditor 3.6在IE11不能粘贴
  • SQLServer之修改DEFAULT约束
  • LinkedList源码
  • 爬虫基础 - 抓包
  • Object.assign方法不能实现深复制
  • 手拉手教你实现一门编程语言 Enkel, 系列 13
  • css过渡,css动画,页面布局分析,表单元素
  • JSONModel使用
  • 9月10日科技联播:马云将回归教育事业,张勇接任阿里巴巴董事局主席
  • 中国人寿如何基于容器搭建金融PaaS云平台
  • Docker删除镜像
  • mysql 查询当天、本周,本月,上一个月的数据
  • java8之后的时间api
  • 站内全文搜索
  • 登录功能测试点
  • “大数据应用场景”之隔壁老王(连载四)
  • 【108天】Java——《Head First Java》笔记(第1-4章)
  • 【391天】每日项目总结系列128(2018.03.03)
  • 【node学习】协程
  • Bytom交易说明(账户管理模式)
  • ECS应用管理最佳实践
  • EOS是什么
  • export和import的用法总结
  • hadoop入门学习教程--DKHadoop完整安装步骤
  • IE报vuex requires a Promise polyfill in this browser问题解决
  • JS 面试题总结
  • Promise面试题,控制异步流程
  • Spring Security中异常上抛机制及对于转型处理的一些感悟
  • UMLCHINA 首席专家潘加宇鼎力推荐
  • Vue全家桶实现一个Web App
  • 从0实现一个tiny react(三)生命周期
  • 力扣(LeetCode)21
  • 如何正确配置 Ubuntu 14.04 服务器?
  • 如何抓住下一波零售风口?看RPA玩转零售自动化
  • 实战|智能家居行业移动应用性能分析
  • 适配mpvue平台的的微信小程序日历组件mpvue-calendar
  • 学习笔记:对象,原型和继承(1)
  • SAP CRM里Lead通过工作流自动创建Opportunity的原理讲解 ...
  • ​一帧图像的Android之旅 :应用的首个绘制请求
  • #ubuntu# #git# repository git config --global --add safe.directory
  • #我与Java虚拟机的故事#连载05:Java虚拟机的修炼之道
  • (2021|NIPS,扩散,无条件分数估计,条件分数估计)无分类器引导扩散
  • (C#)Windows Shell 外壳编程系列9 - QueryInfo 扩展提示
  • (floyd+补集) poj 3275
  • (附源码)python旅游推荐系统 毕业设计 250623
  • (十)T检验-第一部分
  • (提供数据集下载)基于大语言模型LangChain与ChatGLM3-6B本地知识库调优:数据集优化、参数调整、Prompt提示词优化实战
  • (转)VC++中ondraw在什么时候调用的
  • (转)拼包函数及网络封包的异常处理(含代码)
  • (转载)hibernate缓存
  • .net连接oracle数据库
  • .Net组件程序设计之线程、并发管理(一)
  • [1204 寻找子串位置] 解题报告
  • [20180224]expdp query 写法问题.txt
  • [Angular] 笔记 9:list/detail 页面以及@Output