Chương 3: Thiết kế kiến trúc
III. HTML/CGI-with-Servlets
Trong khi Java phía client không được phổ biến như mong đợi, một cách dùng khác của Java - trên server - thực sự tạo được một động lực mới. Hiện nay, các server có ứng dụng Java đang mang lại sức mạnh cho một số lượng lớn và ngày càng tăng các dịch vụ trên Web. Ngôn ngữ chung của chúng là giao diện lập trình ứng dụng (API) servlet, xác định cách thức tương tác của Java servlet với máy chủ trên Java của nó. Nó được hỗ trợ rộng rãi và mặc dù Enterprise JavaBeans hiện đang xuất hiện như là chuẩn, servlet API đơn giản hơn nhiều trong việc tạo ra giao tiếp chung hiệu quả cho các thành phần Java trên phía server.
Do được viết bằng Java, servlet tạo thành một môi trường xuất sắc cho các dịch vụ mạng.
Lập trình viên Java không trực tiếp quản lý bộ nhớ, vì thế servlet tránh được lỗi tràn bộ đệm, vốn tạo ra các điểm yếu về bảo mật trong các phần mềm được viết bằng C hay C++.
Những cơ chế đơn giản của Java để xử lý các trường hợp ngoại lệ và đa luồng khuyến khích việc phát triển các dịch vụ mạng một cách chặt chẽ và đáng tin cậy.
Servlet cũng có ưu thế về kiến trúc để có thể khai thác hoàn toàn lợi thế thực sự của Java.
Nếu applet không tương thích với JVM, nó có thể không hoạt động đúng nhưng servlet thì được triển khai trong một môi trường được kiểm soát tốt hơn nhiều và không gặp phải vấn đề không tương thích về JVM. Một số server ứng dụng Java có thể biên dịch các servlet thành mã máy, tăng đáng kể tốc độ thực thi. Một số khác sẽ chạy nhiều JVM song song và đôi lúc là trên nhiều quá trình trong hệ điều hành chủ. Những chiến lược này tăng tính khả mở và chịu lỗi.
Vì servlet đơn giản và hiệu quả nên những công nghệ khác dùng chúng như những khối căn bản. Java Server Page (JSP), hệ thống mẫu dùng để "tiêm" luận lý Java vào trang HTML giống như Active Server Page của Microsoft. Lần đầu tiên máy chủ JSP nhận yêu cầu về một trang JSP, nó sẽ biên dịch luận lý Java và nội dung HTML thành servlet. Sau đó, những yêu cầu đối với trang này sẽ được servlet trả lời.
Tuy nhiên, các ứng dụng nhúng Java vẫn có thể thoả mãn các hứa hẹn ban đầu của chúng.
Yêu cầu về giao diện đồ hoạ Web phong phú hơn đang gia tăng và chưa có công nghệ nào khác có khả năng đa hệ, khả chuyển giữa các trình duyệt như Java.
Ví dụ code serlvets Hello world:
// Import required java libraries import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
// Extend HttpServlet class
public class HelloWorld extends HttpServlet { private String message;
public void init() throws ServletException {
// Do required initialization message = "Hello World";
}
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// Set response content type
response.setContentType("text/html");
// Actual logic goes here.
PrintWriter out = response.getWriter();
out.println("<h1>" + message + "</h1>");
}
public void destroy() {
// do nothing.
} }
Bây giờ biên dịch mã ở trên và gọi các lớp được tạo ra trong mã HTML của bạn như sau:
<servlet>
<servlet-name>HelloWorld</servlet-name>
<servlet-class>HelloWorld</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>HelloWorld</servlet-name>
<url-pattern>/HelloWorld</url-pattern>
</servlet-mapping>
Kết quả trên web brower:
IV. Tổng quát về Corba
CORBA là một công nghệ đối tượng phân bố xác định bởi OMG (Object Management Group) trong kiến trúc OMA (Object Management Architecture). Kiến trúc nầy cũng đã được chấp nhận bởi The Open Group. Vậy thế nào là công nghệ đối tượng phân bố? Một mô hình đơn giản là Web và mối quan hệ giữa trình duyệt Web và server. Một trình duyệt Web như một container lưu trữ văn bản và hình ảnh. Khi người dùng kết nối đến Web server, các đối tượng như văn bản, hình ảnh, Java applet và các đối tượng ActiveX được tải về trình duyệt. Nội dung của trình duyệt là một tài liệu phức hợp (compound document). Tuy nhiên, giao thức truyền thống trên Web như HTTP
(Hypertext Transfer Protocol) và HTML (Hypertext Markup Language) chỉ thích hợp cho việc xuất bản thông tin lên Web, không dùng cho các ứng dụng quan trọng xử lý các giao dịch trên Web. Giao thức HTTP không cung cấp môi trường đủ mạnh để thực thi các ứng dụng client/server phức tạp vì nó không cung cấp khả năng quản lý trạng thái. Có nghĩa là sau một yêu cầu của client, tất cả các kết nối đều bị ngắt, nếu người dùng nhấp chuột vào một nút bấm trên trang Web vừa nhận được, thì một kết nối mới sẽ được thiết lập.
Trái lại, những ứng dụng client/server dựa trên thông tin trạng thái để các tác vụ quan trọng được thực hiện an toàn. Những tác vụ quan trọng phải được quản lý để bảo đảm là chúng hoàn tất. Chẳng hạn, một giao dịch chuyển tiền. Nếu trong quá trình chuyển tiền từ một tài khoản đến tài khoản khác không hoàn tất thì phải chắc rằng việc rút tiền phải được huỷ bỏ. Nhiều nhà cung cấp thực hiện các xử lý giao dịch nầy thông qua Internet bằng các sử dụng những giao thức truyền thông thích hợp giữa client và server. Ví dụ:
Một người dùng dùng trình duyệt của mình kết nối đến Web server. Web server tải những thành phần giao tiếp giữa client/server cần thiết. Những thành phần mới cho phép client kết nối trực tiếp đến hệ thống dữ liệu cuối bỏ qua HTTP và HTML. Trong trường hợp nầy, trình duyệt Web giống như một chương trình thực thi các ứng dụng tách biệt khi
người dùng có những thành phần liên kết trực tiếp đến máy chủ chứa dữ liệu. Những thao tác tương tự có thể thực hiện tại mạng cục bộ. Không giống như Web, một server liên kết đến một Web server, tại đây ứng dụng client/server cần phải kết nối đến nhiều server ở những nơi khác nhau. Thường thì, không thể xác định vị trí các server nầy. Điều cần thiết là một hệ thống có thể định vị giao tiếp giữa các đối tượng trong nhiều hệ thống khác nhau trên mạng và điều khiển, quản lý các giao tác để bảo đảm hoàn tất các tác vụ quan trọng. Hệ thống còn phải hỗ trợ người sử dụng định vị các thành phần cần thiết để hoàn tất các tác vụ. Tham khảo chi tiềt về CORBA ở phần sau. Kiến trúc quản lý đối tượng (OMA - Object Management Architecture) OMG phát triển OMA như là một mô hình tổng quan về môi trường phân bố. CORBA được xây dựng trên môi trường nầy, nó bao gồm những thành phần ở mức ứng dụng và hệ thống như hình C-18. Dưới đây là chi tiết về các thành phần: The ORB (Object Request Broker) quản lý tương tác giữa các đối tượng. Nó hỗ trợ việc tìm kiếm các đối tượng trên mạng, định nghĩa các đối tượng xử lý yêu cầu từ phía client. Object Services dịch vụ đi kèm với ORB cung cấp những dịch vụ về an toàn và xử lý giao dịch cho bất kỳ đối tượng nào. Application Interface là giao diện tại người dùng đầu cuối. Những giao diện nầy cung cấp giao diện ứng dụng cho các ứng dụng như xử lý văn bản, bảng tính. Những ứng dụng nầy thường không có tính năng chia sẻ. Hình C-18 Kiến trúc quản lý đối tượng Common Facilities cũng là một giao diện tại người sử dụng đầu cuối. Hỗ trợ các ứng dụng cho phép các ứng dụng khác truy cập và chia sẻ chẳng hạn như: spelling checker - trình kiểm tra từ vựng, tiện ích vẽ biểu đồ hay một chức năng sắp xếp. Chú ý là ORB thường được xem như một liên kết giữa các đối tượng. Tuy nhiên, ORB thực sự chỉ là một tập các giao diện ứng dụng giao tiếp với nhau để cung cấp dịch vụ giao tiếp giữa các đối tượng. Kiến trúc mạng tầng dưới và những quá trình đi kèm với các đối tượng được ẩn dấu và người sử dụng tưởng như là một ứng dụng đơn, thậm chí khi hệ thống tương tác với hệ thống khác ở xa. Kiến trúc CORBA Mục đích đầu tiên của OMG là tạo ra một kiến trúc chuẩn cho quá trình phát triển các ứng dụng hướng đối tượng tương thích với sự đa dạng của các sản phẩm từ nhiều nhà sản xuất và môi trường hệ điều hành khác nhau. Hình C-19 mô tả kiến trúc CORBA tích hợp với mô hình OSI và TCP/IP. Những tầng trên của kiến trúc CORBA cung cấp giao diện đối tượng cho tầng GIOP (General Inter-ORB Protocol) hay ESIOP (Environment-Specifi Inter-ORB Protocol). Hình C-19 Mô hình giao thức CORBA Dưới tầng GIOP là tầng IIOP (Intenet Inter-ORB Protocol) cung cấp một giao diện cho các topology mạng. Hiện tại, CORBA được tích hợp vào kiến trúc TCP/IP thông qua giao thức IIOP (Internet Inter- ORB Protocol), nhưng cũng có thể tích hợp với các giao thức khác như: IPX, OSI, SNA.
Chú ý là IIOP kết nối trực tiếp đến tầng TCP và có thể thay thế HTTP trong nhiều trường hợp. Với giao thức ESIOP, đòi hỏi những giao diện ứng dụng phụ thuộc vào DCE. Hiện tại, giao thức tầng dưới ESIOP là DCE-CIOP (DCE- Common Inter-ORB Protocol) hỗ trợ DCE (Ditributed Computing Environment) và kết dính DCE vào TCP. Một chú ý nữa là IIOP chuyển HTTP thành giao thức client/server trên Web. Nó cung cấp những dịch vụ xử lý các ứng dụng thương mại quan trọng tốt hơn trên môi trường Internet. Netscape đã tích hợp IIOP vào trình duyệt của nó. Do vậy, tương lai bạn sẽ nhập:
iiop://www.website.com thay vì http://www.website.com để truy cập website về những thông tin không chỉ liên quan đến Web. Những nơi sử dụng IIOP hỗ trợ CORBA cho phép giao tiếp giữa các đối tượng trên máy của bạn với các đối tượng trên những máy ở xa. Xem chi tiết phần IIOP (Internet Inter-ORB Protocol) về giao thức nầy. Giao diện và tương tác giữa các đối tượng CORBA Như đã đề cập, ORB thường được xem như một cầu nối giữa client và đối tượng cung cấp dịch vụ. Hình C-20 đề cập chi tiết về giao diện giao tiếp nầy. Những giao diện tương tác nầy được thiết kế hoàn hảo và được định nghĩa bằng ngôn ngữ IDL của OMG (Interface Definition Language). Ngôn ngữ IDL dùng để đặc tả giao diện của các đối tượng. Hình C-20 Giao tiếp giữa các đối tượng và các giao diện CORBA. Những đối tượng được định nghĩa bằng ngôn ngữ IDL về cơ bản là cơ động. Vì ngôn ngữ IDL là độc lập và cho phép người sử dụng tạo ra các đối tượng sử dụng bằng bất kỳ ngôn ngữ nào. Những đối tượng tạo ra bằng ngôn ngữ IDL có những phương thức mà các đối tượng CORBA tương thích khác có thể sử dụng được, mà không quan tâm đến cấu trúc của đối tượng nầy. Một trình ứng dụng client giao tiếp với một đối tượng khác (gọi là object implemetation - hiện thực đối tượng) bằng cách gửi yêu cầu đến ORB. Sau đó đối tượng đích nhận yêu cầu từ ORB. Để gửi yêu cầu, client có thể sử dụng ba giao diện khác nhau. Một số chức năng hệ thống đòi hỏi client phải kết nối trực tiếp đến giao diện ORB. Hai giao diện khác có thể dùng tùy thuộc vào bản chất của đối tượng đích: Giao diện IDL Stubs: được dùng khi ngôn ngữ IDL yêu cầu thông dịch giữa client và server. Trong trường hợp nầy, phần lừi của ngụn ngữ IDL phớa server sẽ liờn quan.
Giao diện DII (Dynamic Invocation Interface): cho phép tương tác giữa các giao diện ORB. Một trình client tự động gởi một yêu cầu mà không cần phải có một stub IDL nào đó. Trong trường hợp nầy DSI (Dynamic Skeleton Interface) phía server sẽ liên quan đến kết nối trên. Cuối cùng, OA (Object Adapter) hỗ trợ ORB liên kết các bản hiện thực đối tượng với ORB. OA cũng có thể hỗ trợ bản hiện thực ví dụ như một cơ sở dữ liệu hướng đối tượng. Chi tiết về những nhà phát triển và lập trình viên tại website ở cuối phần nầy.
Sự liên hệ giữa CORBA với DCOM và Internet CORBA là công nghệ cạnh tranh với công nghệ DCOM (Distributed Component Object Model) và ActiveX của Microsoft.
DCOM là công nghệ dựa trên nền hệ điều hành Windows và là một giải pháp của một nhà cung cấp. Tuy nhiên, Microsoft đã đưa DCOM và ActiveX vào nhóm Open Group để chuẩn hóa chúng. Gần đây, Microsoft tập trung vào sản phẩm Microsoft Transaction Server, được thiết kế để hỗ trợ giao dịch các đối tượng trong mạng cục bộ, Internet và cung cấp kết nối đến các hệ thống lớn. Xem phần “Microsoft Transaction Server”. Vì tính phổ biến của hệ điều hành Windows, những dịch vụ hỗ trợ, và kiến thức của nhà phát triển, khiến cho người ta tin rằng DCOM sẽ là giải pháp tốt hơn, nhưng trái lại CORBA lại được hỗ trợ từ nhiều nhà cung cấp và thích hợp cho hệ thống không đồng nhất. Một khía cạnh khác của CORBA là nó được thiết kế nguyên thủy dùng cho môi trường mạng diện rộng có sự điều khiển và các kết nối liên công ty không dùng cho mạng Internet. Do vậy, thời gian sẽ chứng tỏ sức mạnh của công nghệ trong những môi trường này.