Một số vấn đề về công nghệ Java

Spring ra đời với mục đích làm đơn giản hóa, thay thếcác thành phần phức tạp và không quá cần thiết trong J2EE, mà cụthể đó là EJB - "EJB thì có giá trịcủa nó, nhưng không phải lúc nào cũng cần thiết và phù hợp cho tất cảcác ứng dụng". Trong khi EJB thì cứng và cốgắng làm mọi thứ, một vài công việc tốt nhưng một sốthì không. Spring chỉsửdụng Java Bean và thông qua một sốkỹthuật đặc biệt đểcung cấp nhiều chức năng nhưEJB, bằng cách tích hợp với một sốkỹthuật open source khác. Theo kiến trúc đa tầng của J2EE, Spring đảm nhận công việc ởtầng Business. Đểsửdụng Spring theo J2EE cần kết hợp với các framework ởcác tầng liên quan là: tầng Presentation (Struts, JSF,.), và tầng Persistence (Hibernate, JDBC,.). Thực tếSpring cũng hỗtrợcho các tầng Presentation và Persistence, nhưng khảnăng không bằng các framework khác nhưStruts, JSF, Hibernate,.

pdf66 trang | Chia sẻ: tlsuongmuoi | Lượt xem: 3977 | Lượt tải: 4download
Bạn đang xem trước 20 trang tài liệu Một số vấn đề về công nghệ Java, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
TP (Request/Response, POST/GET Method) • Servlet Configuration: Khởi tạo một số thông tin cấu hình cần thiết cho Servlet, cho ứng dụng web • Servlet Context: Khởi tạo một số tham số cho Servlet, cho ứng dụng web • Thư viện hỗ trợ: javax.servlet,*; javax.servlet.http.*; 4.1.3. JSP a. Đặc điểm JSP ra đời nhằm cải tiến hạn chế của Servlet trong vấn đề thiết kế giao diện của ứng dụng. Bản thân JSP là các trang HTML có nhúng mã Java để thực hiện các thao tác nghiệp vụ, kết nối CSDL,... Khác với trang web truyền thống được WebServer gửi trực tiếp cho Client, các trang JSP phải được thi hành thông qua Engine (JSP Container), ở đó các mã Java được tách ra, xử lý, kết quả chuyển thành HTML trước khi trả về cho Client. Thực tế mọi trang JSP đều được dịch sang Servlet và được thực thi trong WebServer, đây chính là mối quan hệ mật thiết giữa Servlet và JSP như đã đề cập ở trên. Các đặc điểm nổi bật của JSP: • Mang đầy đủ những ưu điểm của ngôn ngữ Java • Mang đầy đủ những ưu điểm của Servlet Java overview Trang 30/66 • Giúp cho quá trình phát triển, triển khai, bảo trì ứng dụng Web được dễ dàng hơn • Đơn giản quá trình phát triển với các thẻ, thư viện: taglib, bean,... b. Các vấn đề liên quan tới JSP • WebServer hỗ trợ JSP (Tomcat) • Vòng đời JSP: Init, Service, Destroy • Giao thức HTTP (Request/Response, POST/GET Method) • Các thẻ JSP • Sử dụng taglib trong JSP >> độc lập design giao diện • Các đối tượng "ngầm" trong JSP 4.1.4. Quan hệ Servlet, JSP a. Sự khác nhau • Phong cách viết mã: Pure Java Nhúng mã Java. • Servlet phải dịch sang class, JSP được WebServer đảm nhận. • JSP chỉ là một phiên bản đơn giản của Servlet, được compile ra Servlet • JSP mềm dẻo hơn Servlet b. Kết hợp Servlet, JSP Client gửi yêu cầu tới WebServer, Servlet tiếp nhận, xử lý yêu cầu trả lại kết quả vào trong bean. JSP truy xuất bean, gửi kết quả (HTML) tới Client. 4.2. JavaScript, CSS, Ajax 4.2.1. JavaScript Hãng Netscape đã đưa ra ngôn ngữ script có tên là LiveScript để thực hiện chức năng đáp ứng yêu cầu từ phía người dùng. Sau đó ngôn ngữ này được đổi tên thành JavaScript để tận dụng tính đại chúng của ngôn ngữ lập trình Java. Mặc dù có những điểm tương đồng giữa Java và JavaScript, nhưng chúng vẫn là hai ngôn ngữ riêng biệt. JavaScript là ngôn ngữ dưới dạng script có thể gắn với các file HTML. Nó không được biên dịch mà được trình duyệt diễn dịch. Không giống Java phải chuyển thành các mã dễ biên dịch, trình duyệt đọc JavaScript dưới dạng mã nguồn. Tuy không phải là ngôn ngữ hướng đối tượng do không hỗ trợ các lớp, không có tính kế thừa nhưng JavaScript cũng được viết dựa trên các đối tượng. Và giống như Java, JavaScript độc lập với hệ nền, nó có thể chạy trên bất cứ OS nào có trình duyệt hỗ trợ nó. Hiện nay JavaScript được dùng chủ yếu nhúng trong các file HTML nhằm: Java overview Trang 31/66 • Kiểm tra dữ liệu ở phía Client. Việc kiểm tra dùng JavaScript như vậy sẽ nhanh chóng, tăng tốc độ ứng dụng nhưng cần chú ý đến khả năng hỗ trợ JavaScript của trình duyệt • Nâng cao tính mỹ thuật của trang web nhờ các hiệu ứng do JS tạo ra Các vấn đề liên quan: • Mô hình đối tượng khi sử dụng JavaScript (DOM, JDOM,...) • Xử lý sự kiện của các đối tượng form • Validate dữ liệu • Popup windows • Các hàm chuẩn: alert(), confirms(), prompts() 4.2.2. CSS CSS (Cascading Style Sheet) hiện có thể coi là các chuẩn định kiểu cho các trang web. Về căn bản đây là một tập khai báo về thuốc tính của các đối tượng trên một trang web. Hầu như tất cả các đối tượng trên trang web đều có thể khai báo thuộc tính, từ các label, text đến các button, table. Thuộc tính có thể là font, size, color,... Việc dùng CSS sẽ giúp cải thiện tốc độ tải trang web đáng kể. Trình duyệt sẽ chỉ tải file CSS về máy client một lần, những lần sau các trang web sử dụng file CSS này sẽ lấy ngay tại client. Việc tập trung toàn bộ định nghĩa thuộc tính vào file CSS giúp cho đoạn mã HTML trở nên ngắn gọn, rõ ràng đồng thời giúp giảm kích thước của trang web. CSS có thể khai báo ngay trong file HTML nhưng thông thường CSS được khai báo trong một hay nhiều file (.CSS) thành các class. Các đối tượng trong trang web muốn sử dụng class nào thì khai báo trong thuộc tính class. Điều này tăng tính mềm dẻo khi dùng file CSS, ta có thể thay đổi màu sắc, giao diện của những trang web một cách nhanh chóng thông qua việc chỉnh sửa những thuộc tính trong file CSS. Khai báo CSS: Sử dụng CSS: Java overview Trang 32/66 Các vấn đề liên quan: • Các thuộc tính của đối tượng Form (tham khảo tại W3C) 4.2.3. Ajax a. Khái niệm về Ajax Ajax là thuật ngữ công nghệ được nhắc tới nhiều trong một vài năm gần đây xung quanh các vấn đề liên quan tới thế hệ Web2.0, chính xác là từ tháng 2 năm 2005 sau bài viết nổi tiếng của Jesse James Garrett trên trang Adaptive Path. Nhưng thực sự Ajax không phải là một công nghệ, nó là sự kết hợp của nhiều công nghệ với mỗi thế mạnh riêng của mình để tạo nên sức mạnh chung của Ajax. Đúng như tên viết tắt của mình, AJAX - " Asynchronous JavaScript and XML ", cũng có tài liệu cho rằng "Asynchronous JavaScript+CSS+DOM+XMLHttpRequest" là sự kết hợp của các công nghệ sau: • Thể hiện web theo tiêu chuẩn XHTML và CSS; • Nâng cao tính năng động và phản hồi bằng DOM (Document Object Model ); • Trao đổi và xử lý dữ liệu bằng XML và XSLT; • Truy cập dữ liệu theo kiểu bất đồng bộ (asynchronous) bằng XMLHttpRequest; • Và tất cả các kỹ thuật trên được liên kết lại với nhau bằng JavaScript . Tất cả tạo thành một bộ công cụ cho phép tăng tốc độ ứng dụng web bằng cách chia nhỏ dữ liệu trên trang web thành nhiều phần và load lại phần thông tin cần thay đổi, thay vì tải đi tải lại toàn bộ trang web. "Mọi thao tác của người sử dụng sẽ gửi lệnh JavaScript tới bộ xử lý AJAX, thay vì tạo ra một yêu cầu HTTP (HTTP request) và truy vấn tới máy chủ", Jesse James Garrett đã ghi trong bài viết đầu tiên định nghĩa về thuật ngữ này. "Nếu cần gì từ server, như tải về bổ sung mã giao diện hay nhận dữ liệu mới, AJAX sẽ truyền yêu cầu tới máy chủ một cách không đồng bộ, thông thường sử dụng XML, mà không làm gián đoạn sự tương tác của người dùng với ứng dụng web". b. Mô hình hoạt động của Ajax Với mô hình ứng dụng Web cổ điển, khi người dùng có một cần thay đổi dữ liệu trên trang Web, yêu cầu thay đổi được gửi về server dưới dạng HTTP request (hay còn gọi postback), server sẽ xử lý yêu cầu này và gửi trả lại trang HTML khác thay thế trang cũ. Qui trình này được mô tả là nhấp- chờ và tải lại (click-wait-and-refresh) Java overview Trang 33/66 Với mô hình ứng dụng Web sử dụng Ajax, thay vì phải tải cả trang web thì với ứng dụng chỉ cần tải về phần của trang Web được thay đổi nội dung. Điều này giúp cho ứng dụng web phản hồi nhanh hơn. Ngoài ra, điểm đặc biệt quan trọng trong công nghệ AJAX nằm ở chữ A (Asynchronous) – bất đồng bộ – tức là client cứ gửi yêu cầu tới server và quay lại với công việc của mình mà không cần chờ trả lời. Khi nào server xử lý xong yêu cầu, nó sẽ báo hiệu để thể hiện những thay đổi cần thiết. c. Nhược điểm của Ajax Mặc dù Ajax có những đặc điểm vượt trội mang tính cách mạng cho các ứng dụng web, nhưng nó cũng có một số nhược điểm sau: • Phím "Back" (được đánh giá rất cao trong thao tác của người sử dụng web) của trình duyệt bị mất tác dụng, người dùng không thể lấy lại dữ liệu của trang trước đó bằng cách đơn giản, thông thường như trước đây vẫn dùng (đã có hướng giải quyết). • Không thể lưu lại địa chỉ web vào thư mục Favorite (Bookmark) để xem lại về sau. • Do áp dụng lớp trung gian để giao dịch, các ứng dụng AJAX không có một địa chỉ cố định cho từng nội dung. • Vấn đề bảo mật khi ứng dụng có dùng Ajax Java overview Trang 34/66 4.3. AWT, Swing AWT và Swing là hai components GUI dùng cho các ứng dụng Java Desktop được Sun phát triển trong bộ thư viện JFC (Phần 3.1.2). Phần này chủ yêu đi sâu vào các nội dung của Swing, bộ thư viện GUI Java mạnh nhất hiện nay. 4.3.1. AWT AWT (Abstract Window Toolkit) là bộ thư viện hỗ trợ giao diện đồ họa GUI đầu tiên của Sun. Hiện tại AWT chỉ phù hợp cho các ứng dụng GUI đơn giản, hoặc các ứng dụng Applet. Đặc điểm của AWT: • Tập hợp rất nhiều thành phần GUI • Mô hình bắt sự kiện mạnh • Quản lý Layout, giúp cho các thành phần của ứng dụng độc lập với kích cỡ, độ phân giải • Cung cấp các lớp truyền dữ liệu với Clipboard • package: java.awt Hệ thống phân cấp các thành phần trong AWT Quản lý Layout Xử lý sự kiện Deploy ứng dụng 4.3.2. Swing a. Đặc điểm Swing ra đời sau AWT, có các đặc điểm sau: • Mang tất cả các đặc điểm của AWT • Mã thuần Java với các components AWT (Button, Toolbar,...) • Bổ sung một tập các components bậc cao (ListView, TreeView, Tab,...) • Hỗ trợ Look and Feel độc lập với OS • package: javax.swing b. Các Swing components Các components trong Swing được chia thành: • Windows: Window, Frame, Dialog,... • Container: Các components đặc biệt có thể giữ (chứa) và quản lý các components khác • Components thông dụng: Button, TextField, CheckBox,... • Các components bậc cao: TreeView, ListView, DateTimePicker,... Mỗi components là một đối tượng GUI, được tổ chức theo cấu trúc phân cấp như sau: Java overview Trang 35/66 c. Quản lý Layout Quản lý Layout là việc đảm nhận quản lý thông tin về vị trí, kích thước các thành phần của ứng dụng (trong khu vực Container). Với việc sử dụng Layout, kính thước, vị trí của các thành phần GUI không phụ thuộc vào độ phân giải của màn hình bởi vì Layout quản lý, bố trí các components trên Form theo một sự ràng buộc không hoàn toàn phụ thuốc vào tọa độ. Java overview Trang 36/66 Swing hỗ trợ các kiểu Layout sau: • Flow Layout • Border Layout • Card Layout • Grid Layout • GridBag Layout • Định nghĩa Layout của riêng mình d. Xử lý sự kiện Quản lý việc giao tiếp giữa các thành phần GUI trong ứng dụng, giao tiếp giữa người sử dụng với các thành phần của một Form, ví dụ: • KeyEvent: Sự kiện nhấn phím • MouseEvent: Sự kiến nhấn chuột • WindowEvent: Sự kiện liên quan tới Close, Open, Zoom một cửa sổ WIndow,.. • ... Mọi sự kiện đều được kế thừa từ lớp EventObject. e. Deploy ứng dụng Đóng gói, triển khai ứng dụng Desktop (Phần 2.4). 4.3.3. AWT vs Swing Components AWT Swing Pros - Tốc độ - Hỗ trợ applet nhúng trên Browser - Look and Feel của OS - Tính thẩm mỹ cao hơn AWT, nhiều components hơn AWT - Look and Feel độc lập OS Cons - Tính cơ động không cao do một số components phụ thuộc platform - Không hỗ trợ một số thuộc tính như icons, tooltip - Một số Browser không hỗ trợ - Tốc độ chậm hơn AWT 4.4. Mô hình MVC Khi xây dựng ứng dụng phần mềm thì người phát triển thường tiếp cận theo cách là xây dựng ứng dụng theo một mô hình nào đó, và mô hình này được xây dựng trước, mô hình này giúp người phát triển không phải lo lắng về cấu trúc chương trình vì mô hình đã được dựng sẳn, họ chỉ phải thực hiện các module nghiệp vụ. MVC là mô hình nổi tiếng cho các ứng dụng xây dựng trên nền Java, từ các ứng dụng Web thông thường tới các ứng dụng J2EE, hay Desktop. Vai trò và ưu điểm của MVC sẽ dễ thấy hơn nếu chúng ta xem xét tới các mô hình dành cho ứng dụng web trên Servlet, JSP. Java overview Trang 37/66 4.4.1. Mô hình ứng dụng Web với Servlet, JSP Khi xây dựng ứng dụng web bằng Servlet, JSP thì người phát triển thường dựa trên 2 mô hình sau, tạm gọi là mô hình 1 và mô hình 2: Hai mô hình có một số điểm khác biệt. Sự khác biệt rõ ràng nhất đó là sự khác biệt về thành phần xử lý request. Với mô hình 1 thì trang JSP điều khiển mọi quá trình xử lý request và đồng thời cũng là nơi hiển thị phía client giá trị trã về của server. Trong mô hình 1 ở trên không xuất hiện servlet trong quá trình xử lý. Request của client được gửi trực tiếp tới trang JSP, trang JSP này có thể giao tiếp với các JavaBean hoặc một vài dịch vụ khác, và cuối cùng nó chọn trang JSP tiếp theo cho client. Trang tiếp theo để hiển thị giá trị trã về của server. Trong mô hình 2, request từ phía client đầu tiên sẽ được chặn lại tại servlet, và bộ phận này người ta gọi là servlet điều khiển. Servlet sẽ thực hiện một số xử lý ban đầu của request và cũng xác định trang hiển thị tiếp theo. Hình sau: Trong mô hình 2, client không bao giờ gửi trực tiếp request tới một trang JSP. Servlet điều khiển sẽ thực hiện như là bộ phận điều khiển giao thông. Điều này cho phép servlet thực hiện xử lý theo kiểu “front - end” – giống như là kiểm chứng và cho phép. Ta có thể hiểu, servlet như là bộ kiểm tra request sau đó tuỳ theo kết quả mà quyết định bước xử lý tiếp theo của request. Khi quá trình xử lý request tại servlet hoàn thành, servlet sẽ chuyển request trực tiếp tới trang JSP phù hợp. Ví dụ, trong một ứng dụng web đơn giản, trang JSP sẽ hiển thị kết quả của trã về của servlet, kết quả đó là các tham số trong request. Java overview Trang 38/66 4.4.2. Mô hình MVC Với mô hình 2 trong các ứng dụng web ta thấy sự phân chia các bộ phận trong kiến trúc rõ ràng hơn, đó là ba thành phần: logic nghiệp vụ, phần hiển thị, và bộ phần xử lý request. Sự phân chia này được gọi là mô hình Model – View – Controller (MVC). Các ứng dụng (không chỉ là ứng dụng web) xây dựng trên mô hình MVC có ưu điểm là rất dễ bảo trì và có thể mở rộng với các ứng dụng phức tạp. MVC là kỹ thuật được sử dụng rộng rãi trong lập trình chuyên nghiệp, đặc biệt là trong kỹ thuật làm web, tạo cho website có khả năng linh động hơn. Thực tế có rất nhiều lập trình viên phát triển ứng dụng của mình theo mô hình MVC dù đó là bất kỳ ngôn ngữ nào. a. Model Là một đối tượng hoặc tập hợp các đối tượng biểu diễn cho phần dữ liệu của chương trình, ví dụ các dữ liệu được lưu trong cơ sở dữ liệu (CSDL) hay từ các hệ thống ứng dụng khác (như mail...). Java overview Trang 39/66 b. View Là phần giao diện với người dùng, bao gồm việc hiện dữ liệu ra màn hình, cung cấp các menu, nút bấm, hộp đối thoại, chọn lựa..., để người dùng có thể thêm, xóa, sửa, tìm kiếm và làm các thao tác khác đối với dữ liệu trong hệ thống. View trong mô hình MVC của ứng dụng web bao gồm HTML và các trang JSP. Các trang HTML được dùng với mục đích tạo ra trang tĩnh, trong khi JSP có thể tạo ra trang với nội dung tĩnh hay động. c. Controller Là phần điều khiển toàn bộ logic về hoạt động của giao diện, tương tác với thao tác của người dùng (từ chuột, bàn phím và các thiết bị ngoại vi khác) và cập nhật, thao tác trên dữ liệu theo đầu vào nhận được và điều khiển việc chọn phần “View” thích hợp để chuyển dữ liệu tới người dùng. Trong ứng dụng web, Controller thường được thiết kế bằng Servlet, thực hiện các nhiệm sau: • Chặn các request từ phía client. • Chuyển các request tới các bộ phận dịch vụ để thực hiện. • Hoặc là gọi các toán tử nghiệp vụ hoặc là uỷ thác tới một handler khác. • Hổ trợ lựa chọn view tiếp theo cho client. • Trã về view cho client. 4.5. Struts 4.5.1. Struts và MVC Struts là một Framework OpenSource nổi tiếng của dự án Apache cho các ứng dụng J2EE. Được phát triển bởi một nhóm do Craige R.McClanahan đứng đầu (Craige R.McClanahan là chuyên gia nghiên cứu về Servlet, JSP và tham gia viết Tomcat), bản thân Struts là sự mở rộng của các Java overview Trang 40/66 Servlet API theo mô hình MVC. Thực tế hiện nay Struts vẫn là framework nổi tiếng nhất cho các ứng dụng theo mô hình MVC. Mục đích của Struts là phân tách rõ ràng các phần Model, View, Controller trong mô hình MVC. Ứng dụng viết trên Struts dễ dàng bảo trì, mở rộng. Struts framework liên tục được cập nhật, mở rộng cung cấp nhiều package, thư viện hỗ trợ cho người phát triển: Taglib, đa ngôn ngữ, validate data, tempate cho ứng dụng mẫu,... • Client Browser: Web Container tiếp nhận HTTP Request từ Client và trả về HTTP Response • Controller: Các nhiệm vụ của thành phần Controller trong Struts bao gồm nhận đầu vào từ client, gọi toán tử nghiệp vụ, và tìm thành phần view để trã về cho phía client. Trong Struts framework servlet trở thành điểm trung tâm cho ứng dụng web. Servlet điều khiển sẽ ánh xạ giữa action của user với các hàm nghiệp vụ và hổ trợ lựa chọn view trã về dựa trên thông tin của request đã được xử lý. struts-config.xml là file cấu hình cho Controller của ứng dụng xây dựng trên Struts • Business Logic: Cập nhật trạng thái của Model và đảm nhận việc điều khiển, thực thi dưới các Form trong ứng dụng • Model: Model là các đối tượng biểu thị thông tin về các yêu cầu từ người dùng, và lưu giữ các kết quả của các quá trình xử lý. • View: Đối tượng View trong Struts thường là các trang JSP. Struts cung cấp một loạt các thư viện taglib, hỗ trợ người phát triển trong việc thiết kế các trang JSP. Sự hỗ trợ của Struts với JSP cho phép các đối tượng form trên các trang JSP được quản lý: Lấy dữ liệu, Validate dữ liệu, Quản lý lỗi,... Các thư viện taglib thường dùng: struts-html, struts-form, struts-bean, struts-logic, struts-template. 4.5.2. Đặc điểm của Struts • OpenSource, cộng đồng đông đảo • Áp dụng mô hình MVC • Struts là framework cho ứng dụng web, không phải ứng dụng J2EE: (Triển khai theo dạng file .WAR cho các Web Server) • Áp dụng Struts khá dễ dàng, đơn giản: Download Struts framework (hiện là version 2.0.6 - March 22, 2007), cấu hình ứng dụng với các thư viện (Nhiều IDE hỗ trợ) • Bộ thư viện thẻ taglib phong phú cho JSP. Hỗ trợ validate dữ liệu, thông báo lỗi,... Java overview Trang 41/66 • Thuận lợi cho công tác bảo trì, nâng cấp • Struts chỉ hướng vào tầng Controller, có quan điểm là chỉ hướng vào tầng View (Bản thân chỉ là sự mở rộng của Servlet & JSP) • Quan điểm về bộ thư viện taglib của Struts: phải load toàn bộ >> tốn bộ nhớ, ứng dụng chạy chậm,... • Struts JSF • Dự án Struts đã đóng băng (hay đã hoàn thiện ở mức chín muồi) 4.5.3. Cấu hình ứng dụng Struts Ví dụ về tổ chức của một ứng dụng dựa trên Struts: Bên cạnh file cấu hình web.xml cho ứng dụng web thông thường, ứng dụng Struts còn có struts- config.xml là file cấu hình để khởi tạo các tài nguyên cần thiết, bao gồm thông số kết nối CSDL các ActionForms để lấy các yêu cầu của người dùng, ActionMappings để chỉ đến các Actions phía trình phục vụ Server, và các ActionForward để chọn các trang hiển thị. Ngoài ra còn có các file mô tả thư viện taglib của ứng dụng (các file .TLD). Dưới đây là một dạng đơn giản của struts-config.xml: • : Thông số kết nối CSDL • : Khai báo các form của ứng dụng Java overview Trang 42/66 • : Các trang jsp hiển thị • : Khai báo các Action • Một số thẻ khác Java overview Trang 43/66 4.6. EJB 4.6.1. EJB trong kiến trúc J2EE EJB (Enterprise JavaBean) là business component chạy bên trong EJB container, là một thành phần trong kiến trúc. EJB container cung cấp các dịch vụ quản lý transaction, bảo mật, quản lý trạng thái, quay vòng tài nguyên,... EJB container hỗ trợ những API sau: J2SE, JMS, JNDI, JTA, JavaMail, JAF, RIM-IIOP và JDBC. Các lợi ích mà EJB mang lại: • Transaction Management • Security support • Persistence Management (CMP & BMP) • Distributed System 4.6.2. Khi nào sử dụng EJB Mặc dù EJB mạnh, có nhiều giá trị, nhưng vì là một công nghệ phức tạp, áp dụng khá khó khăn, nên sử dụng EJB trong những trường hợp sau: • Dùng cho các ứng dụng lớn, tài nguyên & dữ liệu phân tán • Yêu cầu dễ dàng đáp ứng được sự mở rộng, nâng cấp của hệ thống (Scalable) • Các giao dịch yêu cầu sự đảm bảo cao về tính toàn vẹn dữ liệu • Số lượng Client lớn Java overview Trang 44/66 4.6.3. Cài đặt EJB Mỗi EJB bắt buộc phải có những interface và class sau: • Home Interface: home interface extend javax.ejb.EJBHome. Nó đóng vai trò như một Factory pattern để khởi tạo các instance của EJB • Remote Interface: remote interface extend javax.ejb.EJBObject. Remote interface chứa các business method, được gọi từ client. Nó đóng vai trò như 1 proxy của EJB. • Bean Class: chứa phần cài đặt của các method khai báo trong remote interface. Bean class extend javax.ejb.SessionBean hoặc javax.ejb.EntityBean hoặc javax.ejb.MessageDrivenBean. Quy ước đặt tên Bean: Java overview Trang 45/66 4.6.4. Phân loại EJB Tùy vào mục đích sử dụng, EJB được chia thành 3 loại như sau: Java overview Trang 46/66 a. Entity Bean Bean này dùng để mô tả một thực thể trong hệ thống, thiết kế chuyên dụng để phục vụ cho việc persistence và sharing dữ liệu. Mỗi Entity Bean tương ứng với một dòng trong bảng của CSDL. - CMP: Container-Managed Persistence - BMP: Bean-Managed Persistence Khi nào dùng Entity Bean? • Cần thể hiện thực thể nghiệp vụ, không phải hàm, thủ tục • Trạng thái của Bean cần được duy trì b. Session Bean Phục vụ cho các yêu cầu xử lý nghiệp vụ và luồng công việc trong ứng dụng J2EE thông qua các phương thức của mình. Session Bean không có tính Persistent, dữ liệu của nó không được lưu vào CSDL. Khi nào sử dụng Session Bean? • Tại một thời điểm, chỉ có một Client truy cập tới thể hiện của Bean • Trạng thái của Bean chỉ tồn tại trong một thời gian ngắn, không cần phải duy trì • Bean được thực thi như Web Services Session Bean được chia làm 2 loại là Stateless và Statefule Java overview Trang 47/66 - Stateless Session Bean Không lưu giữ trạng thái giữa các phương thức xử lý cho các Clients. Sau mỗi phương thức được gọi, EJB Container có thể chọn việc hủy bỏ hoặc tạo mới Stateless Session Bean. Khi nào dùng Stateless Session Bean? • Trạng thái của Bean không lưu dữ liệu cho một Client cụ thể • Cần có phương thức chung cho nhiều Client - Stateful Session Bean Là Bean được thiết kế để thực hiện các xử lý nghiệp vụ yêu cầu phải qua nhiều phương thức, nhiều giao dịch, do đó yêu cầu Statefule Session Bean phải lưu giữ trạng thái của từng Client khi nó xử lý. Khi nào dùng Stateful Session Bean? • Trạng thái của Bean thể hiện sự tương tác giữa Bean và một Client cụ thể • Cần thiết phải ghi nhớ thông tin về Client giữa các phương thức thực hiện Java overview Trang 48/66 • Dùng Bean để quản lý luồng xử lý nghiệp vụ giữa các thành phần Bean khác trong ứng dụng c. Message-Driven Bean Là một Stateless Session Bean đặc biệt. Được sử dụng trong trường hợp các nghiệp vụ của ứng dụng đòi hỏi phải có thời gian thực thi lâu khi Client không thể chờ để hiển thị kết quả. Điều đặc biệt là Message-Driven Bean được thực thi thông qua việc gửi các thông điệp tới JMS (Java Message Service). Bên cạnh đó, Message-Driven Bean là loại asynchronous service trong khi Entity và Session là loại synchronous service. Riêng Message-Driven Bean không đòi hỏi có Interface. Khi nào dùng Message-Driven Bean? • Khi cần truyền nhận thông điệp một cách bất đồng bộ 4.7. Spring Spring ra đời với mục đích làm đơn giản hóa, thay thế các thành phần phức tạp và không quá cần thiết trong J2EE, mà cụ thể đó là EJB - "EJB thì có giá trị của nó, nhưng không phải lúc nào cũng cần thiết và phù hợp cho tất cả các ứng dụng". Trong khi EJB thì cứng và cố gắng làm mọi thứ, một vài công việc tốt nhưng một số thì không. Spring chỉ sử dụng Java Bean và thông qua một số kỹ thuật đặc biệt để cung cấp nhiều chức năng như EJB, bằng cách tích hợp với một số kỹ thuật open source khác. Theo kiến trúc đa tầng của J2EE, Spring đảm nhận công việc ở tầng Business. Để sử dụng Spring theo J2EE cần kết hợp với các framework ở các tầng liên quan là: tầng Presentation (Struts, JSF,...), và tầng Persistence (Hibernate, JDBC,...). Thực tế Spring cũng hỗ trợ cho các tầng Presentation và Persistence, nhưng khả năng không bằng các framework khác như Struts, JSF, Hibernate,... Java overview Trang 49/66 4.7.1. Đặc điểm của Spring • Nguyên lý chính yếu của Spring đó là sử dụng kỹ thuật IoC (Inversion of Control) hay còn gọi là kỹ thuật Dependency Injection. Đây là kỹ thuật làm mềm dẻo hóa mối quan hệ giữa các lớp phụ thuộc lẫn nhau (Mong muốn "Loose coupling" thay cho "Strong coupling"). (Cái này rất khó diễn đạt bằng tiếng Việt) • Spring hỗ trợ lập trình hướng khía cạnh AOP. • Ngoài việc cung cấp một framework mạnh, Spring còn được thiết kế để hỗ trợ người phát triển dễ dàng tích hợp các framework ở các tầng khác trong ứng dụng J2EE: Web framework, Persistent framework,... (Spring cung cấp ~ 1000 lớp/interface cho mục đích kết nối với các framework khác) • Bản thân Spring cung cấp nhiều giao diện có sẵn, giúp cho dễ dàng mở rộng và chỉnh sửa ứng dụng. • Với Spring công đoạn Test được thực hiện dễ dàng hơn (Không cần start EJB Container khi Test như các ứng dụng EJB) • Spring dựa trên các đối tượng JavaBean với các phương thức setter, getter. Tuy nhiên Spring không khởi tạo các đối tượng như cách truyền thống (Obj obj = new Obj()) mà sử dụng phương thức khởi tạo bằng các FactoryContainer dựng sẵn, thuộc tính các đối tượng được config trong các file XML (bean.xml). Các bước thực hiện cho một chức năng trong Spring: 1. Khai báo interface định nghĩa các chức năng. 2. Một implementation chứa các thuộc tính, các phương thức settter và getter. 3. Một file XML gọi là file cấu hình Spring. 4. Chương trình client sử dụng chức năng trên. Download information: www.springframework.org Phiên bản dependency (full) 1. Source Code 2. Library (Test, Integration,...) 3. Document 4. Samples 4.7.2. Các thành phần của Spring Spring cung cấp nền tảng gồm 7 modules (trong các file thư viện JAR) như sau. Tất nhiên, người phát triển có thể mềm dẻo lựa chọn sử dụng bao nhiêu module, và sử dụng những module nào cho phù hợp với ứng dụng của mình. Java overview Trang 50/66 a. Spring Core Cung cấp chức năng cơ bản của Spring. Thành phần chính của nó là Bean Factory, một cài đặt của Factory pattern. BeanFactory áp dụng IoC hay Dependency Injection để đặc tả sự phụ thuộc từ code của ứng dụng. b. Spring Context Spring Context là một file cấu hình để cung cấp thông tin ngữ cảnh của Spring. Spring context cung cấp các service như JNDI access, EJB integration, e-mail, internalization (i18N), validation, và scheduling functionality, truyền sự kiện, resource-loading,... c. Spring DAO Quản lý kết nối đến database, điều khiển exception và thông báo lỗi database. Giúp cho đơn giản điều khiển lỗi và giảm khối lượng code mà chúng ta cần viết như mở và đóng kết nối. Module này cũng cung cấp các dịch vụ quản lý giao dịch cho các đối tượng trong ứng dụng Spring. d. Spring AOP Spring AOP module tích hợp chức năng lập trình hướng khía cạnh (Aspect Oriented Programming) vào Spring framework thông qua cấu hình của nó. Spring AOP module cung cấp các dịch vụ quản lý giao dịch cho các đối tượng trong bất kỳ ứng dụng nào sử dụng Spring. Với Spring AOP chúng ta có thể tích hợp declarative transaction management vào trong ứng dụng mà không cần dựa vào EJB component. Spring AOP module cũng đưa lập trình metadata vào trong Spring. e. Spring ORM Spring có thể tích hợp với một vài ORM framework để cung cấp Object Relation Tool bao gồm: JDO, Hibernate, OJB và iBatis SQL Maps. f. Spring Web Khởi tạo context cho các ứng dụng web. Spring cũng hỗ trợ tích hợp với Struts, JSF và Webwork. Web module cũng làm giảm bớt các công việc điều khiển nhiều request và gắn các tham số của request vào các đối tượng domain. Java overview Trang 51/66 g. Spring MVC Cài đặt đầy đủ đặc tính của MVC pattern để xây dựng các ứng dụng Web. Spring MVC framework hỗ trợ một số kỹ thuật view bao gồm: JSP, Velocity, Tiles,... File cấu hình cho phép lựa chọn cái nào trong số các kỹ thuật trên được sử dụng, trong đó JSP là giao diện mặc định. 4.8. Hibernate 4.8.1. Giới thiệu về Hibernate Hibernate là giải pháp ORM (Object/Relational mapping) OpenSource cho các ứng dụng Java, cung cấp một framework cho việc mapping giữa mô hình hướng đối tượng và các CSDL quan hệ truyền thống. • Hibernate tuân thủ theo kiến trúc J2EE • Việc quy trì kết nối dữ liệu được làm mờ với người phát triển. Hibernate đảm nhận các công việc của Presistence Layer trong mô hình đa lớp • Sử dụng các tài liệu XML để cấu hình kết nối dữ liệu và mapping giữa các lớp đối tượng Java và các bảng trong CSDL • Sử dụng ngôn ngữ truy vấn dữ liệu hướng đối tượng mạnh, cú pháp rất giống với ngôn ngữ chuẩn SQL • Hạn chế việc lặp lại các câu lệnh SQL • Thao tác với các lớp và đối tượng, thay vì query, resultset,... Việc phát triển "Hướng đối tượng hơn" Java overview Trang 52/66 4.8.2. Kiến trúc Hibernate a. Hibernate Session Được hình thành từ SessionFactory, Session thể hiện nội dung được duy trì của Hibernate. Do đó Session được sử dụng để query, cũng như các thao tác insert, update, delete trên dữ liệu. b. Hibernate Persistent Object Là các đối tượng lưu giữ trạng thái, và các hàm nghiệp vụ. Các đối tượng này thường là JavaBean hoặc POJO (Plain Old Java Obiect). Các đối tượng Persistence được sử dụng cùng với Session, khi Session đóng, chúng được giải phóng và sẵn sàng phục vụ cho tầng ứng dụng. c. Transaction & Connection (Option) d. Connector Ngoài JDBC, Hibernate hỗ trợ một số Connector trong một số trường hợp kết nối đặc biệt khác, ví dụ: JTA trong trường hợp kết nối tới nhiều CSDL,... Java overview Trang 53/66 4.8.3. Phát triển ứng dụng với Hibernate • Mỗi bảng trong CSDL quan hệ tương ứng với một lớp đối tượng của ứng dụng, do đó cần có một Bean cho mỗi bảng trong CSDL • Để Hibernate biết một object được mapping như thế nào với table trong CSDL, phải cung cấp tập tin đặc tả gọi là mapping file giữa property của object với field trong table. Theo quy ước của Hibernate, các mapping file này có đuôi là .hbm.xml và phải hợp lệ với DTD (Document Type Definition) mà Hibernate đã đưa ra. Trong các mapping file này. • Cuối cùng cần có 1 tập tin để Hibernate bắt đầu: hibernate.cfg.xml. Có thể nói tập tin này được load lên đầu tiên khi “khởi động” Hibernate. a. Persistent Object - PÔJO file với các thuộc tính (tương ứng các field trong CSDL) - Các phương thức get/set. b. Configuration - hibernate.xml - hibernate.cfg.xml - Person.hbm.xml c. HQL - Hibernate Query Language - Ngôn ngữ truy vấn hướng đối tượng - Cú pháp gần với SQL - Creating Object - Updating Object - Deleting Object - Selecting Object Java overview Trang 54/66 4.9. Web Services 4.9.1. Lịch sử hình thành Web Services Mong muốn về sự giao tiếp giữa các đối tượng từ xa, trong ứng dụng phân tán đã dẫn đến sự hình thành một số công nghệ mang tính "phân tán" như COM, COM+, CORBA, Java RMI,... Tuy nhiên đây là các công nghệ độc quyền của một hãng nào đó, phụ thuộc vào hệ nền, vào ngôn ngữ xây dựng, và không thể giao tiếp với nhau do giao thức của chúng khác nhau, hoặc chi phí thực hiện cao, triển khai phức tạp (CORBA). Mặt khác, các công nghệ ở trên đều được xây dựng mang tính hướng kết nối (connection - oriented) không phục vụ hiệu quả cho các ứng dụng được xây dựng nhiều trên mạng Internet. Đó là các nguyên nhân dẫn tới sự ra đời của Web Services - các dịch vụ Web cho phép các ứng dụng, các hệ thống có thể giao tiếp với nhau. Web Services được hình thành với những mong muốn, đồng thời cũng là đặc điểm như sau: • Giao thức thống nhất trên cơ sở sử dụng định dạng XML • Độc lập với các hệ nền • Thực hiện tin cậy qua mạng Internet, phù hợp và tương thích với các giao thức phổ biến trên Internet hiện nay như HTTP, SMTP, FTP,... • Hỗ trợ cho nhiều ngôn ngữ C, Java, COBOL,... • Hộ trợ cho cơ sở hạ tầng của các ứng dụng phân tán • Xây dựng, triển khai ứng dụng nhanh chóng, đơn giản, linh động MicroSoft chính là đơn vị đầu tiên hướng tới Web Services trong định hướng công nghệ của mình khi đưa SOAP vào W3C nhằm phổ biến rộng rãi và biến SOAP thành một chuẩn trong các giao thức Web Services. 4.9.2. Kiến trúc Web Services Dưới đây là ví dụ đơn giản về kịch bản yêu cầu dịch vụ A của Client: Java overview Trang 55/66 1. Tiến hành tìm dịch vụ Web của hệ thống 2. Lấy mô tả về dịch vụ và cách thức để sử dụng dịch vụ A 3. Truy cập tới dịch vụ A thông qua giao thức SOAP 4. Lấy về kết quả của dịch vụ A thông qua giao thức SOAP Để đáp ứng được các yêu cầu của mình, kiến trúc của Web Services bao gồm các phần như sau: 1. Tầng vận chuyển với những công nghệ chuẩn là HTTP, SMTP và JMS Java overview Trang 56/66 2. Tầng giao thức tương tác dịch vụ (Service Communication Protocol) với công nghệ chuẩn là SOAP. SOAP là giao thức nằm giữa tầng vận chuyển và tầng mô tả thông tin về dịch vụ, SOAP cho phép người dùng triệu gọi một service từ xa thông qua một message XML. 3. Tầng mô tả dịch vụ (Service Description) với công nghệ chuẩn là WSDL và XML. WSDL là một ngôn ngữ mô tả giao tiếp và thực thi dựa trên XML. Web service sử dụng ngôn ngữ WSDL để truyền các tham số và các loại dữ liệu cho các thao tác, các chức năng mà web service cung cấp. 4. Tầng dịch vụ ( Service): cung cấp các chức năng của service. 5. Tầng đăng ký dịch vụ (Service Registry) với công nghệ chuẩn là UDDI. UDDI dùng cho cả người dùng và SOAP server nó cho phép đăng ký dịch vụ để người dùng có thể gọi thực hiện service từ xa qua mạng, hay nói cách khác một service cần phải được đăng ký để cho phép các client có thể gọi thực hiện. 6. Bên cạnh đó để cho các service có tính an toàn, toàn vẹn và bảo mật thông tin trong kiến trúc web service chúng ta có thêm các tầng Policy, Security, Transaction, Management giúp tăng cường tính bảo mật, an toàn và toàn vẹn thông tin khi sử dụng service. 4.9.3. Các thành phần Web Services a. XML - Extensible Markup Language XML là một ngôn ngữ mô tả văn bản với cấu trúc do người sử dụng định nghĩa. Về hình thức XML có ký pháp tựa như HTML nhưng không tuân theo một đặc tả quy ước như HTML. Người sử dụng hay các chương trình có thể quy ước định dạng các tag XML để giao tiếp với nhau.Thông tin cần truyền tải được chứa trong các tag XML, ngoài ra không chứa bất cứ thông tin nào khác về cách sử dụng hay hiển thị những thông tin ấy. XML đặc biệt hiệu quả khi được sử dụng như một chuẩn nhằm quy định định dạng và cả dữ liệu giao tiếp giữa các hệ thống. Do Web Service là sự kết hợp của nhiều thành phần khác nhau, do đó Web Services sử dụng các tính năng và đặc trưng của các thành phần này để giao tiếp với nhau. Vì vậy XML là một công cụ chính yếu để giải quyết vấn đề này. Từ kết qủa này, các ứng dụng tích hợp vĩ mô tăng cường sử dụng XML. Nhờ có khả năng tổng hợp này mà XML đã trở thành kiến trúc nền tảng cho việc xây dựng Web Service. b. WSDL - Web Services Description Language WSDL định nghĩa cách mô tả web service theo cú pháp tổng quát XML, bao gồm các thông tin • Tên ̣service. • Giao thức và kiểu mã hóa sẽ đư-ợc sử dụng khi gọi các hàm của web service. • Loại thông tin: những thao tác, những tham số, và những kiểu dữ liệu gồm có giao diện của web service, cộng với tên cho giao diện này. Một WSDL hợp lệ gồm có hai phần : • Phần giao diện mô tả giao diện và giao thức kết nối. • Phần thi hành mô tả thông tin để truy xuất service. Java overview Trang 57/66 Cả 2 phần trên sẽ được lưu trong 2 tập tin XML, bao gồm: c. Tập tin giao diện service (cho phần Giao diện) Mô tả một số loại thông tin chính: • types: Kiểu dữ liệu của thông điệp • message: Mô tả thông điệp được trao đổi giữa Client và Server • portType: Kiểu cổng (mỗi cổng hỗ trợ các kiểu thao tác khác nhau): One-way, Request- Response, Solicit-Response, Notification. • binding: Định nghĩa các cách Web Services kết hợp với nhau d. Tập tin thi hành service (cho phần Thi hành) Mô tả một số loại thông tin chính: • service: Thực hiện những khai báo trong tập tin giao diện, thủ tục & phương thức gọi Services • port: Cổng đầu cuối định nghĩa tập hợp các Web Services và địa chỉ mạng e. UDDI - Universal Description , Discovery and Intergration Để có thể sữ dụng các dịch vụ, trước tiên client phải tìm dịch vụ, ghi nhận thông tin về cách sử dụng dịch vụ và biết được đối tượng cung cấp dịch vụ. UDDI định nghĩa một số thành phần cho biết trước các thông tin này để cho phép các client truy tìm và nhận lại những thông tin yêu cầu sử dụng web services. Cấu trúc UDDI gồm các thành phần: • Trang trắng - White pages: chứa thông tin liên hệ và các định dạng chính yếu của web services, chẳng hạn tên giao dịch, địa chỉ,… Những thông tin này cho phép các đối tượng khác xác định được service. • Trang vàng - Yellow pages: chứa thông tin mô tả web services theo những chủng loại khác nhau. Những thông tin này cho phép các đối tượng thấy web services theo từng chủng loại của nó. • Trang xanh - Green pages: chứa thông tin kỹ thuật mô tả các hành vi và các chức năng của web services. Các đối tượng dựa vào đặc điểm của web services để tìm kiếm. • Loại dịch vụ - tMode: chứa các thông tin về loại dịch vụ sử dụng. Java overview Trang 58/66 f. SOAP Client có thể truy xuất dịch vụ khi tìm thấy thông qua một giao thức là SOAP - Simple Object Access Protocol. Đây là một giao thức giao tiếp có cấu trúc như XML và mã hóa thành định dạng chung cho các ứng dụng trao đổi với nhau. Ý tưởng bắt đầu từ Microsoft và phần mềm Userland, trải qua nhiều lần thay đổi, hiện tại là phiên bản SOAP 1.2 với nhiều ưu điểm vuợt trội hơn bản SOAP 1.1. SOAP được xem như là cấu trúc xương sống của các ứng dụng phân tán xây dựng từ nhiều ngôn ngữ, hệ điều hành khác nhau. SOAP có những đặc trưng sau: • SOAP được thiết kế đơn giản và dễ mở rộng. • Tất cả các message SOAP đều được mã hóa sử dụng XML. • SOAP sử dùng giao thức truyền dữ liệu riêng. • Không có garbage collection phân tán, và cũng không có cơ chế tham chiếu.Vì thế SOAP client không giữ bất kỳ một tham chiếu đầy đủ nào về các đối tượng ở xa. • SOAP không bị ràng buộc bởi bất kỳ ngôn ngữ lập trình nào hoặc công nghệ nào. Vì những đặc trưng này, nó không quan tâm đến công nghệ gì được sử dụng để thực hiện miễn là người dùng sử dụng các message theo định dạng XML. Tương tự, service có thể được thực hiện trong bất kỳ ngôn ngữ nào, miễn là nó có thể xử lý được những message theo định dạng XML. Cấu trúc một message theo dạng SOAP được mô tả như hình dưới đây: • Phần tử gốc - envelop: phần từ bao trùm nội dung message, khai báo văn bản XML như là một thông điệp SOAP. • Phần tử đầu trang - header: chứa các thông tin tiêu đề cho trang, phần tử này không bắt buộc khai báo trong văn bản. Những đầu mục còn có thể mang những dữ liệu chứng thực, những chữ ký số hóa, và thông tin mã hóa, hoặc những cài đặt cho giao tác. Java overview Trang 59/66 • Phần tử khai báo nội dung chính trong thông điệp - body, chứa các thông tin yêu cầu và phản hồi. SOAP hỗ trợ hai kiểu truyền thông khác nhau: • Remote procedure call (RPC): cho phép gọi hàm hoặc thủ tục qua mạng. Kiểu này được khai thác bởi nhiều web service và có nhiều trợ giúp. • Document: được biết như kiểu hướng message: kiểu này cung cấp một lớp thấp của sự trừu tượng hóa, và yêu cầu người lập trình nhiều hơn khi làm việc. 4.9.4. Web Services trong công nghệ Java Web Services được khởi đầu từ MicroSoft. Nhưng công nghệ liên quan tới Java thực sự đưa Web Services phát triển mạnh trong thể giới của mình, không chỉ là Sun Microsystems, công ty tạo ra Java, triển khai các công nghệ, mà còn có nhiều nhà cung cấp khác như BEA, IBM,... Với Java, Web Services tận dụng khả năng giải quyết vấn đề của các ứng dụng lớn trên các hệ điều hành khác nhau cho chúng giao tiếp với nhau. Để tạo một web service chúng ta cần xây dựng các tầng cần thiết trong kiến trúc web service hay nói cách khác là xây dựng và thiết lập các thành phần trong các tầng đó, cụ thể là các thành phần SOAP, WSDL, UDDI, XML, trong đó : • SOAP là giao thức nằm giữa tầng vận chuyển và tầng mô tả thông tin về dịch vụ, SOAP cho phép người dùng triệu gọi một service từ xa thông qua một message XML. • WSDL là một ngôn ngữ mô tả giao tiếp và thực thi dựa trên XML. Web service sử dụng ngôn ngữ WSDL để truyền các tham số và các loại dữ liệu cho các thao tác, các chức năng mà web service cung cấp. • UDDI dùng cho cả người dùng và ̣ SOAP server, nó cho phép đăng ký dịch vụ để người dùng có thể gọi thực thi các hàm , các chức năng của web service hay nói cách khác một service cần phải được đăng ký để cho phép các client có thể gọi thực hiện • Bên cạnh đó chúng ta cũng phải quan tâm đến việc làm sao để cho các service có tính an toàn, toàn vẹn và bảo mật thông tin trong web services nhất là các service liên quan đến giao dịch thương mại và tài chính.Chúng ta sẽ tìm hiểu nội dung này trong các phần tiếp theo. 4.10. Portal 4.10.1. Sự hình thành Portal Xuất phát từ nhu cầu chia sẻ thông tin trong cộng đồng là một động lực quan trọng cho sự hình thành và phát triển của mạng Internet ngày nay. Những thông tin trình diễn trên các website và cùng với khả năng liên kết giữa chúng, thông qua các links, đã thực sự tạo ra các kênh liên lạc lý tưởng mà qua đó cộng đồng các nhà khoa học, các nhà nghiên cứu, các doanh nghiệp, các nhóm người có cùng mục đích có thể chia sẻ thông tin, cộng tác với nhau trong một mục đích chung. Tuy nhiên cùng với thời gian, sự gia tăng về số lượng các website trên Internet, sự mở rộng quy mô các website điều hành trong các doanh nghiệp đã đặt ra một số bất cập sau: Java overview Trang 60/66 • Vấn đề quá tải thông tin, phải xử lý, lục tìm nhiều mới có được thông tin chính xác mà mình cần • Về khía cạnh kỹ thuật, các thông tin thường là độc lập, khó phân loại, dẫn đến tình trạng khó chia sẻ • Khó khăn trong việc quản lý, bảo trì website của các doanh nghiệp Đối với các doanh nghiệp, yêu cầu quan trọng là các website phải cung cấp công cụ hỗ trợ làm việc, hỗ trợ hoạt động nghiệp vụ của mình. Đó cũng chính là lý do dẫn tới sự hình thành cổng giao dịch thông tin PORTAL. 4.10.2. Định nghĩa & đặc điểm của Portal Từ Portal (cổng) vốn là một thuật ngữ kiến trúc, chỉ lối vào một tòa nhà lớn. Trong lĩnh vực CNTT, Portal cũng có ý nghĩa tương tự. Có thể coi đó là cổng vào một kho thông tin lớn, đa dạng. Qua Portal, những đối tượng người dùng khác nhau có thể truy cập đến nhiều loại thông tin khác nhau nhưng theo một cách thức thống nhất. Định nghĩa chung về Portal: Portal là một cổng thông tin cung cấp tập hợp nhiều dịch vụ cho người dùng như tìm kiếm thông tin, hỗ trợ hoạt động nghiệp vụ, email, forum,... Đối với người dùng có thể Portal chỉ là một website thông thường qua trình duyệt nhưng nó là một "siêu website", một điểm đích quy tụ hầu hết các thông tin, dịch vụ mà người dùng cần. Ở góc độ khách hàng hay đối tác kinh doanh thì portal chính là kênh thông tin nơi doanh nghiệp tiếp xúc, trao đổi và thực hiện giao dịch với đối tác, khách hàng của mình. Khi một doanh nghiệp nào đó có portal thì tất cả mọi giao dịch đều được thực hiện trên một giao diện duy nhất nhưng thông tin được thể hiện theo ý thích đến tận cá nhân người sử dụng. Và portal cũng làm cho quá Java overview Trang 61/66 trình trao đổi thông tin giữa các nhân viên trong một doanh nghiệp với khách hàng hay đối tác được nhanh chóng, thuận tiện và ít tốn kém. Một vài đặc điểm quan trọng của Portal: a. Cá nhân hóa giao diện người dùng Đây là thuộc tính này là quan trọng nhất. Một portal phải cung cấp cho người sử dụng một giao diện nhất quán và giao diện này phải do chính người sử dụng lựa chọn. Tính cá nhân hóa thể hiện trên ở chỗ: • Người sử dụng được quyền sắp xếp, tổ chức lại cách thức hiển thị thông tin trên portal theo ý muốn của mình. • Nội dung thông tin và dịch vụ: Người sử dụng được quyền lựa chọn để chỉ hiển thị những thông tin và dịch vụ mà họ thực sự quan tâm. b. Tổ chức thông tin theo một CMS • Thông tin được quản lý bởi portal đa dạng (text, media,...) phải được phân loại và sắp xếp các theo các chủ đề, phục vụ cho việc tìm kiếm, tránh tình trạng quá tải thông tin. • Hỗ trợ tính năng tìm kiếm mạnh, theo nhiều tiêu chí. • Nguồn thông tin đa dạng • Hỗ trợ nhiều môi trường hiển thị tin: PC, Mobile, PDA,… • Bảo mật thông tin c. Hỗ trợ mô hình làm việc cộng tác • Cung cấp các công cụ phục vụ cho hoạt động nghiệp vụ của người dùng: email, forum, conference, task management,... • Tích hợp các phần mềm hỗ trợ nghiệp vụ (workflow) d. Hệ quản trị mạnh • Quản trị Portal: Layout, Look & Feel, Kênh thông tin,… • Quản trị người dùng: Roles, Groups,… e. Cơ chế Single Sign On • Người dùng chỉ cần đăng nhập một lần là có thể sử dụng mọi dịch vụ theo Role của mình 4.10.3. Các loại Portal a. Phân loại theo khách hàng • Vertical portal Là các Portal có nội dung thông tin cũng như các dịch vụ của nó được thiết kế để phục vụ cho một lĩnh vực xác định, cho một chuyên ngành xác định. Virtiacal portal thường được sử dụng để cung cấp môi trường làm việc cho các cộng đồng hoặc các nhóm làm việc có chung một mục đích xác định. Các portal của cộng đồng các nhà khoa học, các cộng đồng tôn giáo là những ví dụ điển hình cho loại portal này • Horizontal portal Java overview Trang 62/66 Thuật ngữ này được sử dụng để chỉ những portal mà nội dung thông tin cũng các dịch vụ của nó bao trùm nhiều chủ đề, nhiều lĩnh vực, do vậy nó mang tính diện rộng, phục vụ cho nhiều loại khách hàng khác nhau. Ví dụ Yahoo,... b. Phân loại theo mục đích sử dụng • Information portal Xây dựng hệ thống cung cấp thông tin trên cơ sở thu gom số liệu từ nhiều nguồn khác nhau. Các nguồn dữ liệu này nằm rải rác trên mạng toàn cầu Internet, từ các CSDL của các mạng nội bộ Intranet, và thậm chí cả từ các portal khác. • Community portal Xây dựng các cộng đồng ảo để giúp đỡ lẫn nhau và để hợp tác với nhau trong cùng một mục đích xác định. Community portal mang lại cơ hội cộng tác cho các cá nhân, tổ chức doanh nghiệp mà ranh giới địa lý không có ý nghĩa ở đây. • Corporate portal (or Enterprise portal) Corporate portal thường được dùng bởi các nhân viên trong một cơ quan hay tổ chức sử dụng để chia sẻ thông tin với nhau, cộng tác với nhau để cùng giải quyết một công việc, qua đó nâng cao năng suất lao động và hiệu quả giải quyết công việc của mình. • Commercial portal Cung cấp “chợ điện tử” (e-mall) trong thị trường thương mại điện tử. Có rất nhiều mô hình của commercial portal, như B2B portal thực hiện các giao dịch điện tử giã các doanh nghiệp, B2C thực hiện mua/bán hàng hóa giữa khách hàng và doanh nghiệp, Tourism portal để phục vụ ngành công nghiệp du lịch, và v.v.. • Goverment portal Cung cấp các “cổng hành chính công điện tử” để chính quyền (Trung ương và địa phương) thực hiện các chức năng của mình đối với dân chúng thông qua việc cung cấp thông tin và các dịch vụ hành chính công. c. Theo quan điểm về mã nguồn của người phát triển • Portal thương mại: MS SharePoint, BEA WebLogic, OracleAS, IBM WebSphere Portal,... • OpenSource: DotNetNuke, uPortal, Liferay,... 4.10.4. Portal với công nghệ Java a. Portlet và Chuẩn JSR 168 Hầu hết các Portal Framework đều cung cấp một chuẩn các giao diện ứng dụng lập trình (API) có tính mở, nhờ đó người phát triển hệ thống có thể sử dụng để gắn các ứng dụng và dịch vụ vào khung của Portal. Các API này được biết với tên là Portlet, là một công cụ cho phép người phát triển đăng ký các thành phần khác nhau với một khung Portal, bằng cách đó có thể tùy biến và tạo ra Portal của riêng mình. Bố trí các thành phần trên giao diện của một Portlet: Java overview Trang 63/66 Trong các Portal Framework xây dựng trên nền tảng Java, Portlet là sự mở rộng của Servlet. Tất nhiên, lược đồ xử lý của Portlet phức tạp hơn Servlet, ngoài Request, Response còn có các yêu cầu Action, Render. Portlet có thể sử dụng JSPs và servlet để cài đặt những tính năng của nó. Vì 1 ứng dụng portlet là 1 mở rộng của ứng dụng web, nên nó có thể bao gồm những thành phần ứng dụng web khác trên một nền tảng vững chắc của các chuẩn Internet như: HTTP, HTML, XML, SSL,… Thêm vào đó, ứng dụng portlet còn bao gồm 1 file mô tả triển khai portlet.xml Portal có Porlet Container để quản lý và thực thi các Portlet: • Cung cấp môi trường thực thi cho portlet. • Xác định và phân phối yêu cầu khai thác thông tin từ portal đến đúng portlet có khả năng giải quyết. • Quản lý thời gian sống của các portlet cài đặt trong hệ thống (khởi động và loại bỏ các portal không cần thiết để giải phóng bộ nhớ cho hệ thống). • Gửi kết quả xử lý thông tin của portlet cho portal để chuyển giao cho người sử dụng. Java Specification Request 168 - JSR 168 là chuẩn để viết Portlet cho các Portal xây dựng trên nền tảng công nghệ Java (JSR 168 còn được gọi là Portlet API). Với chuẩn này, bất kỳ ai cũng có thể phát triển các Portlet bằng cách tuân theo và đăng ký là một thành phần của Portal, do đó ứng dụng có thể chạy tương thích trên Portal Framework mà mình sử dụng. Java overview Trang 64/66 b. Đặc điểm Portal dựa trên công nghệ Java Ngoài việc cung cấp framework mạnh cho người phát triển customize, thêm mới các portlet nghiệp vụ của mình, các Portal framework trên công nghệ Java nói riêng và Portal framework nói chung đều được tích hợp một số Portlets thông dụng như: Mail, Forum, Calendar, Library,... Dựa trên công nghệ mã nguồn mở, cộng đồng phát triển đông đảo, liên tục phát triển, tự do chỉnh sửa mà nguồn theo yêu cầu nghiệp vụ của mình. Áp dụng hầu hết các công nghệ, framework mạnh, nổi tiếng của Java hiện nay như: • Xây dựng theo kiến trúc J2EE • Chuẩn Portlet JSR-168 • Hibernate • Spring, EJB • Struts, Tiles, JSF • Web Services • WSRP - Web Services for Remote Portal, Hỗ trợ giao tiếp với J2ME • AJAX, RSS c. Kiến trúc tổng thể Ví dụ về kiến trúc của Liferay Portal: Java overview Trang 65/66 5. Tài liệu tham khảo

Các file đính kèm theo tài liệu này:

  • pdfMột số vấn đề về công nghệ Java.pdf
Tài liệu liên quan