You are on page 1of 14

TÌM HIỂU VÀ PHÂN TÍCH

PLAY FRAMEWORK
Nhóm 5 GVHD: LÊ HUỲNH PHƯỚC
SVTH: NGUYỄN HỒ HẢI ANH
LÝ HOÀI LÂM
DƯƠNG XUÂN KHAI
TRẦN MINH ĐỨC
PHẠM LÊ TUẤN KIỆT
Tổng quan về Play Framework
1. Giới thiệu Play Framework

Khi nói đến java web, nhiều người sẽ nghĩ ngay đến Spring, JSF, Struts.... nhưng có 1 framework khác cũng được nhiều
lập trình viên biết tới đó là Play. Play là một framework nhẹ khác mà hầu hết các nhà phát triển đều yêu thích.
 Đây là open source web application, viết bởi Scala và Java. Thực chất đây là 1 Scala frame work, nhưng bạn vẫn có
thể implement bằng java, bởi cả 2 ngôn ngữ này đều chạy trên JVM. Play framework giúp xây dựng web application
với Java và Scala dễ dàng hơn. Play đi theo hướng phát triển web nhẹ và thân thiện với người dùng. Được xây dựng
trên Akka. Play cung cấp resource tiêu thụ dự đoán và tối thiểu (CPU, bộ nhớ, các threads) cho các ứng dụng có khả
năng mở rộng cao.
 Play thân thiện với developer: workflow tốt, tools để build và console quyền lực, an toàn, được xây dựng trên testing
tools và hỗ trợ IDE cho Eclipse và Intellij
 Play được xây dựng trên kiến trúc Model View Controller (MVC), kiến trúc phân chia ứng dụng của bạn làm 3 phần
khác nhau: Model được sử dụng để biểu thị dữ liệu, View hiển thị dữ liệu, Controller điều hướng và xử lý các sự kiện.
 Để tối ưu hóa thời gian phát triển ứng dụng. Play sử dụng quy ước về cấu hình và hot code reloading, có nghĩa là mọi
thay đổi liên quan đến source code sẽ được apply khi lập trình viên refresh trình duyệt mà không phải deploy lại ứng
dụng
 Quy mô có thể dự đoán được. Tầng dưới lớp bảo phủ Play sử dụng mô hình không đồng bộ hóa hoàn toàn được xây
dựng trên tầng đầu của Akka. Kết hợp với stateless, quy mô hoạt động của Play đơn giả và dễ dạng nhận biết được
 Tạo ra các ứng dụng web và mobile hiện đại và hợp xu thế, Play được xây dựng dựa trên các nhu cầu tạp ra các ứng
dụng web và mobile hiện đại.
 Giống với Ruby on Rails, Play cũng sử dụng một cấu trúc project mặc định
 Play dựa trên kiến trúc không trạng thái, nhẹ và thân thiện với web. Các đặc điểm nổi trội bao gồm tốc độ cao, chất
lượng và khả năng mở rộng tốt. Nó được xây dựng dựa trên Akka và mang lại sự linh hoạt để suy nghĩ theo cách cấp
cao hơn – không phải làm gì với phân tử. Dữ liệu mà là cách xử lý sự việc
 Ngoài ra, framework này có các API không đồng bộ cho phép bạn mở rộng quy mô ứng dụng mà không cần giới thiệu
thêm tài nguyên.Vì vậy có thể hỗ trợ tuyệt vời cho các pattern microservice khác nhau
2. Tính năng cơ bản

Dưới đây là tính năng cơ bản của Play:


 Sử dụng mặc định WebServer là Jboss Netty hoặc Akka
 Support Non Blocking IO, Asyncronus
 Sử dụng SBT để quản lý lib và build application
 Đây là RESTful framework
 Hỗ trợ cơ chế persistence layer trên nền JPA
 Dùng Scala để tạo template engine.
 Đây là full stack framework chứa nhiều nhiều thư viện cho việc phát triển common task như JSON parsingm or
authentication.
 Play đã bỏ đi nhiều phương pháp truyền thống được sử dụng trong phát triển web java, Nó không sử dụng Serviets
và cũng không đóng gói project trong file WAR, không sử dụng web application servers lớn như và file XML trong
cấu hình. Dưới đây là Play Ranking
3. Kiến trúc mô hình MVC

