什么是web框架?

什么是web框架?

我们解释一个概念的时候,通常会用到其他更多的概念去解释它,如果听的人不理解解释它的概念,那么这个解释是失败的,因此首先要回答一下解释web框架中所用到的概念。

回答这个问题前,首先需要需要回答如下子的问题:
什么是服务器应用;如何编写web程序;软件框架的概念

什么是服务器应用(web程序)?

以bs架构为例子解释。
浏览器、服务器构成的b/s软件架构风靡全球,b为浏览器,s为服务器。任何一个可以随时点击访问的网站的背后都是有着7*24不停歇提供服务的服务器,服务器是一台不关机的电脑,数据与程序存储在其中,当我们通过web上网时,本质上就是通过浏览器去访问远处电脑(服务器)里面的资源。这是这么一个过程:用户在浏览器上输入一个网址,浏览器解析网址,找到那台对应着网址的服务器,服务器上面的应用接受到用户的请求,给出响应,一般来说是返回html,这个html可以被浏览器解析,然后渲染成我们熟知的网页。基于web的bs架构提供的服务本质上就是这么一个过程,而服务器应用就在其中起到了提供服务、数据的作用。

如何编写一个web程序?

bs架构有两端,一个是b,另一个是s。浏览器(b)不需要开发者去开发,科技巨头已经提供了现成的浏览器,浏览器的开发难度极高,相当于小半个操作系统,因此b并不需要开发者去考虑。
而s,即服务器端,就是web软件开发者主要需要的地方,服务器的职责是接收到请求后给出相应的响应,比如一个注册的请求来了,就需要把注册信息保存到数据库中,然后返回页面注册成功的信息。
在服务器上的软件,本质上就是一个软件,和我们在电脑上打开的日历、日记、计算器没有本质区别,只不过web服务器上的软件用起来不太一样。服务器上的软件称为web程序,web程序输入的信息来自于网络(或者是定时的脚本),收到请求的web程序像其他任何一个软件一样,执行自己其中的业务代码,然后返回代码的执行结果(或者不返回)。

在这个过程中,一共有两个过程:一是接受来自因特网的请求信息,二是处理请求,分开来讲web程序是如何进行这两个过程的。
首先是一,接收来自因特网的信息,这个涉及到了计算机网络的知识,不过也不是很多,根据UDP协议,每台主机都给自己上面运行的程序设定了一个端口,接收来自因特网的专门发给这个程序的信息。web程序也不例外,web程序在服务器上运行,对外操作系统给web程序设定了一个专门的端口与互联网相连,web程序自己也不断的监听来自于这个端口的信息,这样,因特网的信息就通过端口传到了软件里面。那么信息传来了,该如何识别呢?那就看这个信息(数据报)是以什么样协议来传输的,按照传输的协议来解析数据,获得web软件可以运行参数,然后执行web程序。在上面的这个过程,解析来自因特网的信息是开发者需要自己做的,不同的语言有不同的做法,例如Java就提供了servlet类来接收来自因特网的信息,不过编写起来相当繁琐。

第二个过程就是处理请求,这是所有程序都要做的事情,不过web程序一般不会自己处理所有的请求,例如存储数据就需要依赖其他的软件比如说数据库软件MySQL、Oracle、sql server啥的,web程序很多活儿自己都没法干,它只能是一个协调一切的大哥,类似于工程里面的总包,专业的活儿需要交给专业的人来干。这么一来web程序的第二个作用就比较清晰了,因此web程序需要维护好众多的干活儿的其他程序(设置好依赖,参数等等),这些程序可能都不是一个语言写的,要求也七七八八,要把这些软件组织起来为web程序所用还是很考验开发者的技术能力的。
同时如果web程序具备一定的规模的时候,写起来就非常难了,原因有很多,例如整个系统的复杂度上升带来的代码重复、线程安全、数据持久化等问题,这个时候仅靠单一的开发人员有时候是无法解决这些复杂问题的,此时就需要引入开发框架这个有力的工具了。

软件框架是什么?

在软件开发中,有很多重复的,基础的工作要做,比如说接收因特网的请求,解析基于http协议下的数据报啥的,管理好依赖的软件啥的(设置依赖软件的参数、驱动等等),这些都是通用性的与业务无关的工作,这些工作不需要专门的业务开发去搞,直接提前搞好就可以了。当然,除了基础性的工作,开发框架还能提供很多安全性、成熟的软件开发解决方案(解耦合、提升可重复性等),可以让新手也可以开发出安全性很强、解耦程度很高的软件。


最终回答

这么一来,就可以很简单的回答最初的问题了:web框架就是服务于web软件,让web软件开发更加高效、便捷的软件框架。

你可能感兴趣的:(软件工程,服务器,网络)