Web技术简史、前后端分离、游戏

news/2024/10/7 13:47:33 标签: 前端, 游戏, 前后端分离, javascript, css, unity, cocos

Web技术简史

从最早的大型机到个人电脑,再到互联网、移动互联网,Web技术发展极大促进了编程语言发展,短短几十年,编程模式变化巨大,从浏览器网页需求,到Corba/Java/DCOM解决不同语言互联,到PHP/JSP/ASP,到.NET/Java中间件技术,再到手机、平板网络访问,云服务、微服务、前后端分离,技术层出不穷,用户体验越来越好。

Web编程语言简史

  • 最早浏览器访问服务器静态html页面,没有任何动态页面机制。

  • 逐渐人们发现动态生成网页的需求,如订单需求不可避免,CGI应运而生,Perl语言是第一个写CGI的正式语言。Servlet是利用Java语言生成动态HTML,PHP/JSP/ASP都可看到一种CGI.

  • CGI一般是每次请求调用对应进程,结束后退出进程。多次访问效率很低,Fast-CGI产生,避免每次请求都新建进程(也包括从外存加载)的开销,让CGI进程常驻,大幅提升效率。

  • 为了缓解CGI产生过多的客户端和服务器消息传递,客户端脚本应运而生。如VBScript和JavaScript.

前后端分离

随着移动互联网快速发展,大数据、高并发和安全愈发重要,前后端分离成大势所趋。

不分离和分离优缺点

  • 前后端不分离可能带来安全风险
    • 跨站脚本攻击(XSS):在前后端不分离的情况下,前端代码负责处理所有的用户输入和输出,如果未正确地过滤或转义这些输入,攻击者可以利用漏洞注入恶意代码,导致XSS攻击。
    • 跨站请求伪造(CSRF):在前后端不分离的情况下,攻击者可能会利用一些信任漏洞,例如通过在用户浏览器中存储一些令牌,来伪造用户的请求。
    • 数据泄露和敏感信息泄露:如果前后端不分离,前端代码可能会直接与后端数据库进行交互,从而可能导致数据泄露或敏感信息泄露。

  • 分离带来的优势
    • 前后端分离有助于提高开发效率,改善用户体验,简化代码结构,提高代码可维护性和应用性能,同时为后期功能升级和扩展提供便利。

前后端编程语言

  • 前端
    • HTML、CSS、JavaScript、TypeScript等。

  • 后端
    • Go、Java、Python、Node.js、PHP、Ruby、C#等。

游戏

游戏作为一种特殊的程序,讨论游戏需要谨慎,不同类别的游戏占用的服务器或客户端资源大有不同,基本上所有编程语言都可以做游戏,只是根据效能、FPS、绚丽程度,可使用的编程语言有极大不同。

游戏标准

  • OpenGL (ES) 和DirectX

游戏引擎

  • BigWorld
    • C++做引擎。

  • Unity 3D
    • 覆盖主流PC/移动和消费平台,代表作品王者荣耀、完美世界、诛仙等。
    • 运行环境是.NET.
    • 核心物理引擎PhysX, 采用C/C++,游戏引擎是C#,给开发者C#/C++编程接口,除此之外,Unity也提供Lua、Javascript和Python脚本接口,早期还支持Boo语言(一种非常类似Python的脚本语言,运行于.NET框架).
    • Unity客户端开发官方建议C#,服务器端为了提升效率也可选用C++. 客户端代码可使用Mono JIT或利用IL2CPP转换成C++.
    • Unity C#代码可编译成本机DLL,以加速执行效率。
    • 为支持Lua, Unity环境一般集成Lua虚拟机, 此虚拟机用C语言编写。
    • UnityScript是指U3D使用的JS, 它是JS的增强,静态类型检查并有OOP, 运行能力超过JS.

  • Cocos2d-x
    • 核心引擎采用C++,提供C++、Lua、Javascript三种开发者编程接口,支援涵盖主流PC/移动端/浏览器,基于OpenGL ES和Metal(Apple 2014年推出)。

高性能

