Trang chủ » Thiết kế website giá rẻ
Xây dựng khung ứng dụng J2EE với các mẫu thiết kế trong Java (Phần 2)
Trong bài báo này chúng tôi muốn trình bày một phương án xây dựng một khung ứng dụng web hiệu quả mà các công ty trên thế giới như IBM, Oracle, Sun ?áp dụng rất hiệu quả trong các dự án của họ. Điểm đặc biệt hơn nữa là khung ứng dụng này sử dụng các công nghệ mới nhất luôn mang tính cạnh tranh như EJB2.0 (J2EE), XML?. (Tiếp theo phần 1) Xây dựng khung ứng dụng J2EE Chú ý rằng đây chỉ là framework, có nghĩa là xây dựng nên một khung ứng dụng cho dự án của bạn, việc duy nhất bạn phải làm là nâng cấp phần xử lý của framework cho phù hợp với yêu cầu của dự án. Trong mô hình ở hình 1 thì đây chính là hình thức tạo ra các ?request handlers? và cấu hình vào hệ thống thông qua bộ ánh xạ dưới dạng file XML. Như vậy người lập trình chỉ cần biết đến Java và làm việc với các thao tác đơn giản trên tầng xử lý mà không cần biết đến J2EE và các module liên quan như Servlet, web server hay database server... Phương án thiết kế cũng như các công nghệ liên quan trong mô hình phân tầng sử dụng công nghệ J2EE như hình 4: Mức khung và các thư viện thương mại Đây là một phương án kết hợp các thư viện thương mại có sẵn thành một khung ứng dụng hoàn chỉnh. Nó có thể hoạt động rất tốt nếu như chọn được các thư viện và framework có chất lượng cao nhưng bù lại chúng ta có thể phải trả chi phí cho các thư viện này. Ví dụ chúng ta có thể chọn Struts cho tầng web, Business Components for Java (BC4J) và Toplink của Oracle để chạy trên máy chủ Oracle9iAS Mức khung sử dụng các mẫu thiết kế cho J2EE/EJB Xây dựng tầng xử lý cho khung ứng dụng này bằng cách sử dụng các mẫu thiết kế cho công nghệ EJB chính là một giải pháp giúp cho người lập trình tạo ra một thư viện chuẩn mang tính thương mại cao như phương án trên. Và đây cũng chính là giải pháp được rất nhiều công ty như IBM, Sun, Oracle lựa chọn cho việc xây dựng các dự án sử dụng công nghệ J2EE của họ. Hai trong số các mẫu thiết kế được sử dụng nhiều nhất cho tầng xử lý này là: Mẫu thiết kế Faỗade (EJB Faỗade pattern): Đây là mẫu thiết kế cho phép phân tích chức nǎng của bộ xử lý theo mô hình MVC. Có thể coi module này như là bộ phận điều khiển (Controller) của khung dự án với vai trò trung gian xử lý giao dịch giữa tầng web (View) và tầng EJB entity (Model). Mẫu thiết kế DTO (EJB Data Transfer Object pattern): Mẫu thiết kế này nhằm tối ưu tốc độ giao dịch giữa 2 tầng Web và EJB Entity trong môi trường phân tán bằng cách giảm thiểu tối đa giao dịch trực tiếp giữa 2 tầng này trong môi trường phân tán với đối tượng giao dịch (DTO) là Javabeans EJB Entity 2.0 Đây là một phần của công nghệ J2EE (bạn có thể tham khảo đặc tả công nghệ trên website của Sun), nó cho phép ánh xạ dữ liệu giữa database với các đối tượng thực thể (entity object) tương ứng một cách dễ dàng và tự động trên các ứng dụng máy chủ hỗ trợ J2EE (J2EE container). Sử dụng công nghệ EJB Entity 2.0 một cách thành thạo trong việc xây dựng khung ứng dụng giúp người lập trình (phát triển dự án từ khung ứng dụng này) bỏ qua được khá nhiều công nghệ phức tạp như JDBC, web server hay database server. Hơn thế J2EE còn cung cấp một khả nǎng mở đối với database và web server cho dự án của bạn; nói cách khác, sản phẩm của bạn có thể chạy trên tất cả các Java web servers (Websphere, Jboss, Weblogic?) và database servers (Oracle, MSSQL?) Jakarta Struts (1.1 beta3) Nếu các bạn xây dựng ứng dụng web sử dụng Java, cho dù dự án không sử dụng J2EE thì struts vẫn là một framework không thể bỏ quả được. Đây là một framework mã nguồn mở nhằm mục đích tạo ra một component chuẩn trong việc thiết kế ở tầng web sử dụng MVC và tạo ra một framework có tính ổn định và thống nhất cao cũng như cho phép tích hợp vào các hệ thống J2EE một cách dễ dàng qua một vài cải tiến. Mô hình chức nǎng MVC của struts được trình bày ở hình 5: Với Struts người lập trình không phải quan tâm đến việc xây dựng MVC như thế nào mà chỉ cần cấu hình và chạy tầng hiển thị của dự án, điều này cho phép giảm thiểu chi phí đào tạo, thời gian phát triển dự án nhanh hơn và cho phép hệ thống chạy ổn định trên các nền hoặc module tích hợp khác nhau. Đây chính là framework cho tầng web phát triển mạnh nhất trong khoảng gần 2 nǎm lại đây, các nhà sản xuất như Borland, Oracle hay IBM đều cố gắng đưa ra sản phẩm hỗ trợ và tích hợp Struts trong việc xây dựng các ứng dụng web. Java Server Faces (early access) Một công nghệ khá giống với Struts, được tạo ra bới Sun với bản đặc tả công nghệ chuẩn được nhiều nhà cung cấp phần mềm công nhận và sẽ hỗ trợ trong sản phẩm của họ. Tuy nhiên đặc tả công nghệ JSF đang trong giai đoạn cuối nên những sản phẩm hỗ trợ công nghệ này chưa thể hoàn thiện kịp. Đây rõ rằng là một sản phẩm mang tính cạnh tranh với Struts trong tương lại gần. Sự lựa chọn của bạn Chúng ta sẽ bắt đầu từ đâu, tại sao lại không bắt đầu với những framework mà các công ty nổi tiếng đã và đang sử dụng rất thành công? Kinh nghiệm và dự án sẽ hoàn thiện thêm cho J2EE framework của bạn, vậy bạn sẽ làm gì với framework này cho các dự án tiếp theo: copy và sửa cho phù hợp liệu đã đủ chưa? Việc sửa đổi cũng sẽ trở nên phức tạp nếu mô hình thực thể khác nhau quá nhiều! WebGenerator là sản phẩm giúp bạn tự động sinh ra một khung ứng dụng web theo yêu cầu này. WebGenerator Đây là một sản phẩm của chúng tôi cho phép tự động sinh ra một khung ứng dụng web hỗ trợ J2EE. Phần mềm yêu cầu người dùng đưa vào thông tin các thực thể của dự án bạn chuẩn bị xây dựng và các mối quan hệ giữa chúng; hoặc bạn có thể đưa vào database để hệ thống tự động tạo ra các thực thể và các mối quan hệ này, tất cả đều sử dụng XML. Bước tiếp theo bạn chỉ cần chọn database server và web server sẽ triển khai ứng dụng. Không cần sửa đổi gì thêm bạn đã có một file EAR tuân theo đặc tả của J2EE và các chuẩn máy chủ bạn vừa cấu hình. File EAR này có thể coi như bản demo cho dự án, sử dụng mô hình MVC và các mẫu thiết kế cho tầng EJB mà chúng ta vừa bàn ở trên. Việc còn lại của người lập trình là phát triển các ?request handler? và tích hợp vào framework vừa sinh ra mà không cần quan tâm đến J2EE, database hay webserver? Ưu điểm của sản phẩm này là nó cung cấp khả nǎng mở cho người dùng. Phần mềm sử dụng các template lập trình được theo cú pháp XML/XSL được cấu hình trong file hệ thống, vì thể người dùng có thể đǎng ký thêm các template mới để hệ thống sinh ra mọi thứ mình mong muốn, thậm chí là .NET mà không phải thay đổi mã nguồn của phần mềm này. Framework demo sinh ra hỗ trợ EJB2.0, struts1.1 beta, Ant1.5, log4j, Junit3.7 và các testcase. Phiên bản hiện tại hỗ trợ EJB2.0 trên Jboss3.0.x sử dụng MySQL3.2.2x hoặc Oracle 8.1.7 (đang trong giai đoạn kiểm tra), phiên bản sắp tới sẽ hỗ trợ thêm MSSQL7.0/2K, WebSphere 4.5.x và cho phép người dùng tạo và chọn lựa các giao diện thích hợp cho tầng hiển thị của dự án. Kết luận Đây không phải là bài báo trình bày về sự sáng tạo hay phương án thiết kế một ứng dụng hoặc một framework hoàn thiện. Chúng tôi chỉ cố gắng tìm hiểu những mẫu thiết kế phần mềm sẵn có cho các ứng dụng thương mại điện tử mà một số công ty lớn như Sun, IBM triển khai? và tìm cách khái quát hoá để đưa ra một mô hình chung sử dụng trong việc xây dựng các ứng dụng thương mại trên web và ít nhiều chúng tôi cũng đã áp dụng rất thành công. Nó không mang tính lý thuyết mà có tính thực tiễn hơn với các công nghệ mới và hiện đại nhất. Chúng tôi rất mong nhận được ý kiến đóng góp của các bạn. Tham khảo - Jakarta Struts 1.1 beta3, http://jakarta.apache.org/struts - Java Server Faces (JSR 127): http://java.sub.com/j2ee/javaserverfaces - Sun J2EE design patterns: http://java.sun.com/blueprints/enterprise/ - The Design Pattern Java Companion, tác giả James W.Cooper - EJB Design Pattern, tác giả Floyd Marinescu - Programming Jakarta Struts, tác giả Chuck Cavaness Nguyễn Tuấn Khang Coco Software Engineering Vietnam