Scala 了解剧本的请求生命周期!应用

Scala 了解剧本的请求生命周期!应用,scala,playframework,playframework-2.0,bootstrapping,Scala,Playframework,Playframework 2.0,Bootstrapping,我是这出戏的新手!web框架,为了了解它是如何工作的,以及它与其他web框架的比较,我希望能够在游戏中进行跟踪!源代码,请求生命周期从开始到结束。我将使用Play!的Scala实现 因为我的大部分经验都是使用PHP框架的,所以我习惯于从web根目录中的index.PHP文件开始,阅读所有包含的配置/引导脚本、依赖项注入处理、请求路由、操作调度,最后是视图/响应呈现 我还没有为Scala/Play找到类似的入口点!申请,我非常希望能朝着正确的方向努力。对请求生命周期的演练当然是非常慷慨的,但我真正

我是这出戏的新手!web框架,为了了解它是如何工作的,以及它与其他web框架的比较,我希望能够在游戏中进行跟踪!源代码,请求生命周期从开始到结束。我将使用Play!的Scala实现

因为我的大部分经验都是使用PHP框架的,所以我习惯于从web根目录中的index.PHP文件开始,阅读所有包含的配置/引导脚本、依赖项注入处理、请求路由、操作调度,最后是视图/响应呈现


我还没有为Scala/Play找到类似的入口点!申请,我非常希望能朝着正确的方向努力。对请求生命周期的演练当然是非常慷慨的,但我真正需要的是展示入口点。

游戏更多的是一个restful框架(read),而不是一个典型的基于模板的框架,如jsp jsf等,具有请求生命周期的概念,尽管它也有模板支持。其基本思想也是基于纯数据(如json)与服务器进行交互,并且dom结构更新的大部分代码都是用javascript编写的,并且只在客户端完成,这实际上更灵活、更简单、更高效


在游戏中,您只需通过在scala类中定义一个方法并将其映射到路由文件中,简单地创建将数据发送到浏览器的方法。和典型的web开发过程一样,您也可以将html文件放在公共资源文件夹(或创建模板)中,当在浏览器中执行时,该文件夹通常会对该方法进行ajax调用

我想这就是你所说的文件:

Play是一个Java应用程序,它在给定端口开始侦听。侦听是使用Netty库完成的,Netty库了解不同类型的网络协议(最重要的是HTTP)。一旦Netty知道发生了什么,它将控制游戏框架


然后,Play Framework将使用全局文件和路由来确定要调用的操作。

默认情况下,Play Framework使用内置HTTP服务器(基于)。因此,与PHP最接近的类比是,游戏既有Apache,也有PHP

PHP使用传统的“类似CGI”范式:为了服务单个HTTP请求,您的程序将启动,并在完成服务请求后终止。在CGI中,为HTTP请求提供服务,Web服务器启动外部程序——您的脚本——并返回其输出。旧版本的PHP只为CGI设计,而在后来的版本中,它以其他方式与服务器交互,因为CGI速度非常慢,但核心原理保持不变

大多数web应用程序技术使用另一种方法:web应用程序只启动一次,然后保持运行,因此一个正在运行的web应用程序实例继续为请求提供服务(并且可以并行地为多个请求提供服务)。在PHP中,它不会在服务单个请求后死亡。这样一来,每次启动应用程序所需的资源就少了很多,而且使用起来也稍微困难一些,因为大多数请求处理都隐藏在框架内,而您的应用程序只需要公开在请求到达并返回响应时调用的控制器方法

它还允许更大的灵活性,例如后台处理可以在web应用程序内部启动,无需外部服务器进程。Play有Akka库,这非常方便

随着越来越多的web应用程序使用Ajax和REST方法,而不是每次都为重量级网页提供服务,它变得越来越重要。无论请求技术如何(轮询、长轮询、iframe with multipart),使用PHP创建具有良好性能的实时消息传递后端几乎是不可能的


但如果从创建视图、模型和控制器的开发人员的角度来看,与PHP MVC框架相比,Play非常相似。在PHP MVC框架和Play框架中,都调用控制器方法或函数,此方法应返回响应,视图通常是模板,模型通常是关系数据库的ORM绑定。

现在将上面的链接移动到以下位置