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".
Ư'ng dụng Web sử dụng J2EE (J2EE web application)
Web application framework
Công nghệ Internet đã và đang làm thay đổi hoàn toàn xu thế kinh doanh truyền thống, nó tạo ra một ?thị trường ảo không biên giới? trên Internet cho phép mọi khách hàng có thể duyệt và mua hàng ngày trên bàn làm việc của họ, đặc biệt mọi giao dịch này đều xảy ra trong thời gian thực. Các ứng dụng phục vụ cho mục đích này được gọi là ứng dụng thương mại điện tử (e-commerce application), đa số các trường hợp người dùng đều sử dụng ứng dụng này trên nền Web.
Mặc dù có nhiều cách cũng như các ngôn ngữ lập trình khác nhau để xây dựng một ứng dụng Web, mỗi công ty đều có một hướng phát triển riêng, tuy nhiên họ cũng đang cố gắng tìm ra những phương án và mô hình có thể sử dụng lại cho các dự án tiếp theo: được coi như là một khung ứng dụng cho các ứng dụng trên Web (web application framework).
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?.
Luồng dữ liệu trên web và cấu trúc đa tầng với J2EE
Chắc chắn rằng mỗi dự án đều có một phương thức xử lý (bussiness layer) riêng biệt. Tuy nhiên để xây dựng được một framework chung cho nhiều dự án có yêu cầu khác nhau, chúng ta phải có gắng tìm ra được những điểm chung nhất của các chúng. ở đây tôi đưa ra một mô hình luồng dữ liệu trong cấu trúc đa tầng mà các dự án trên web thường sử dụng.
Với mô hình phân tầng này, một yêu cầu (request) từ phía client được phục vụ tại tầng xử lý J2EE chứ không phải tầng Web. Tuy nhiên để đảm bảo cho mô hình hoạt động hiệu quả hơn và cung cấp cho tầng J2EE một khả nǎng chuẩn hoá, thì đối tượng request được qua một vài thao tác tại tầng Web gọi là quá trình tiền xử lý. Các thao tác cơ bản như: trích lọc thông tin từ request, kiểm tra thông tin và xây dựng lại thông tin từ đối tượng request thành một đối tượng chuẩn Java (như Javabeans hoặc một vǎn bản XML).
Ngoài ra, bộ ánh xạ trong các module điều khiển của mô hình cho phép tạo ra một ứng dụng có khả nǎng cấu hình và mở rộng được (configurabitlity và extensibility). Với từng request đến, bộ điều khiển sẽ tìm kiếm ?đối tượng quản trị? (request handler) tương ứng để thực thi cho request này, như vậy khi cần thêm chức nǎng cho hệ thống thực chất là cấu hình thêm cho bộ ánh xạ này. Bộ ánh xạ có vai trò nhưng một bảng dữ liệu đơn giản nên file XML là sự lựa chọn thích hợp nhất.
Java hay Microsoft.NET
Tại sao lại Java?
Chúng ta sẽ phải làm gì trong cuộc chiến giữa Sun và Microsoft, cụ thể hơn giữa Java và .NET? Bạn sẽ lựa chọn cái gì để triển khai dự án của mình trong một loạt các hệ điều hành và các môi trường khác nhau như Windows, Linux, AS/400, Oracle? Hiện tại, IBM và Oracle đang đứng về phía Sun, nếu bạn muốn sản phẩm của bạn hỗ trợ tất cả các platform hiện nay kể cả Windows thì Java có thể là một sự lựa chọn rất hợp lý.
Với Microsoft.NET, sản phẩm của bạn sẽ chỉ chạy được trên nền Windows, bù lại thời gian phát triển dự án bằng .NET có thể sẽ nhanh hơn. Tuy nhiên trong những ứng dụng lớn thì về mặt tốc độ cũng như mức độ ổn định cũng không hẳn là đã vượt trội so với Java.
Các ngôn ngữ khác
Các phương án truyền thống còn lại như CGI (C, Perl), PHP hay ASP3.0? cũng có thể là sự lựa chọn cho các dự án nhỏ, tuy nhiên chúng khó có cơ hội cạnh tranh được với Java và .NET trong tương lai.
Các phương án thiết kế
Mẫu thiết kế (Design pattern)
Bạn định bắt đầu từ những bản đặc tả (specification) của các công nghệ ư? Muộn rồi, chúng ta không nên cố xây dựng lại cái bánh xe trong khi một loạt các công ty và nhóm phần mềm đã tiêu tốn nhiều thời gian công sức để tìm ra những phương án tối ưu cho từng vấn đề họ đã gặp phải trong quá trình phát triển các dự án. Bắt đầu từ đầu những nǎm 90 thuật ngữ design patterns chính thức ra đời nhằm chỉ các giải pháp giải quyết các vấn đề thường gặp trong quá trình xây dựng phần mềm. Design pattern không phải là những khái niệm lý thuyết mà được đúc rút ra từ những kinh nghiệm thực tế của các chuyên gia phần mềm trên thế giới.
Các mẫu thiết kế cho J2EE mà một phần được trình bày trong quyển ?J2EE Design Pattern? được kiểm nghiệm thực tế rất thành công trong việc giải quyết các vấn đề nảy sinh trong quá trình phát triển ứng dụng J2EE. Ví dụ với tầng Web của ứng dụng J2EE kinh điển, nếu chúng ta bắt tay từ đặc tả kỹ thuật (specification) của JSP và Servlet chúng cho phép xây dựng được những trang web động riêng biệt rất tốt nhưng lại hỗ trợ rất ít trong việc quản lý luồng dữ liệu giữa các trang với nhau, đặc biệt chúng không tách rời 2 tầng hiển thị (presentation) và tầng xử lý (bussiness).
Mô hình MVC (Model- View-Control)
MVC là một mô hình thiết kế mang tính tổng thể để giải quyết vấn đề trên, nó được tạo ra bởi Krasner và Pope nǎm 1988 cho Smalltalk, hiện tại được IBM và Apache ứng dụng trong các dự án của họ rất thành công. Đây là một giải pháp cho phép xây dựng nên các ứng dụng phân tầng một cách rất hiệu quả bằng cách tạo ra những phương thức quản lý từng tầng một cách riêng rẽ như mô hình ở hình 2. Trong J2EE, thì MVC cũng được xây dựng dựa trên những tính nǎng mạnh của công nghệ JSP và Servlet
Khung ứng dụng (application framework)
Không phủ nhận được điểm mạnh của các mẫu thiết kế, vấn đề là ở chỗ chúng chỉ giải quyết những vấn đề riêng rẽ, làm sao để sử dụng và kết hợp chúng lại trong các dự án J2EE. Câu hỏi này đã nảy sinh và hiện nay một thuật ngữ mới chỉ một mẫu thiết kế tổng quát hơn cho từng ứng dụng lĩnh vực cụ thể, đó là framework. Các dự án thực tế để tạo ra các framework này cũng đang được hoàn thiện. Như vậy quá trình phát triển về mặt thiết kế dự án sử dụng công nghệ J2EE có thể được mô tả.
Chọn lựa một framework tốt giúp bạn giảm thiểu được thời gian và nâng cao chất lượng của sản phẩm. Nó giúp người lập trình chỉ cần chú tâm vào việc xây dựng mức trên thuộc tầng xử lý của ứng dụng thay vì phải làm việc ở mức thấp với từng dòng lệnh một cách nhàm chán với những sai xót cá nhân của người lập trình.
Nguyễn Tuấn Khang - Quan Tri Mang