KHO TRI THỨC KHO TRI THỨC

Liferay: So sánh giữa Liferay MVC va Spring MVC
Ngày đăng 03/04/2017 | 09:48

So sánh giữa Liferay MVC và Spring MVC là một chủ đề nóng nhất trong cộng động phát triển ứng dụng Liferay. Lập trình viên luôn bối rối khi chọn một trong hai framework này.

So sánh giữa Liferay MVC và Spring MVC là một chủ đề nóng nhất trong cộng động phát triển ứng dụng Liferay. Lập trình viên luôn bối rối khi chọn một trong hai framework này. Trong bài viết này tôi sẽ so sánh giữa hai framework để tạo portlet trong Liferay.

Trước khi thảo luận chi tiết hơn, bạn có thể tham khảo ở các blog sau Liferay MVC Portlet và Spring MVC Portlet để hiểu các khái niệm cơ bản. Để hiểu được sự giống và khác nhau giữa Liferay MVC và Spring MVC, ta sẽ đi so sánh các đặc trưng giữa hai framework này.

Liferay MVC với Spring MVC

1. Framework

- Spring MVC là một kiến trúc đầy đủ để xây dựng các ứng dụng web mạnh mẽ, linh hoạt và loosely coupled (các thành phần được kết nối với nhau nhưng giảm đến mức thập nhất sự phụ thuộc lẫn nhau).

- Mặt khác, Liferay MVC là một framwork nhẹ chỉ để xây dựng các portlet trong Liferay.

2. Các lớp Portlet.

- DepatcherPortlet làm việc như một lớp portlet class trong Spring MVC. DepatcherPortlet là bộ điều khiển chính để phân phát các yêu cầu đến xử lý riêng biệt.

- MVCPortlet (và các lớp con) là bộ điều khiển của Liferay MVC.

3. Phương thức Render:

- Spring MVC cung cấp các nhiều phương thức render. Sẽ có một phương thức render mặc định được gọi trong các trường hợp không chỉ định một render cụ thể nào. Để gọi các phương thức render khác, bạn cần truyền khóa ánh xạ phương thức render với một tham số action tại lúc tạo render URL.

- Liferay MVC chỉ có một phương thức render. Tuy nhiên, Liferay cung cấp cơ chế để sinh ra các file jsp khi chạy. Render URL được sử dụng để gọi phương thức render.

4. Phương thức Action (dùng khi thêm, sửa, xóa):

- Cả Liferay MVC và Spring MVC đều hỗ trợ nhiều phương thức action.

5. Phương thức Resource (dùng trong trường hợp upload file, sinh json data):

- Trong Spring MVC, bạn có thể tạo nhiều phương thức resource

- Trong Liferay MVC, bạn chỉ được định nghĩa một phương thức resource.

6. Tính di động:

- Spring MVC không phụ thuộc vào bất kỳ cổng thông tin nào. Bạn có thể triển khai Spring MVC Portlet trên một công thông tin bất kỳ.

- Liferay MVC chỉ tạo các porlet cho công thông tin Liferay. Tất cả các lớp cơ bản chỉ được sử dụng prong Liferay portlet. Vì lý do này, bạn không thể triển khai Liferay MVC Portlet trên các cổng thông tin khác.

7. Hỗ trợ bởi Liferay IDE

- Hiện tại, Liferay IDE không hỗ trợ tạo ra Spring MVC Portlet. Nhưng đừng lo, bạn có thể tạo Spring MVC Portlet trong Liferay IDE theo hướng dẫn tại đây.

- Liferay MVC là portlet sẵn có được cung cấp bởi Liferay. Nó được hỗ trợ bởi Liferay IDE.

8. View

- Với Spring MVC Portlet, bạn có thể cắm thêm nhiều công nghệ như JSP, Freemarker, Velocity, PDF, ... Spring cung cấp các resolver để sinh ra các định dạng đầu ra khác nhau và chúng được gọi là các công nghệ view. Đường dẫn đến các view được định nghĩa trong các file context.

- Liferay MVC cung cấp công nghệ JSP cho phép hiển thị nội dung một cahcs rất đơn giản. Đường dẫn đến các view được ánh xạ trong file portlet.xml.

9. Tích hợp

- Spring MVC Portlet framework kế thừa tất cả các đặc điểm của Spring MVC (web). Bởi vậy, nó mặc định cung cấp khả năng tích hợp.

- Liferay MVC không có khả năng tích hợp này.

10. Sử dụng bộ nhớ

- Liferay MVC kế thừa các lớp được cung cấp bởi Liferay và không có bất kỳ sự phụ thuộc nào khác. Nó tiêu thụ ít bộ nhớ hơn so với Spring MVC Portlet. Nhưng sự tiêu thụ bộ nhớ dựa vào mã nguồn của portlet trong thực tế. Nhưng nếu so sánh giữa các portlet thuần túy (không có bất kỳ nghiệp vụ nào được cài đặt) thì Liferay MVC tiêu thụ bộ nhớ ít hơn.

11. Sử dụng Liferay MVC hay Spring MVC và khi nào thì sử dụng?

- Câu trả lời đơn giản nhất là tùy trường hợp.

- Liferay MVC là một framework nhẹ. Nó cung cấp bộ khung cơ bản để tạo ra các portlet trong Liferay. Nó có thể được sử dụng khi bạn muốn portlet của mình thực hiện những công việc đơn giản mà chỉ đòi hỏi một hoặc hai phương thức action và với một lượng nhỏ các phương thức render.

- Ngược lại, Spring MVC portlet là một MVC Framework với đầy đủ các đặc điểm. Nó cung cấp rất nhiều chức năng được kế thừa tử Spring Web MVC. Bạn cũng có thể phát triển portlet trong Spring MVC khi:

+ Portlet của bạn phải thực hiện nhiều thao tác

+ Bạn cần nhiều phương thức render/action

+ Spring MVC hộ trợ nhiều phương thức render và resource.

                   + Thay vì viết nhiều lệnh điều khiển if-else trong một phương thức render/resource thì bạn có thể viết riêng ra các phương thức render/resource.