Thứ Năm, 29 tháng 9, 2016

WEBENT - Buổi 1: Tổng quan về Java EE

I. Khái niệm:
Java EE (Enterprise Edition) là một nền tảng được sử dụng rộng rãi, chứa một tập hợp các công nghệ được phối hợp vào nhau, làm giảm đáng kể chi phí và độ phức tạp của việc phát triển, triển khai và quản lý các tầng làm việc, các ứng dụng máy chủ trung tâm. Java EE được xây dựng dựa trên nền tảng Java SE và cũng cấp thêm một tập các API (giao diện lập trình ứng dụng) để phát triển và hoạt động các ứng dụng phía máy chủ (Server-Side Applications) một cách mạnh mẽ, có khả năng mở rông, đáng tin cậy, di đông (portable) và bảo mật.

Một số thành phần cơ bản bao gồm:
- Enterprise Java Beans (EJB): một thành phần kiến trúc của các ứng dụng server được quản lý, sử dụng để bao gói (encapsulate) các business logic của các ứng dụng. Công nghệ EJB cho phép phát triển nhanh chóng và đơn giản hóa các ứng dụng phân tán, các giao dịch an toàn và di động dựa trên công nghệ Java.
 - Java Persistence API (JPA): một framework cho pháp nhà phát triển quản lý dữ liệu bằng cách sử dụng ánh xạ đối tượng quan hệ (Object Relational Mapping - ORM) trong các dứng dụng được xây dựng trên nền tảng Java.

II. Cấu trúc đó được chia ra làm 3 tầng:
- Client: Bao gồm các giao diện mà qua đó các ứng dụng được truy cập. Giao diện được phát triển để được sử dụng bởi khách hàng, nhân viên, nhà cung cấp của doanh nghiệp.
- Middle: thực hiện logic của các ứng dụng thông qua Beans và các tập tin lớp khác của ứng dụng.
- Data: Bao gồm tất cả các dữ liệu đó mà được truy cập bởi các ứng dụng.

III. Ứng dụng đa tầng:
 * Thành phần khác nhau của Java EE ứng dụng đa tầng là: Java EE clients, Web components, Java EE components, Database components, Security components.
- Java EE clients tham chiếu cho người sử dụng cuối cùng hoặc thực thể mà các ứng dụng được thiết kế: Web clients, Application clients, Applets, Java Bean components.
- Cả hai thành phần Web và các thành phần Java EE thực hiện logic kinh doanh cho các ứng dụng web và các ứng dụng kinh doanh tương ứng: Servlets, JSP, và JSFs là những thành phần Web trong một ứng dụng Web. Các trang tĩnh HTML cũng là những thành phần web. Enterprise beans thực hiện logic trong trường hợp ứng dụng doanh nghiệp.
- Các tầng thông tin doanh nghiệp bao gồm các cơ sở dữ liệu của ứng dụng.
- Thành phần bảo mật liên quan đến việc thực hiện các phương pháp bảo mật liên quan đến các ứng dụng dữ liệu.
 * Hình dưới đây là minh họa kiến trúc tầng đa và các thành phần tương ứng của nó:
IV. Web và Máy chủ ứng dụng:
- Các máy chủ Web bao gồm một thùng đựng Web chứa tất cả các thành phần Web.
- Các máy chủ ứng dụng có chứa Web cũng như một thùng đựng EJB chứa tất cả các thành phần Java Bean doanh nghiệp:
 + Máy chủ Web chấp nhận yêu cầu từ khách hàng thông qua các trang Web và ứng phó với các yêu cầu với các trang Web thích hợp.
 + Các thông tin liên lạc giữa các máy chủ của khách hàng và Web diễn ra thông qua Hyper Text Transfer Protocol (HTTP). 
 + Một máy chủ ứng dụng là một thành phần phần mềm mà được phụ trách cho tất cả các hoạt động của doanh nghiệp và thực hiện logic của doanh nghiệp.

V. Phát triển và triển khai:
 - Sau đây là các giai đoạn trong việc phát triển một ứng dụng Java:
 + Nền tảng Java mời thầu và các công cụ để phát triển.
 + Phát triển các thành phần của các nhà cung cấp thành phần ứng dụng.
 + Các thành phần được tạo ra bởi các nhà cung cấp ứng dụng được lắp ráp và tiếp tục triển khai.
 - Cung cấp dịch vụ sản phẩm là các nhà cung cấp đã phát triển Java EE API theo đặc điểm kỹ thuật tiêu chuẩn.
 - Cung cấp dịch vụ công cụ là những nhà cung cấp mà đã tạo bộ công cụ phát triển ứng dụng như Eclipse, NetBeans, và các công cụ khác để lắp ráp, triển khai, và đóng gói.
 - Sau đây là các vai trò nhà phát triển khác nhau cung cấp các thành phần:
 + Bean developer: Viết và biên dịch mã nguồn, tạo ra các mô tả triển khai, và các gói tập tin class như một tập tin EJB JAR.
 + Web component developer: Viết mã nguồn cho các servlet, các file JSP, JSFs, và HTML. Các tập tin .class, file .jsp, và các tập tin .html tạo được đóng gói dưới dạng file WAR.
 + Application assember: Nhận được tất cả các thành phần từ các nhà cung cấp thành phần ứng dụng và lắp ráp các tập tin JAR và WAR tương ứng để EAR (Enterprise Archive) tập tin.
 + Application deployer: Triển khai các ứng dụng trong môi trường hoạt động.

