首页 > 其他分享 >Web技术演化

Web技术演化

时间:2024-02-18 16:56:03浏览次数:22  
标签:Web 网关 服务 演化 技术 API Model View

Web技术演化

1. 简单网站
静态页面
Web技术在最初阶段,网站的主要内容是静态的,大多站点托管在ISP上,由文字和图片组成,制作和表现形式也是以表格为主。

多媒体阶段
随着技术的不断发展,音频、视频、Flash等多媒体技术诞生了。

CGI阶段
CGI定义了Web服务器与外部应用程序之间的通信接口标准,因此Web服务器可以通过CGI执行外部程序,让外部程序根据Web请求内容生成动态的内容。
在这个时候,各种编程语言如PHP/ASP/JSP也逐渐加入市场,基于这些语言可以实现更加模块化的、功能更强大的应用程序。

MVC
随着Web应用开发越来越标准化,出现了MVC等思想。MVC是Model/View/Control的缩写,Model用于封装数据和数据处理方法,视图View是数据的HTML展现,控制器Controller负责响应请求,协调Model和View。
Model,View和Controller的分开,是一种典型的关注点分离的思想,使得代码复用性和组织性更好,Web应用的配置和灵活也越来越好。而数据访问也逐渐通过面向对象的方式来替代直接的SQL访问,出现了ORM(Object Relation Mapping)的概念。

除了MVC,还出现了MVP、MVVM等

2. 数据交互
简单数据交互
在Web技术发展最初,前后端交互大部分都使用Web表单、XML、SOAP等较为简单的方式。

Ajax
在开始的时候,用户提交整个表单后才能获取结果,用户体验极差。于是Ajax技术逐渐流行起来,它使得应用在不更新整个页面的前提下也可以获得或更新数据。这使得Web应用程序更为迅速地回应用户动作,并避免了在网络上发送哪些没有改变的信息。

RESTful
在CGI时期,前后端通常没有做严格区分的,前后端的概念开始变得清晰,前端主要指网站前台部分,运行在PC端、移动端等浏览器上展示给用户浏览的网页,由HTML5、CSS3、JavaScript组成。后端主要指网站的逻辑部分,涉及数据的增删改查。

GraphQL
部分网络服务场景的数据有复杂的依赖关系,为了应对这些场景,Facebook推出了GraphQL,以图状数据结构对数据进行查询存储。部分网站也应用了GraphQL之外API交互的方式。

二进制
随着业务对性能的要求提高,前后端开始使用HTTP/2、自定义Protocol Buffer等方式来加快数据交互。

3. 架构演进
随着业务的不断发展,业务架构也越来越复杂。传统的功能被拆分成不同的模块,出现了中间件、中台等概念。代理服务、负载均衡、数据库分表、异地容灾、缓存、CDN、消息队列、安全防护等技术应用越来越广泛,增加了Web开发和运维的复杂度。

客户端的形态越来越多,除了Web之外iOS、Android等其他场景也出现在Web服务的客户端场景。

较早的关系型数据库MySQL、PostgreSQL等已经不能满足需求,出现了Redis/Memcached缓存数据库等一类满足特定需求的数据库。

为了满足特定的业务需求,出现了Lucene/Solr/Elasticsearch搜索应用服务器,Kafka/RabbitMQ/ZeroMQ消息系统,Spark计算引擎,Hive数据仓库平台等不同的基础架构。

中间件
中间件是独立的软件程序,用于管理计算资源和网络通信。常用的功能有过滤IP、合并接口、合并端口、路由、权限校验、负载均衡、反向代理等。

分布式
随着数据量的不断提高,单台设备难以承载这样的访问量,同时不同功能也被拆分到不同的应用中,于是出现了提高业务复用及整合的分布式服务框架(RPC)。

4. 云服务
云计算诞生之前,大部分计算资源是处于“裸金属”状态的物理机,运维人员选择对应规格的硬件,建设机房的IDC网络,完成服务的提供,投入硬件基础建设和维护的成本很高。云服务出现之后,使用者可以直接购买主机,基础设施由供应商管理,这种方式也叫IaaS(Infrastructure-as-a-Service)。

随着架构的继续发展,应用的运行更加细粒度,部署环境容器化,各个功能拆分微服务或者是Serverless的架构。

Serverless
Serverless架构由两部分组成,即Faas(Function-as-Service)和BaaS(Backend-as-a-Service)。
FaaS是运行平台,用户上传需要执行的逻辑函数如一些定时任务、数据处理等到云函数平台,配置执行条件触发器、路由等等,就可以通过云平台完成函数的执行。

BaaS包含了后端服务组件,它基于API完成第三方服务,主要是数据库、对象存储、消息队列、日志服务等等。