Một ứng dụng Play tuân theo mô hình MVC thường áp dụng cho kiến trúc Web, Có 3 layer được định nghĩa trong
folder app, mỗi layer đều ở trong một package riêng biệt.
4. Vòng đời

Play Framework hoàn toàn là stateless và chỉ định hướng Request / Respnse. Tất cả HTTP request đều tuân theo các
con đường tương tự nhau:

 Một HTTP Request được nhận bởi framework.


 Thành phần Router cố gắng tìm các lộ trình xác
định để chấp nhận request này. Các phương
thức action tương ứng sẽ được gọi tới
 Application code được thực thi
 Nếu một view phức tập cần được gernate, một
file template được render.
 Kết quả của một phương thức action (HTTP
Response code, Content) sau đó được viết
thành một HTTP Response.
5. Ưu điểm & Nhược điểm Play Framework

Ưu điểm:
 Cải thiện hiệu quả do tải lại mã nóng
 Play có thể cắm, có thể cấu hình, có thể tùy chỉnh và do đó nó linh hoạt
 Dễ gỡ lỗi; có thể xử lý lỗi trong dev mode đối với lỗi thời gian chạy và biên dịch;
 Được xây dựng trên Netty và hỗ trợ I/O không chặn;
 Mã nguồn mở và mọi thứ hoạt động tốt;
 Bắt đầu học dễ dàng

Nhược điểm:
 Ít cải thiện. Play 2 về cơ bản chỉ là bản viết lại của Play 1;
 Được xây dựng xung quanh I/O không đồng bộ, có nghĩa là viết mã “thực thi sau”
PHẦN 2. CÀI ĐẶT BUILD PLAY
APPLICATION
1. Cấu trúc Play Project

Bố cục của một Play application được chuẩn hóa để giữ mọi thứ đơn giản nhất có thể. Sau lần complie thành công
đầu tiên, một Play application có bố cục như sau:
App/directory
App directory chứa tất cả artifacts thực thi: Java và
Scala source code, template và complied assets
sources. Có ba packages trong app directory, mỗi
package là một thành phần trong mô hình kiến trúc
MVC:
 App/controllers
 App/models
 App/views: Bạn có thể thêm một package của
riêng bạn như package app/utils. Ngoài ra, có
một directory tùy chọn là app/assets cho việc
complied assets như LESS source và
CoffeeScript sources.
Conf/directory
Conf directory chứa các file config của app. Có hai
file config chính là:
 Application.conf: file config chính của app,
nơi chứa cái parameter config
 Routers: File định nghĩa các đường dẫn của
app. Nếu bạn cần thêm các option config cụ
thể cho app của bạn, bạn nên thêm các option
đó vào file application.conf. Nếu một thư viện
cần một file config cụ thể, hãy thêm file đó
vào trong folder conf.
Lib/directory
Lib directory là tùy chọn và chứa các dependencies library, tất cả các file JAR bạn muốn quản lý
bằng vòng tay ngoài hệ thống. Chỉ cần thêm bất kỳ file JAR vào đây, chúng sẽ được thêm
classpath của application của bạn
Build.sbt file
Các khai báo build chính của project được dặt ở
trong file build.sbt tại thư mục gốc của project. Các
file scala trong đường dẫn project/ cũng có thể sử
dụng để khai báo bản build của project.
Project/ directory
Project directory chứa các định nghĩa build sbt:
 Plugin.sbt: định nghĩa các plugins sbt sử dụng
trong project
 Build.properties: chứa các version sbt sử dụng để
build app
Target/ directory
Target directory chứa mọi thứ được gen bởi hệ thống.
Bao gồm:
 Classes/ chứa tất cả các complied class (từ cả Hava
và Scala source)
 Classes_managed/ chứa các class được quản lý bởi
framework (ví dụ như các classes gen bởi router
hoặc template của hệ thống)
 Resource_managed/ chứa các resource được gen ra,
các kết quả complied của LESS CSS và
CoffeeScript.....
 Src_managed/ chứa các sources được gen ra như
Scala sources được gen bởi templaye của hệ thống
 Web/ chứa các assets xử lý bởi sbt.web
2. Các loại gitinore file

Các folders đã được gen ra bị ignore bởi hệ thống kiểm soát version, Đây là các file.gitignore điển hình của một Play
application.
 Log
 Project/project
 Project/target
 Target/TMP

3. DEMO

You might also like