我想我知道什么是框架和一些着名的框架,如ruby on rails,spring,我认为我可以区分Web服务器和Web应用程序服务器的含义。
但我不知道WAS和框架之间有什么不同,对我来说,我认为框架是一种WAS,因为框架正在做许多与来自Web服务器(Apache或nginx)的数据库处理请求相关的动态工作
我对Web编程中这两部分之间的关系感到困惑。
你能解释一下吗?
答案 0 :(得分:1)
基本上,框架只负责提供对http请求的响应(包括按照您的说法处理数据库)。但是,无论何时新的http请求到达,Rails都不负责打开新线程(或在某些实现中,一个进程) - 这是由应用服务器(如Puma,Webrick,Unicorn等)完成的。这称为并发(简称为同时为多个请求提供应用程序的能力),纯粹是应用服务器的工作。另一件事是理解(和解析)http请求--Rails没有实现http,它从实现http的应用服务器接收就绪请求。
在ruby land中,每个部分的工作由机架协议https://rack.github.io/定义。 Rails,作为机架应用程序,只是等待"某些东西" (网络应用程序服务器)来电话'它(带有一个http请求),然后返回响应。
总而言之:应用服务器需要处理线程或多处理以向Rails提供http请求(应用服务器基本上总是在某个套接字上侦听新请求,并通过分叉进程提供并发,打开新线程或两者。这取决于应用服务器)。因此,应用服务器还需要了解http(能够解析http请求),以便将其服务到Rails。
Web框架Rails只需要处理http请求并返回响应。
答案 1 :(得分:0)
对于那些想要了解Web服务器和应用服务器之间差异的人。 参考What is the difference between application server and web server?