我们整天说着前端,后台。到底什么才是后台?
曾经和某网友聊天:
安道尔
我通过了你的朋友验证请求,现在我们可以开始聊天了
泽西岛
你好
安道尔
你也好
泽西岛
你是做什么的呀?
安道尔
我在酒吧上班,做前台的。
泽西岛
哦哦,那咱俩差不多,我做后台的。
我们整天说着前台(前端)、后台(后端)。到底什么才是后台?
前台,后台
前台(前端)后台(后端),在英语中即:Front-End,Back-End。广义上的前端包括客户端(PC、Android、IOS等),现在有个说法叫:大前端。后台即通常意义上的Server。没错,就是在互联网诞生之初即存在的C/S架构。服务的提供方称为Server,一般是一个偏中心化的服务集群。客户端Client为用户接入服务的控制重点。C/S架构有明显的主次之分,这与后来产生各类种子(BT、电驴)下载技术的P2P对等网络相对应。在P2P网络中不区分C或S,每个节点既是C也是S,这便是对等(Peer)网络。
言归正传,后台一词描述的还是Server这一概念,不过由于网络规模的增大,数据量的攀升,Server的后台架构也变得越来越复杂,分层越来越多,早已不是简单Server一词能够囊括的了。
大学的时候,我看到腾讯招聘后台工程师,技能要求是C++,心中满是狐疑。后台开发和C++有什么关系?需要澄清一点。这里的后台开发指的就是Linux上的C++编程。很多人(比如我以前)对后台开发存在误解。通常人们谈到前端后台时,马上就联想到web后台,然后java、php和各种web框架横飞的既视感。
白马非马
其实任何语言都能做后台,web开发属于后台开发的范畴,但后台开发却不只有web开发。两者应该是包含与被包含的关系。提到后台,通信是永远的主题。通常我们谈到Python的Django,PHP的ThinkPHP、Yii框架所涉及到的开发知识,都是聚焦于展现和逻辑。而屏蔽了底层通信的细节,这是框架之利。但也削弱了开发者对于后台达到一切尽在掌握的一些可能性。
从网络协议的角度分析,web后台聚焦的是HTTP。web后台可以看作是一个后台架构中最靠前的东西,它解析了HTTP请求,然后层层转发给了后面整个分布式系统的许多组件,并调用他们的服务。套用腾讯内部经常说的三层架构模型,这一层可被称之为『接入层』。这个三层架构并非是TCP那种网络分层,而是一个比较有年头的架构分层。所有后端系统大抵可以抽象成接入层、业务逻辑层和数据存储层。当然时至今日这个三层模型也已经不能概括全部的企业级后端架构了,然而它却依然有它的代表性。
回说接入层,C++语言进行接入层的实现,一般就是通过CGI了,CGI这被教科书都写进历史的技术,相信很多人都不齿为用。但其实不管是Java的Servlet,C#的WCF,或是Python的WSGI,Ruby的Rack多多少少都是受CGI影响而演化而来。行远自迩,学习了解CGI,其实也不算是浪费时间。关于CGI可以阅读:
万法归宗:CGI
当然这些还不是接入层的全部,只是微观上的,编程语言级别的接入层。其实HTTP协议的使用、HTTPAPI接口的设计实现(比如Restful,也可以不是)以及以Apache/Nginx代表的WebServer的具体应用,也都算是接入层的一部分。
除了HTTP,企业内部主机之间绝大部分是自定义协议,而这些协议多半是在TCP或UDP之上实现应用层协议。这个层面上来说C++后台
转载请注明:http://www.hafeiqichec.com/gjxz/19567.html