Thứ Năm, 6 tháng 10, 2016

JSF Framework

1. Định Nghĩa

- JSF là viết tắt của JavaServer Faces, một bản miêu tả kĩ thuật giúp đơn giản hóa việc phát triển giao diện cho các ứng dụng Web viết bằng Java bằng cách dùng các thành phần dùng lại được (reusable components), là một mã nguồn mở dựa theo mô hình MVC, định hướng cho việc xây dựng giao diện người dùng cho web.

- JSF là một bộ khung (framework) phát triển các ứng dụng Web viết bằng Java nhằm làm đơn giản hóa quá trình phát triển giao diện người dùng cho các ứng dụng J2EE. Để tạo ra giao diện hiển thị, JSF dùng dạng cấu trúc cây của các thẻ, mỗi thẻ là một thành phần giao diện (component) và FacesServlet servlet sẽ thực hiện công đoạn chuyển đổi ra giao diện tương ứng cho người dùng với định dạng HTML. Ngoài ra, JSF cũng có thể sử dụng các kĩ thuật hiển thị khác, như XUL. 

- JSF bao gồm:
  • Một tập các hàm API để biểu diễn các thành phần UI (giao diện người dùng) và quản lí thạng thái của chúng, xử lí các sự kiện và kiểm tra dữ liệu đầu vào, qui định việc di chuyển trang (page navigation), hỗ trợ tính đa ngôn ngữ và hỗ trợ cho người sử dụng (accessibility)
  • Một số thành phần (component) có sẵn
  • Hai thư viện chứa các thẻ tùy biến JSP (JavaServer Pages custom tag) để có thể biểu diễn một JavaServer Faces interface bên trong một trang JSP.
  • Mô hình sự kiện ở phía máy chủ (server-side event model)
  • Khả năng quản lí trạng thái
  • Managed Beans (JavaBeans được tạo bằng dependency injection)

2. Thành phần của JSF


- Managed Beans(còn được gọi là Backing Bean): Các Java Bean xác định tập hợp các giá trị từ các UI component và bổ sung các phương thức listener cho event. Chúng cũng có thể nắm giữ các tham chiếu đến các UI component


- Converter: Hỗ trợ cơ chế ép kiểu dữ liệu trong quá trình xử lý


- Navigation: Khả năng di chuyển từ một trang đến trang khác. JSF có một hệ thống navigation mạnh mẽ tích hợp với những event listeners.


- Event anh Listeners: Hỗ trợ cơ chế đón nhạn biến cố và xử lý biến cố(Event Handling) trên khái niệm của Model trong MVC kết hợp với Managed Bean.


- UI component: Hỗ trợ trình bày giao diện để người dùng tương tác trực tiếp và trình bày kết quả về phía người dùng.


- Renderer: Trả lời cho việc hiển thị một UI component và trao đổi một dữ liệu nhập của user vao giá trị của component. Renderer có thể được thiết kế để làm việc với một hoặc nhiều UI component, và một UI component có thể tập hợp với nhiều renderer khác nhau.


- Validator: Hỗ trợ cơ chế kiểm tra dữ liệu trên các thành phần UI để đảm bảo dữ liệu được nhập đúng và có ràng buộc theo đúng yêu cầu của ứng dụng


- Message: Hỗ trợ trình bày các thông tin về phía người dùng, thông báo lỗi hay hỗ trợ ứng dụng đa ngôn ngữ


3. JSF Architecture

- Khi xác định request từ người dùng, JSF thực hiện phase đầu tiên là Restore View:

+ Thực hiện xây dựng các thành phần giao diện từ form yêu cầu của người dùng.

+ Các UI Component được tổ chức theo dạng hình cây và trạng thái của các control hay nói cách khác là giá trị nhập liệu của người dùng (State), trạng thái kích hoạt biến cố mà người dùng chọn lựa kích hoạt được thu thập, tổng hợp và đưa vào Faces Servlet.

- Sau khi đã hoàn tất phase Restore View, JSF chuyển sang phase thứ 2 là Apply Request Value:

Từ thông tin thu thập được, JSF chuyển qua ép kiểu tương ứng thành kiểu dữ liệu khai báo từ trong managed bean hay tương ứng với loại control của form nhập liệu.

+ Nếu dữ liệu không thể ép kiểu thì tức thời JSF thông báo lỗi và response cho Faces Context hay Faces Servlet để Faces Servlet thông báo cho người dùng.

+ Nếu việc ép kiểu – chuyển kiểu diễn ra thông thường, JSF chuyển dữ liệu sang phase tiếp theo.

- Trong phase Process Validation:

+Dữ liệu tiếp tục được kiểm tra ràng buộc tương ứng với yêu cầu xây dựng ứng dụng và cấu hình trong thành phần validators, trong bean.

Nếu dữ liệu valid bị sai thì tức thời JSF thông báo lỗi và response cho Faces Context hay Faces Servlet để Faces Servlet thông báo cho người dùng.

Nếu đúng thì chuyển dữ liệu cập nhật vào trong managed beans
- Update Model Value: cập nhật giá trị tương ứng vào các thuộc tính trong backing beans – managed beans.


- Invoke ApplicationKhi cập nhật thành công:

Faces Servlet hay Faces Context dựa trên biến cố kích hoạt, thực hiện gọi (invoke) phương thức xử lý tương ứng, xác định trang jsf kết xuất.

Đón nhận kết quả xử lý.


- Render response:

Dữ liệu kết xuất khi xử lý xong sẽ được chuyển đổi tương ứng nạp vào form, cập nhật giá trị các control UI.

+ Render để trình bày kết quả trên form và đưa kết xuất cho Faces Servlet hay Faces Context để response cho người dùng kết quả thực hiện.


4.Ưu - Nhược điểm của JSF

- Ưu điểm: thời gian phát triển ứng dụng nhanh mà vẫn hỗ trợ AJAX. JSF.
 
- Nhược điểm: JSF dựa trên cơ chế stateful component (tương tự cơ chế của ASP.NET WebForm) nên có nhược điểm là dung lượng request, response gửi qua lại giữa client-server lớn, dẫn đến thời gian giao tiếp giữa 2 phía sẽ lâu. Bản chất của HTTP là stateless , trong khi JSF cố giữ trạng thái các component trong ứng dụng bằng cơ chế stateful của component.

5. Chốt
- Tách biệt hoàn toàn giữa hành vi và cách trình bày.
- Kiểm soát tính có trạng thái (statefulness) ở mức thành phần.
- Các sự kiện dễ dàng được liên kết với mã phía máy chủ.
- Sử dụng các khái niệm thành phần UI và tầng Web (Web-tier) quen thuộc.
- Cung cấp nhiều dụng cụ của nhà sản xuất phần mềm đã tiêu chuẩn hóa.
- Sự hỗ trợ IDE tuyệt vời.
Đây là những lí do thích hợp nhất để cho thấy sự cần thiết của JSF trong việc phát triển giao diện Web viết bằng ngôn ngữ Java.  

Không có nhận xét nào:

Đăng nhận xét