VI. APIs trong Java EE 7:




Thứ Tư, 28 tháng 9, 2016

WEBENT - Buổi 2: Mô hình MVC

MVC (Model - View - Controller) là gì? Một mẫu thiết kế nhằm mục tiêu chia tách phần Giao diện và Code để dễ quản lý, phát triển và bảo trì.
Trong đó:
 - Model: Lớp chứa thông tin đối tượng (dữ liệu), tương tác với Database. Chịu trách nhiệm chính trong mô hình hóa này.
 - View: Giao diện của hệ thống tương tác trực tiếp với người dùng.
 - Controller: Nhận yêu cầu từ người dùng và sử dụng Model, View để xử lý và trả kết quả cho người dùng.

Vì sao cần có MVC? Sự nhập nhằng giữa Giao diện và Code trong các ngôn ngữ lập trình Scripting như JSP, PHP, ASP làm cho Code chương trình khó hiểu, khó bảo trì, khó hình dung trong quá trình cài đặt hệ thống. MVC ra đời với mục tiêu khắc phục những vấn đề đó. Điều này, bạn sẽ thấy rõ ràng hơn trong các phần tiếp theo khi chúng ta tiến hành áp dụng MVC để xây dựng ứng dụng.

Sự khác biệt giữa MVC 1 và MVC 2:
 * MVC 1:
 - Khi người sử dụng dùng các nút bấm, menu hoặc link … trên trình duyệt Web (Web browser) để thực hiện một thao tác, một lệnh (có thể kèm theo các tham số) được gửi tới một trang JSP tương ứng. 
 - Trang JSP này sẽ khởi tạo một hoặc nhiều Java Bean (nếu cần thiết), truyền các lệnh cần thi hành tới Java Bean. Chú ý rằng đây là các Java Bean thông thường, chứ không phải Enterprise Java Bean (EJB).
 - Sau khi Java Bean thực hiện xong việc truy xuất hoặc cập nhật dữ liệu, trang JSP ban đầu có thể hiển thị dữ liệu lấy từ Bean (JSP ban đầu đóng luôn vai trò View), hoặc chọn một trang JSP khác để hiện dữ liệu từ Bean (JSP ban đầu đóng luôn vai trò Controller). Trong một thiết kế tốt, để bảo đảm việc tách rời phần trình bày và logic của chương trình, trang JSP nhận request chỉ đóng vai trò Điều khiển (Controller).
 - Có một nhược điểm là phần logic điều khiển được viết trong trang JSP, như vậy phần chương trình Java phức tạp dùng để điều khiển sẽ bị lẫn vào trong mã HTML dùng để trình bày. Độ phức tạp của chương trình càng cao, thì trang JSP càng khó bảo trì. Hơn nữa trong các dự án phần mềm phức tạp, thì phẩn hiển thị của trang JSP thường được làm bởi người thiết kế Web, giỏi về HTML và đồ họa, còn phần chương trình Java được viết bởi lập trình viên chuyên về lập trình. Trong các dự án phức tạp, dùng JSP làm phần điều khiển sẽ làm lẫn lộn việc phân chia ranh giới trách nhiệm giữa nhóm thiết kế đồ họa và nhóm lập trình, đôi khi dẫn đến việc bảo trì và phát triển trở nên rất khó khăn, gần như không thể làm được.
 * MVC 2:
 - Trong MVC model 2, một hoặc nhiều servlet (thường là một) đóng vai trò Điều khiển, các Java Bean đóng vai trò Mô hình và các trang JSP đóng vai trò hiển thị.
 - Các logic phức tạp của chương trình được viết hoàn toàn trong các servlet, là các chương trình Java. Phần hiển thị chỉ gồm các trang JSP với một vài mã đơn giản để lấy dữ liệu có sẵn, không có logic phức tạp, vì thế hoàn toàn có thể được tạo ra bằng những người thiết kế Web.
 - Các yêu cầu của người dùng được gửi từ trình duyệt Web tới servlet. Servlet sẽ khởi tạo Java Bean (nếu cần thiết), ra lệnh thu thập, cập nhật thông tin. Khi Java Bean hoàn thành công việc, servlet sẽ chọn trang JSP thích hợp để hiện thông tin trong Java Bean cho người dùng.
 - Đây chính là một cách sử dụng MVC rất  hiệu quả trong Java. Tất nhiên là sử dụng MVC model 2 một cách hoàn toàn cứng nhắc, phần Điều khiển chỉ dùng servlet, phần Hiển thị chỉ dùng JSP sẽ dẫn đến một vài trường hợp kém hiệu quả, nhất là khi có các request từ trình duyệt Web chỉ đòi hỏi việc hiển thị thông tin.