3A大作往往意味着客户端较高渲染能力和服务器端多帧实时处理计算和网络能力。

  • 客户端
    • 需要高fps, 客户端渲染每秒需要处理完30~60fps不等,就是16~33ms一帧。搭配带虚拟机或者脚本语言会更慢,最优的做法是用接近硬件的语言。

  • 服务端
    • 服务器端处理所有客户端请求,假设人数为N,需要将数据包状态发送到每个客户端,耗时复杂度为O(N2).
    • 例如在线100人,每个客户端每秒至少同步10个数据包,理论计算,每秒服务器需要处理100 * 99 * 10 = 99000个数据包。
    • 网络游戏为了解决客户端外挂欺诈问题,例如碰撞检测等功能会在客户端和服务器端全部做一遍。
    • 如果不采用高性能编程语言,服务器无法承载如此大的数据处理。


若文章对您有帮助,欢迎关注。助您在编程路上越走越好!

微风不燥,阳光正好,你就像风一样经过这里,愿你停留的片刻温暖舒心。

我是程序员小迷(致力于C、C++、Java、Kotlin、Android、iOS、Shell、JavaScript、TypeScript、Python等编程技术的技巧经验分享),若作品对您有帮助,请关注、分享、点赞、收藏、在看、喜欢,您的支持是我们为您提供帮助的最大动力。


http://www.niftyadmin.cn/n/5692916.html

相关文章

C++:STL常用算法随笔

主要的头文件#include <algorithm> < functional> <numeric> 遍历算法&#xff1a; for_each、transform(搬运容器到另一个容器中 ) void print1(int val) {cout << val <<" "; } for_each (v.begin(),v.end() , print1) 或者用仿…

使用前端三剑客实现一个备忘录

一&#xff0c;界面介绍 这个备忘录的界面效果如下&#xff1a; 可以实现任务的增删&#xff0c;并且在任务被勾选后会被放到已完成的下面。 示例&#xff1a; &#xff08;1&#xff09;&#xff0c;增加一个任务 &#xff08;2&#xff09;&#xff0c;勾选任务 &#xff…

Solidity 设计模式:实现灵活与可扩展的智能合约架构

Solidity 作为以太坊智能合约的主要编程语言&#xff0c;拥有许多独特的设计模式&#xff0c;这些模式帮助开发者实现更加灵活、可扩展和安全的合约架构。设计模式不仅能够简化开发过程&#xff0c;还能减少常见的编程错误&#xff0c;并提高智能合约的可维护性和可升级性。本文…

十、kotlin的协程

协程 基本概念定义组成挂起和恢复结构化并发协程构建器作用域构建器挂起函数阻塞与非阻塞runBlocking全局协程像守护线程 Job的生命周期 常用函数延时和等待启动和取消启动取消 暂停 协程启动调度器启动方式启动模式线程上下文继承的定义继承的公式 协程取消与超时取消挂起点取…

在 Koa 中,中间件函数的参数ctx是什么?

在 Koa 中&#xff0c;ctx 是指 context 对象&#xff0c;它是请求与响应的上下文&#xff0c;封装了 request 和 response。每当 Koa 收到一个 HTTP 请求时&#xff0c;都会为该请求创建一个 ctx 对象&#xff0c;ctx 使开发者可以通过它方便地获取请求信息并设置响应。 ctx …

JavaScript 事件处理基础

在网页中添加事件监听器&#xff0c;可以通过JavaScript代码来实现。 要处理用户的交互事件&#xff0c;需要先选择要添加事件监听器的元素&#xff0c;可以使用document.querySelector()或document.getElementById()等方法来获取元素。 然后&#xff0c;使用addEventListene…

NFT 是什么?

NFT 是什么? NFT,全称Non-Fungible Token,即“非同质化代币”,是一种基于区块链技术的独特数字资产。NFT的核心特性在于其唯一性、不可分割性和不可替代性,这使其与传统的加密货币(如比特币、以太坊等)形成了鲜明的对比。比特币等加密货币是同质化的,每个单位之间可以…

基于Es的分词查询通过高亮效果实现前端高亮显示!!!!

引言&#xff1a; 经常我们在浏览器界面搜索关键词的时候&#xff0c;浏览器返回给我们的页面都是高亮显示关键词的效果&#xff0c; 如下&#xff1a; 我们要简单实现这个效果很简单&#xff0c;可以通过多种办法&#xff0c;这里通过Es 的高亮效果实现给我们关键字字段加自…