Giới thiệu Apache tapestry - component oriented java web framework
Model--View-Controller là một mô hình lập trình web khá phổ biến và được hỗ trợ rất mạnh bởi nhiều framework, nhất là SpringMVC. Tuy nhiên, MVC không phải là cách tiếp cận duy nhất trong lập trình web. Bài viết này muốn giới thiệu qua về Apache Tapestry, là một Component-Oriented Java Web ...
Model--View-Controller là một mô hình lập trình web khá phổ biến và được hỗ trợ rất mạnh bởi nhiều framework, nhất là SpringMVC. Tuy nhiên, MVC không phải là cách tiếp cận duy nhất trong lập trình web. Bài viết này muốn giới thiệu qua về Apache Tapestry, là một Component-Oriented Java Web Framework, được tạo ra bởi Howard Lewis Ship, và được Apache Software Foundation thông qua như là một dự án vào năm 2006.
Apache Tapestry nhấn mạnh tính đơn giản, dễ sử dụng và năng suất của nhà phát triển. Nó tuân thủ Convention-Over-Configuration, loại bỏ hầu hết các cấu hình XML. Apache Tapestry sử dụng phương pháp tiếp cận module để phát triển web, bằng cách gắn kết mạnh mẽ giữa mỗi thành phần giao diện người dùng (đối tượng) trên trang web và lớp Java tương ứng của nó. Kiến trúc dựa trên thành phần này vay mượn nhiều ý tưởng từ WebObjects, một kiến trúc của Apple để lập trình Web.
Các tính năng nổi bật:
- Live class reloading Tapestry giám sát hệ thống file để thay đổi các lớp trang Java, các lớp thành phần, các lớp triển khai dịch vụ, các mẫu HTML và các tệp thuộc tính thành phần và hoán đổi các thay đổi vào ứng dụng đang chạy mà không yêu cầu khởi động lại. Điều này cung cấp chu kỳ code-chạy thử-sửa code rất ngắn để cải thiện đáng kể năng suất của lập trình viên.
- Component-Oriented. Các trang có thể được xây dựng với các thành phần nhỏ, mỗi cái đều có một khuôn mẫu và một lớp thành phần.
- Convention-Over-Configuration. Tapestry sử dụng quy ước đặt tên và chú thích chứ không phải XML để định cấu hình ứng dụng.
- Hạn chế sử dụng HTTPSession Bằng cách sử dụng tối thiểu HTTPSession, Tapestry được thiết kế để có hiệu quả cao trong một môi trường được nhóm lại, phiên làm việc, dễ dàng sử dụng trong môi trường cluster.
- Post/Redirect/Get Hầu hết các Form được gửi theo mẫu Post/Redirect/Get, làm giảm nhiều vụ submit form và làm cho URL trở nên thân thiện hơn và đánh dấu trang hơn, đồng thời cho phép các nút Back và Refresh của trình duyệt hoạt động bình thường.
- Inversion Of Control Tapestry được tạo trên lớp Inversion of Control nhẹ có tính tương đồng với Google Guice , nhưng được thiết kế để làm cho hầu hết các khía cạnh của Tapestry có thể được cấu hình và thay thế. Ví dụ về Hello World. Một ứng dụng Tapestry được tối giản, chỉ cần hai files: (không có form, controller....)
HelloWorld.html
<! DOCTYPE html> <html xmlns = "http://www.w3.org/1999/xhtml" xmlns: t = "http://tapestry.apache.org/schema/tapestry_5_3.xsd" > <body> <p> Xin chào, $ {username} </ p> </ body> </ html>
HelloWorld.java
/ ** page class (tự động liên kết với file HTML có cùng tên) * /
public class HelloWorld { public String getUsername () { return "Hello world" ; } }
-
Class transformation Tapestry sử dụng thao tác bytecode để chuyển đổi các trang và các lớp thành phần khi chạy. Cách tiếp cận này cho phép các trang và các lớp thành phần được viết dưới dạng các POJO đơn giản, với một số quy ước và chú thích đặt tên có khả năng bổ sung đáng kể thời gian tải của lớp.
-
Hỗ trợ phía client. Tapestry 5 phiên bản lên đến 5,3 gói Prototype và script.aculo.us Framework, cùng với một thư viện cụ thể Tapestry, để hỗ trợ các hoạt động của Ajax ngay từ trong nền tảng core. Các module của bên thứ ba có sẵn để tích hợp jQuery thay thế, hoặc thêm vào, Prototype / Scriptaculous.
-
So sánh với mô hình MVC. Mô hình MVC: mỗi thành phần giao diện sẽ được phản ánh vào một thuộc tính của đối tượng Form, Controller sẽ nhận đối số là form và input-output thực hiện qua việc đặt các thuộc tính của đối tượng form. Đối với apache tapestry, không có khái niệm form. Một Component gồm 1 file HTML thể hiện phần giao diện, một class java thể hiện phần xử lý tương ứng với giao diện đó. Điều này rất giống với lập trình Desktop nên các lập trình viên chuyển từ môi trường lập trình ứng dụng Desktop sang có thể dễ dàng sử dụng được Apache Tapestry.
Chi tiết hơn về apache tapestry có thể xem tại đây:http://tapestry.apache.org/