API网关
API网关是一个服务器,客户端只需要使用简单的访问方式,统一访问API网关,由API网关来代理对后端服务的访问,同时由于服务治理特性统一放到API网关上面,服务治理特性的变更可以做到对客户端透明,一定上实现了服务治理等基础特性和服务。

标签:Web,网关,服务,演化,技术,API,Model,View
From: https://www.cnblogs.com/kalixcn/p/18019558

相关文章

  • 多线程系列(一) -线程技术入门知识讲解
    一、简介在很多场景下,我们经常听到采用多线程编程,能显著的提升程序的执行效率。例如执行大批量数据的插入操作,采用单线程编程进行插入可能需要30分钟,采用多线程编程进行插入可能只需要5分钟就够了。既然多线程编程技术如此厉害,那什么是多线程呢?在介绍多线程之前,我们还得先......
  • 如何实现基于vue技术的管理系统的用户是否登录
    问题:在进行前后端分离开发时候,我们会处理一些前端用户的登录状态。如果用户没有进行登录,则不允许用户访问某些页面一、登录方式首先可以先了解一下前后端分离后的登录方式(1)Cookie+Session(2)Token二、Cookie+SessionHTTP是一种无状态的协议,客户端每次发送请求时,首先要和服务......
  • Sora:新一轮产业技术革命的爆发点
    新年开工第一篇文章,不聊技术,聊点其他的。从22年下半年开始的裁员降薪潮,至今已经持续一年多了,身边听过的见过的案例不胜枚举。有长达几个月甚至一年找不到合适岗位的,有降薪去外包岗位的,也有直接转行从事其他行业的,大家都在寻找各自的出路,但这个过程中,总免不了迷茫和焦虑。很多人......
  • 哎呀,当时怎么没有想到 | 京东云技术团队
    在我们的测试工作中,是不是经常遇到这样的情形,发生了线上问题,产品、研发或者测试同学一拍脑袋:当时怎么没有想到,怎么给漏掉了呢?明明是一个非常简单的事情,用大拇指都能想到的验证场景,为何当时就漏测了呢?但实际情况是,逃逸到线上的缺陷,疑难杂症式的极端异常的问题很少,大部分都不复杂且......
  • 分布式系统---关键技术“消息中间件”
    消息中间件是一种用于构建分布式系统的软件基础设施,提供了一种异步的,可靠的,可伸缩的消息传递机制。 提高系统性能首先考虑的是数据库的优化,但是数据库因为历史原因,横向扩展是一件非常复杂的工程,所有我们一般会尽量把流量都挡在数据库之前。不管是无限的横向扩展服务器,还是纵向......
  • 糟糕,被SimpleDateFormat坑到啦!| 京东云技术团队
    1.问题背景问题的背景是这样的,在最近需求开发中遇到需要将给定目标数据通过某一固定的计量规则进行过滤并打标生成明细数据,其中发现存在一笔目标数据的时间在不符合现有日期规则的条件下,还是通过了规则引擎的匹配打标操作。故而需要对该错误匹配场景进行排查,定位其根本原因所在......
  • VNCTF2024-WEB-gxngxngxn
    VNCTF2024-WEB-gxngxngxnCheckin签到题,直接看js文件CutePath按照上述穿越下可以看到一串base64加密的,解密后是账号密码:登录看到有新功能,可以重命名文件.我们找到flag.txt文件,但是不能查看,我们可以利用重命名将flag.txt文件传送到share_main目录下,这样我们就可以查看......
  • weblogic
    1.弱口令weblogic后台地址:ip:7001/console常用弱口令:system:passwordweblogic:weblogicadmin:secruityjoe:passwordmary:passwordsystem:sercuritywlcsystem:wlcsystemweblogic:Oracle@1232.任意文件上传漏洞(CVE-2018-2894)[部署war包,getshell]漏洞原理:Weblogic管理端未授权......
  • 配置springcloud 网关gateway 转发websocket请求
    网关是整个项目的统一入口这是直接访问消息服务的请求路径端口号是20007WebSocketService.init("ws://127.0.0.1:20007/ws/"+用户id)显然这样是不符合微服务的方案,所有请求必须经过网关处理,转发到各个服务之中所以我们需要在网关中的yml或者nacos中添加以下配置spring:......
  • 使用 Docker 搭建 Jenkins 与 GitLab 环境,实现触发 Webhooks 构建
    参考https://blog.csdn.net/xueqinglalala/article/details/120883554https://blog.csdn.net/anqixiang/article/details/104968469https://dirask.com/questions/Gitlab-Jenkins-how-to-fix-Error-403-No-valid-crumb-was-included-in-the-request-DWewGjhttps://www.zhih......