Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 96 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
96
Dung lượng
1,69 MB
Nội dung
VIENTHONG05.TKĐại Học Cần Thơ - Giáo Trình Lập Trình Truyền Thông Khoa Công Nghệ Thông Tin CHƯƠNG Tổng quan lập trình truyền thơng Mục đích Chương nhằm cung cấp cho bạn nhìn tổng quan vấn đề có liên quan lập trình truyền thơng u cầu Sau hồn tất chương này, bạn có thể: Giải thích Cơ chế giao tiếp liên q trình (Inter-Process Communication ) Mơ tả chức năng, nhiệm vụ tầng mơ hình OSI Định nghĩa giao thức biện luận cần thiết giao thức truyền thông Mô tả giao thức TCP/IP Định nghĩa mô hình Client – Server Phân biệt chế độ giao tiếp: Nghẽn Không nghẽn Phân biệt kiểu kiến trúc chương trình Biên Soạn: Ngơ Bá Hùng - Nguyễn Công Huy VIENTHONG05.TKĐại Học Cần Thơ - Giáo Trình Lập Trình Truyền Thơng Khoa Cơng Nghệ Thơng Tin 1.1 Cơ chế giao tiếp liên trình ? Truyền thơng khái niệm dùng để giao tiếp, trao đổi thông tin hai hay nhiều thực thể hệ thống Nếu hệ thống mà xem xét xã hội lồi người, truyền thơng q trình trao đổi thơng tin người với người sống thông qua phương tiện truyền tải thông tin khác khơng khí (trong trị chuyện trực tiếp), hệ thống điện thoại, sách, báo, phương tiện nghe nhìn, mạng máy tính Nếu hệ thống mà xem xét hệ thống máy tính hay hệ thống mạng truyền thơng phân thành hai mức: Mức phần cứng: giao tiếp, trao đổi thông tin phận vật lý cấu thành nên hệ thống máy tính CPU, nhớ, thiết bị vào ra, card giao tiếp mạng, nhờ vào phương tiện truyền thông hệ thống BUS nội, hệ thống BUS vào hay dây cáp mạng Mức phần mềm: giao tiếp, trao đổi thông tin thành phần bên chương trình hay chương trình với thơng qua chế truyền thông hỗ trợ hệ điều hành, hệ điều hành mạng Trong hệ thống máy tính đơn nhiệm (monotasking) cổ điển, ví dụ MS-DOS, thời điểm cho phép tồn trình Việc giao tiếp, trao đổi thông tin diễn phạm vi chương trình Đó giao tiếp thủ tục hình thức chia sẻ biến toàn cục, hay cách truyền tham số gọi hàm, thủ tục hay giá trị trả hàm Ngược lại, hệ thống đa nhiệm (multitasking) có nhiều trình tồn song song nhau, trình thực không gian địa (Address space) riêng biệt Việc giao tiếp trình muốn thực địi hỏi phải có tiện ích hỗ trợ hệ điều hành, hệ điều hành mạng Các tiện ích thường gọi với tên Cơ chế giao tiếp liên trình (IPC - Inter-Process Communication) 1.2 Phân loại chế giao tiếp liên trình Các chế giao tiếp liên trình hỗ trợ hệ điều hành đa nhiệm, hệ điều hành mạng chia làm hai loại: Loại 1: Cơ chế giao tiếp liên trình hỗ trợ giao tiếp trình máy tính (Hình H1.1) Hình 1.1 - Cơ chế giao tiếp liên q trình loại Biên Soạn: Ngơ Bá Hùng - Nguyễn Công Huy VIENTHONG05.TKĐại Học Cần Thơ - Giáo Trình Lập Trình Truyền Thơng Khoa Cơng Nghệ Thơng Tin • Loại 2: Cơ chế giao tiếp liên trình hỗ trợ giao tiếp trình nằm máy tính khác (Hình H1.2) Hình 1.2 - Cơ chế giao tiếp liên trình loại Trong chế giao tiếp liên trình máy, liệu trao đổi qua lại trình phải xuyên qua hạt nhân (kernel) hệ điều hành Đó vùng nhớ dùng chung cho trình qui định trước hệ điều hành, hay tập tin đĩa quản lý hệ điều hành q trình ghi liệu vào, q trình khác đọc liệu ra, Trong chế giao tiếp liên trình máy tính khác nhau, liệu trao đổi trình khơng phải qua hạt nhân chế giao tiếp liên q trình máy tính mà hạt nhân máy có liên quan phải hiểu Nói cách khác hạt nhân phải thoả thuận trước với qui tắc trao đổi thông tin chúng Thông thường ta gọi qui tắc giao thức (Protocol) 1.3 Mơ hình tham khảo OSI Để dễ dàng cho việc nối kết trao đổi thông tin máy tính với nhau, vào năm 1983, Tổ chức tiêu chuẩn giới ISO phát triển mơ hình cho phép hai máy tính gởi nhận liệu cho Mơ hình dựa tiếp cận phân tầng (lớp), với tầng đảm nhiệm số chức gọi mơ hình OSI Để hai máy tính trao đổi thơng tin với cần có nhiều vấn đề liên quan Ví dụ cần có Card mạng, dây cáp mạng, điện tín hiệu cáp mạng, cách thức đóng gói liệu, điều khiển lỗi đường truyền Bằng cách phân chia chức vào tầng riêng biệt nhau, việc viết phần mềm để thực chúng trở nên dễ dàng Mơ hình OSI giúp đồng hệ thống máy tính khác biệt chúng trao đổi thơng tin Mơ hình gồm có tầng: Tầng ứng dụng (Application Layer) Đây tầng cùng, cung cấp ứng dụng truy xuất đến dịch vụ mạng Nó bao gồm ứng dụng người dùng, ví dụ Web Browser (Netscape Navigator, Internet Explorer ), Mail User Agent (Outlook Express, Netscape Messenger, ) hay chương trình làm server cung cấp dịch vụ mạng Web Server (Netscape Enterprise, Internet Information Service, Apache, ), Các FTP Server, Mail server (Send mail, MDeamon) Người dùng mạng giao tiếp trực tiếp với tầng Tầng trình bày (Presentation Layer) Biên Soạn: Ngô Bá Hùng - Nguyễn Công Huy VIENTHONG05.TKĐại Học Cần Thơ - Giáo Trình Lập Trình Truyền Thông Khoa Công Nghệ Thông Tin Tầng đảm bảo máy tính có kiểu định dạng liệu khác trao đổi thơng tin cho Thơng thường máy tính thống với kiểu định dạng liệu trung gian để trao đổi thơng tin máy tính Một liệu cần gởi tầng trình bày chuyển sang định dạng trung gian trước truyền lên mạng Ngược lại, nhận liệu từ mạng, tầng trình bày chuyển liệu sang định dạng riêng Tầng giao dịch (Session Layer) Tầng cho phép ứng dụng thiết lập, sử dụng xóa kênh giao tiếp chúng (được gọi giao dịch) Nó cung cấp chế cho việc nhận biết tên chức bảo mật thông tin truyền qua mạng Tầng vận chuyển (Transport Layer) Tầng đảm bảo truyền tải liệu trình Dữ liệu gởi đảm bảo khơng có lỗi, theo trình tự, khơng bị mát, trùng lắp Đối với gói tin có kích thước lớn, tầng phân chia chúng thành phần nhỏ trước gởi đi, tập hợp lại chúng nhận Tầng mạng (Network Layer) Tầng đảm bảo gói liệu (Packet) truyền từ máy tính đến máy tính cho dù khơng có đường truyền vật lý trực tiếp chúng Nó nhận nhiệm vụ tìm đường cho liệu đến đích khác hệ thống mạng Tầng liên kết liệu (Data-Link Layer) Tầng đảm bảo truyền tải khung liệu (Frame) hai máy tính có đường truyền vật lý nối trực tiếp với Nó cài đặt chế phát xử lý lỗi liệu nhận Tầng vật ký (Physical Layer) Điều khiển việc truyền tải thật bit đường truyền vật lý Nó định nghĩa tín hiệu điện, trạng thái đường truyền, phương pháp mã hóa liệu, loại đầu nối sử dụng Về nguyên tắc, tầng n hệ thống giao tiếp, trao đổi thông tin với tầng n hệ thống khác Mỗi tầng có đơn vị truyền liệu riêng: • • • • Tầng vật lý: bit Tầng liên kết liệu: Frame Tầng mạng: Packet Tầng vận chuyển: Segment Trong thực tế, liệu gởi từ tầng xuống tầng tầng thấp máy tính gởi Ở đó, liệu truyền đường truyền vật lý Mỗi Biên Soạn: Ngô Bá Hùng - Nguyễn Công Huy VIENTHONG05.TKĐại Học Cần Thơ - Giáo Trình Lập Trình Truyền Thơng Khoa Cơng Nghệ Thơng Tin liệu truyền xuống tầng phía bị "gói" lại đơn vị liệu tầng Tại bên nhận, liệu truyền ngược lên tầng cao dần Mỗi lần qua tầng, đơn vị liệu tương ứng “tháo” Đơn vị liệu tầng có tiêu đề (header) riêng, mơ tả hình 1.3 OSI mơ hình tham khảo, nhà sản xuất phát minh hệ thống mạng thực chức tầng theo cách thức riêng Các cách thức thường mô tả dạng chuẩn mạng hay giao thức mạng Như dẫn đến trường hợp chức hai hệ thống mạng khác khơng tương tác với Hình 1.4 so sánh kiến trúc hệ điều hành mạng thơng dụng với mơ hình OSI Hình 1.3 - Xử lý liệu qua tầng Hình 1.4 - Kiến trúc số hệ điều hành mạng thông dụng Để thực chức tầng tầng mơ hình OSI, hệ thống mạng có protocol riêng: UNIX: Tầng dùng giao thức IP, tầng giao thức TCP/UDP Netware: Tầng dùng giao thức IPX, tầng giao thức SPX Windows NT: dùng giao thức NETBEUI Nếu dừng lại máy tính UNIX, Netware, NT không trao đổi thông tin với Với lớn mạnh mạng Internet, máy tính cài đặt hệ điều hành khác đòi hỏi phải giao tiếp với nhau, tức phải sử dụng chung giao thức Đó giao thức TCP/IP, giao thức mạng Internet Biên Soạn: Ngô Bá Hùng - Nguyễn Công Huy VIENTHONG05.TKĐại Học Cần Thơ - Giáo Trình Lập Trình Truyền Thơng Khoa Cơng Nghệ Thông Tin 1.4 Mạng TCP/IP Đây kiến trúc mạng Internet, gồm tầng hình vẽ đây: Hình 1.5 - Kiến trúc mạng TCP/IP Người ta cịn gọi mơ hình mơ hình OSI đơn giản Các giao thức sử dụng tầng qui định sau: Hình 1.6 – Bộ giao thức TCP/IP Tầng sử dụng giao thức IP, tầng sử dụng giao thức TCP chế độ có nối kết UPD chế độ khơng nối kết Tầng tầng ứng dụng Mỗi loại ứng dụng phải định nghĩa giao thức riêng để thành phần ứng dụng trao đổi thông tin qua lại với Một số ứng dụng phổ biến trở thành chuẩn mạng Internet như: • • • • Ứng dụng Web: Sử dụng giao thức HTTP để tải trang web từ Web Server Web Browser Ứng dụng thư điện tử: Sử dụng giao thức SMTP để chuyển tiếp mail gởi đến Mail Server người nhận dùng giao thức POP3 IMAP để nhận mail cho người đọc Ứng dụng truyền tải tập tin: Sử dụng giao thức FTP để tải (download) tập tin từ FTP Server xa máy người dùng hay ngược lại Biên Soạn: Ngô Bá Hùng - Nguyễn Công Huy VIENTHONG05.TKĐại Học Cần Thơ - Giáo Trình Lập Trình Truyền Thông Khoa Công Nghệ Thông Tin Thông thường tầng 1,2,3 phát triển nhà sản xuất hệ điều hành, nhà sản xuất thiết bị phần cứng mạng Chúng đảm nhận nhiệm vụ truyền tải thơng tin cho q trình tầng ứng dụng Chúng cài đặt chế giao tiếp liên trình để trình tầng ứng dụng truy xuất đến dịch vụ truyền tải thơng tin chúng cung cấp Trong đó, tầng nơi nhà sản xuất phần mềm khai thác để tạo ứng dụng giải vấn đề khác sống Nó xem tầng xử lý thông tin 1.5 Dịch vụ mạng Dịch vụ mạng (Net service) chương trình ứng dụng thực tác vụ hệ thống mạng Ví dụ: • Dịch vụ in mạng cho phép nhiều máy tính sử dụng máy in • Dịch vụ tập tin mạng cho phép chia sẻ chương trình, liệu máy tính • Dịch vụ web cung cấp trang web cho máy tính khác Có nhiều mơ hình khác để xây dựng dịch vụ mạng Một mơ hình sử dụng phổ biến mơ hình Client-Server Đây mơ hình để xây dựng dịch vụ mạng 1.6 Mơ hình Client – Server 1.6.1 Giới thiệu Trong mơ hình này, chương trình ứng dụng chia thành thành phần: • • Quá trình chuyên cung cấp số phục vụ đó, chẳng hạn: phục vụ tập tin, phục vụ máy in, phục vụ thư điện tử, phục vụ Web Các trình gọi trình phục vụ hay Server Một số trình khác có yêu cầu sử dụng dịch vụ server cung cấp gọi trình khách hàng hay Client Việc giao tiếp client server thực hình thức trao đổi thơng điệp (Message) Để phục vụ, client gởi thông điệp yêu cầu (Request Message) mô tả công việc muốn server thực Khi nhận thông điệp yêu cầu, server tiến hành phân tích để xác định công việc cần phải thực thi Nếu việc thực yêu cầu có sinh kết trả về, server gởi cho client thơng điệp trả lời (Reply Message) Dạng thức (format) ý nghĩa thơng điệp Hình 1.7 – Mơ hình Client-Server Biên Soạn: Ngô Bá Hùng - Nguyễn Công Huy Khoa Công Nghệ Thông Tin - Đại Học Cần Thơ - Giáo Trình Lập Trình Truyền Thơng trao đổi client server qui định rõ giao thức (protocol) ứng dụng 1.6.2 Ví dụ dịch vụ Web Dịch vụ web tổ chức theo mơ hình Client -Server, đó: • • • • Web server sẵn sàng cung cấp trang web lưu trữ đĩa cứng cục Web Client, cịn gọi Browser, có nhu cầu nhận trang web từ Web Server HTTP giao thức trao đổi thông tin qua lại Web client Web Server Thơng điệp u cầu chuỗi có dạng sau: Command URL • HTTP/Ver \n\n Thơng điệp trả lời có dạng sau: \n\n • Giả sử Client cần nhận trang Web địa http://www.cit.ctu.edu.vn/, gởi đến Web Server có tên www.cit.ctu.edu.vn thơng điệp u cầu sau: GET www.cit.ctu.edu.vn HTTP/1.1\n\n • Server gởi nội dung sau: HTTP/1.0 200 OK Date: Mon, 24 Nov 2003 02:43:46 GMT Server: Apache/1.3.23 (Unix) (Red-Hat/Linux) mod_ssl/2.8.7 OpenSSL/0.9.6b DAV/1 0.3 PHP/4.1.2 mod_perl/1.26 Last-Modified: Tue, 01 Jul 2003 08:08:52 GMT ETag: "17f5d-2abb-3f014194" Accept-Ranges: bytes Content-Length: 10939 Content-Type: text/html X-Cache: HIT from proxy.cit.ctu.edu.vn Proxy-Connection: close Biên Soạn: Ngô Bá Hùng - Nguyễn Công Huy VIENTHONG05.TKĐại Học Cần Thơ - Giáo Trình Lập Trình Truyền Thơng Khoa Cơng Nghệ Thơng Tin 1.6.3 Các chế độ giao tiếp Quá trình giao tiếp client server diễn theo hai chế độ nghẽn (blocked) hay không nghẽn (Non blocked) 1.6.3.1 Chế độ nghẽn : Trong chế độ này, trình client hay server phát lệnh gởi liệu, (thông thường lệnh send) , thực thi bị tạm dừng trình nhận phát lệnh nhận số liệu (thường lệnh receive) Tương tự cho trường hợp nhận liệu, q trình đó, client hay server, phát lệnh nhận liệu, mà thời điểm chưa có liệu gởi đến, thực thi tạm dừng có liệu gởi đến Hình 1.8 - Chế độ giao tiếp nghẽn 1.6.3.2 Chế độ không nghẽn: Trong chế độ này, trình client hay server phát lệnh gởi liệu, thực thi tiếp tục mà khơng quan tâm đến việc có q trình phát lệnh nhận số liệu hay khơng Tượng tự cho trường hợp nhận liệu, trình phát lệnh nhận liệu, nhận số lượng liệu có (bằng chưa có q trình gởi liệu đến) Sự thực thi trình tiếp tục Trong thực tế cần ý đến chế độ giao tiếp nghẽn lập trình, dẫn đến trường hợp chương trình bị "treo" số lần gởi nhận giữ liệu không hai bên giao tiếp Hình 1.9 - Chế độ giao tiếp khơng nghẽn 1.7 Các kiểu kiến trúc chương trình Ở mức luận lý, chức mà chương trình ứng dụng thực xếp thành loại sau: Các chức thực việc tương tác với người dùng tạo giao diện nhập liệu hay in báo biểu, thơng báo hình Các chức gọi chung Dịch vụ giao diện người dùng (User Interface Service) Biên Soạn: Ngô Bá Hùng - Nguyễn Công Huy Khoa Công Nghệ Thơng Tin - Đại Học Cần Thơ - Giáo Trình Lập Trình Truyền Thơng Các chức tính tốn liệu, xử lý thông tin theo qui luật (rule), giải thuật qui định vấn đề mà ứng dụng giải Các chức gọi chung Dịch vụ nghiệp vụ (Business Rule Service) Trong q trình tính tốn, chương trình ứng dụng cần truy vấn đến thơng tin có lưu đĩa cứng hay sỡ liệu Cũng cần thiết phải lưu lại kết tính tốn để sử dụng sau Các chức gọi chung Dịch vụ lưu trữ (Data Storage Service) Ở mức vật lý, chức cài đặt vào hay nhiều tập tin thực thi hình thành kiểu kiến trúc chương trình khác Cho đến thời điểm nay, người ta chia kiến trúc chương trình thành loại trình bày sau 1.7.1 Kiến trúc đơn tầng (Single-tier Architecture) Trong kiểu kiến trúc này, thành phần chương trình ứng dụng (User Interface, Business Rule, Data Storage) tích hợp vào tập tin thực thi Ví dụ: BKAV, D2, Winword, Các ứng dụng kiểu thực thi máy tính User Interface Business Rule Data Storage Hình 1.10 - Kiến trúc chương trình đơn tầng • Ưu điểm: • • Dễ dàng thiết kế cài đặt ứng dụng kiểu Nhược điểm: • • • • Bởi thành phần cài vào tập tin thực thi, nên việc sửa lỗi hay nâng cấp chương trình khó khăn Tồn chương trình phải biên dịch lại cho dù sửa đổi lỗi nhỏ thành phần ( User Interface chẳng hạn) Việc bảo trì, nâng cấp ấn cơng việc nặng nề ta phải thực việc cài đặt tất máy tính Trong kiểu này, máy tính trì sở liệu riêng khó việc trao đổi, tổng hợp liệu Máy tính phải đủ mạnh để thực đồng thời loại dịch vụ 1.7.2 Kiến trúc hai tầng (Two - Tier Architecture) Kiến trúc biết đến với tên kiến trúc Client-Server Kiến trúc gồm chương trình thực thi: chương trình Client chương trình Server Cả hai chương trình thực thi máy tính hay hai máy tính khác Biên Soạn: Ngô Bá Hùng - Nguyễn Công Huy 10 VIENTHONG05.TKĐại Học Cần Thơ - Giáo Trình Lập Trình Truyền Thơng Khoa Cơng Nghệ Thơng Tin • • Chương trình Server tạo số Remote Object, tạo tham chiếu (reference) đến chúng chờ chương trình Client kích hoạt phương thức Remote Object Chương trình Client lấy tham chiếu đến nhiều Remote Object Server kích hoạt phương thức từ xa thơng qua tham chiếu Một chương trình Client kích hoạt phương thức xa hay nhiều Server Tức thực thi chương trình trải rộng nhiều máy tính Đây đặc điểm ứng dụng phân tán Nói cách khác, RMI chế để xây dựng ứng dụng phân tán ngôn ngữ Java 1.2.2 Kiến trúc chương trình Client-Server theo chế RMI Kiến trúc chương trình Client-Server theo chế RMI mơ tả hình đây: Hình 5.2 - Kiến trúc chương trình kiểu RMI Trong đó: • • • • • Server chương trình cung cấp đối tượng gọi từ xa Client chương trình có tham chiếu đến phương thức đối tượng xa Server Stub chứa tham chiếu đến phương thức xa Server Skeleton đón nhận tham chiếu từ Stub để kích hoạt phương thức tương ứng Server Remote Reference Layer hệ thống truyền thông RMI Con đường kích hoạt phương thức xa mơ tả hình đây: Biên Soạn: Ngơ Bá Hùng - Nguyễn Công Huy 82 Khoa Công Nghệ Thông Tin - Đại Học Cần Thơ - Giáo Trình Lập Trình Truyền Thơng Hình 5.3 Cơ chế hoạt động RMI 1.2.3 Các chế liên quan ứng dụng đối tượng phân tán Trong ứng dụng phân tán cần có chế sau: • • • Cơ chế định vị đối tượng xa (Locate remote objects): Cơ chế xác định cách thức mà chương trình Client lấy tham chiếu (Stub) đến đối tượng xa Thông thường người ta sử dụng Dịch vụ danh bạ (Naming Service) lưu giữ tham khảo đến đối tượng cho phép gọi từ xa mà Client sau tìm kiếm Cơ chế giao tiếp với đối tượng xa (Communicate with remote objects): Chi tiết chế giao tiếp với đối tượng xa cài đặt hệ thống RMI Tải lớp dạng bytecodes cho lớp mà chuyển tải qua lại Máy ảo (Load class bytecodes for objects that are passed around): Vì RMI cho phép chương trình gọi phương thức từ xa trao đổi đối tượng với phương thức xa dạng tham số hay giá trị trả phương thức, nên RMI cần có chế cần thiết để tải mã Bytecodes đối tượng từ máy ảo sang máy ảo khác Hình mô tả ứng dụng phân tán RMI sử dụng dịch vụ danh bạ để lấy tham khảo đối tượng xa Trong đó: • • Server đăng ký tên cho đối tượng gọi từ xa với Dịch vụ danh bạ (Registry Server) Client tìm đối tượng xa thông qua tên đăng ký Registry Server (looks up) tiếp gọi phương thức xa Biên Soạn: Ngô Bá Hùng - Nguyễn Công Huy Hình 5.4 Vai trị dịch vụ tên 83 VIENTHONG05.TKĐại Học Cần Thơ - Giáo Trình Lập Trình Truyền Thơng Khoa Cơng Nghệ Thơng Tin • Hình minh họa cho thấy cách thức mà hệ thống RMI sử dụng WebServer sẵn có để truyền tải mã bytecodes lớp qua lại Client Server 1.2.4 Cơ chế vận hành của ứng dụng Client-Server theo kiểu RMI Tiến trình vận hành ứng dụng Client-Server theo kiểu RMI diễn sau: Bước 1: Server tạo đối tượng cho phép gọi từ xa với Stub Skeleton chúng Bước 2: Server sử dụng lớp Naming để đăng ký tên cho đối tượng từ xa (1) Bước 3: Naming đăng ký Stub đối tượng từ xa với Registry Server (2) Bước 4: Registry Server sẵn sàng cung cấp tham thảo đến đối tượng từ xa có yêu cầu (3) Client yêu cầu Naming định vị đối tượng xa qua tên đăng ký (phương thức lookup) với dịch vụ tên (4) Naming tải Stub đối tượng xa từ dịch vụ tên mà đối tượng xa đăng ký Client (5) Cài đặt đối tượng Stub trả tham khảo đối tượng xa cho Client (6) Client thực thi lời gọi phương thức xa thông qua đối tượng Stub (7) Biên Soạn: Ngô Bá Hùng - Nguyễn Công Huy 84 Khoa Công Nghệ Thơng Tin - Đại Học Cần Thơ - Giáo Trình Lập Trình Truyền Thơng 1.2.5 Các lớp hỗ trợ chương trình theo kiểu Client-Server Java Java hỗ trợ lớp cần thiết để cài đặt ứng dụng Client-Server theo kiểu RMI gói: java.rmi Trong số lớp thường dùng là: • • • • • • java.rmi.Naming java.rmi.RMISecurityManager java.rmi.RemoteException; java.rmi.server.RemoteObject java.rmi.server.RemoteServer java.rmi server.UnicastRemoteObject 1.3 Xây dựng ứng dụng phân tán với RMI Xây dụng ứng dụng phân tán chế RMI gồm bước sau: Thiết kế cài đặt thành phần ứng dụng Biên dịch chương trình nguồn tạo Stub Skeleton Tạo lớp truy xuất từ mạng cần thiết Khởi tạo ứng dụng 1.3.1 Thiết kế cài đặt thành phần ứng dụng Đầu tiên bạn phải xác định lớp lớp cục bộ, lớp lớp gọi từ xa Nó bao gồm bước sau: • • • Định nghĩa giao diện cho phương thức xa (remote interfaces): Một remote interface mơ tả phương thức mà kích hoạt từ xa Client Đi với việc định nghĩa Remote Interface việc xác định lớp cục làm tham số hay giá trị trả phương thức gọi từ xa Cài đặt đối tượng từ xa (remote objects): Các Remote Object phải cài đặt cho nhiều Remote Interfaces định nghĩa Các lớp Remote Object class cài đặt cho phương thức gọi từ xa khai báo Remote Interface định nghĩa cài đặt cho phương thức sử dụng cục Nếu có lớp làm đối số hay giá trị trả cho phương thức gọi từ xa ta định nghĩa cài đặt chúng Cài đặt chương trình Client: Các chương trình Client có sử dụng Remote Object cài đặt thời điểm sau Remote Interface định nghĩa 1.3.2 Biên dịch tập tin nguồn tạo Stubs Skeleton Giai đoạn gồm bước: Bước thứ dùng chương trình biên dịch javac để biên dịch tập tin nguồn remote interface, lớp cài đặt cho remote interface, lớp server, lớp client lớp liên quan khác Kế tiếp ta dùng trình biện dịch rmic để tạo stub skeleton cho đối tượng từ xa từ lớp cài đặt cho remote interface Biên Soạn: Ngô Bá Hùng - Nguyễn Công Huy 85 VIENTHONG05.TKĐại Học Cần Thơ - Giáo Trình Lập Trình Truyền Thơng Khoa Cơng Nghệ Thơng Tin 1.3.3 Tạo lớp truy xuất từ mạng Tạo tập tin chứa tất file có liên quan remote interface stub, lớp hỗ trợ mà chúng cần thiết phải tải Client làm cho tập tin truy cập đến thơng qua Web server 1.3.4 Thực thi ứng dụng Thực thi ứng dụng bao gồm việc thực thi rmiregistry server, thực thi server, thực thi client Tóm lại cơng việc phải làm là: • • • • • • • • Tạo giao diện (interface) khai báo phương thức gọi từ xa đối tượng Tạo lớp cài đặt (implement) cho giao diện khai báo Viết chương trình Server Viết chương trình Client Dịch tập tin nguồn theo dạng RMI để tạo lớp tương ứng stub cho client, skeleton cho server Khởi động dịch vụ registry Thực chương trình Server Thực thi chương trình Client 1.3.4 Ví dụ minh họa Trong ví dụ định nghĩa phương thức String sayHello() gọi từ xa Mỗi phương thức kích hoạt trả chuỗi "Hello World" cho Client gọi Dưới bước để xây dựng ứng dụng: Bước 01: Tạo giao diện (interface) khai báo phương thức gọi từ xa đối tượng o Cú pháp tổng quát: import java.rmi.Remote; import java.rmi.RemoteException; public interface InterfaceName extends Remote { ReturnType remoteMethodOne() throws RemoteException; ReturnType remoteMethodTwo() throws RemoteException; } o Định nghĩa remote interface có tên HelloItf, có phương thức gọi từ xa String sayHello() sau: import java.rmi.Remote; import java.rmi.RemoteException; public interface HelloItf extends Remote { String sayHello() throws RemoteException; } Biên Soạn: Ngô Bá Hùng - Nguyễn Công Huy 86 Khoa Công Nghệ Thông Tin - Đại Học Cần Thơ - Giáo Trình Lập Trình Truyền Thơng Lưu chương trình vào tập tin HelloItf.java Bước 02: Tạo lớp cài đặt (implement) cho giao diện khai báo: o Cú pháp tổng quát: import java.rmi server.UnicastRemoteObject; import java.rmi.RemoteException; public class RemoteClass extends UnicastRemoteObject implements InterfaceName { public RemoteClass() throws RemoteException { super(); // Implement of Method } public ReturnType remoteMethodOne() throws RemoteException { // Implement of Method } public ReturnType remoteMethodTwo() throws RemoteException { // Definition of Method } } o Định nghĩa lớp cài đặt có tên Hello cài đặt cho remote interface HelloItf import java.rmi server.UnicastRemoteObject; import java.rmi.RemoteException; public class Hello extends UnicastRemoteObject implements HelloItf { public Hello() throws RemoteException { super(); } public String sayHello() { return "Hello World !"; } } Lưu chương trình vào tập tin Hello.java Bước 03: Viết chương trình Server: o Cú pháp tổng quát: import java.rmi.Naming; import java.rmi.RemoteException; import java.rmi.RMISecurityManager; public class ServerName { public static void main(String args[]) { if (System.getSecurityManager() == null) { // Cài đặt chế bảo mật System.setSecurityManager(new RMISecurityManager()); } try { // Tạo đối tượng từ xa Biên Soạn: Ngô Bá Hùng - Nguyễn Công Huy 87 VIENTHONG05.TKĐại Học Cần Thơ - Giáo Trình Lập Trình Truyền Thông Khoa Công Nghệ Thông Tin RemoteClass remoteObject = new RemoteClass(); // Đăng ký tên cho đối tượng từ xa Naming.rebind(“RegistryName", remoteObject); } catch (Exception e) { System.out.println(”Error: ” + e); } } } o Tạo server có tên HelloServer chứa đối tượng từ xa obj thuộc lớp cài đặt Hello Đăng ký tên cho đối tượng obj HelloObject import java.rmi.Naming; import java.rmi.RemoteException; import java.rmi.RMISecurityManager; public class HelloServer { public static void main(String args[]) { if (System.getSecurityManager() == null) { System.setSecurityManager(new RMISecurityManager()); } try { Hello obj = new Hello(); Naming.rebind("HelloObject", obj); System.out.println("HelloObject is registried"); } catch (Exception e) { System.out.println("Error: " + e); } } } Lưu chương trình vào tập tin HelloServer.java Bước 04: Viết chương trình Client: o Cú pháp tổng quát: import java.rmi.Naming; import java.rmi.RemoteException; public class Client { public static void main(String args[]) { String remoteObjectURL = "rmi://NameServer/RegistryName”; Interfacename object = null; try { object = (InterfaceName)Naming.lookup(remoteObjectURL); object.remoteMethodOne(); } catch (Exception e) { Biên Soạn: Ngô Bá Hùng - Nguyễn Công Huy 88 Khoa Công Nghệ Thơng Tin - Đại Học Cần Thơ - Giáo Trình Lập Trình Truyền Thơng System.out.println(" Error: ”+ e); } } } o Tạo client có tên HelloClient, tìm đối tượng HelloObject rmiregistry chẳng hạn địa 172.18.211.160 Gọi phương thức sayHello() in kết trả hình import java.rmi.Naming; import java.rmi.RemoteException; public class HelloClient { public static void main(String args[]) { String helloURL = "rmi://172.18.211.160/HelloObject"; HelloItf object = null; try { object = (HelloItf)Naming.lookup( helloURL); String message = object.sayHello(); System.out.println(message); } catch (Exception e) { System.out.println("Client Error :" + e); } } } Lưu chương trình vào tập tin HelloClient.java Bước 05: Dịch tập tin nguồn theo dạng RMI để tạo lớp tương ứng stub cho client, skeleton cho server: o Cú pháp tổng quát: javac InterfaceName.java RemoteClass.java Server.java Client.java ( Tạo lớp InterfaceName.class RemoteClass.class Server.class Client.class) rmic RemoteClass ( Tạo lớp cho Skeleton Stub: RemoteClass_Skel.class RemoteClass_Stub.class) o Biên dịch lớp Hello: javac Hello.java HelloItf.java HelloServer.java HelloClient.java rmic Hello.class Biên Soạn: Ngô Bá Hùng - Nguyễn Công Huy 89 VIENTHONG05.TKĐại Học Cần Thơ - Giáo Trình Lập Trình Truyền Thơng Khoa Cơng Nghệ Thông Tin - Bước 06: Khởi động dịch vụ rmiregistry o Cú pháp tổng quát: start rmiregistry [port] Cổng mặc định 1099 o Khới động dịch vụ rmiregistry cổng mặc định sau: Khi rmiregistry server chạy cửa sổ mới, giữ nguyên cửa sổ này, khơng đóng lại Biên Soạn: Ngơ Bá Hùng - Nguyễn Công Huy 90 Khoa Công Nghệ Thông Tin - Đại Học Cần Thơ - Giáo Trình Lập Trình Truyền Thơng Bước 07: Thực chương trình Server o Cú pháp tổng quát: java -Djava.security.policy =UrlOfPolicyFile ServerName Trong UrlOfPolicyFile địa theo dạng URL tập tin mơ tả sách bảo mật mã nguồn Server (policy file) Nó qui định "ai" (chương trình, máy tính, q trình trên) có quyền download tập tin có stub Để đơn giản phần ta cho phép tất người có quyền download tập tin Server Khi triển khai ứng dụng thật ta phải có sách bảo mật nghiêm ngặt (Tham khảo tài liệu Security Java) File policy có dạng sau: grant { // Allow everything for now permission java.security.AllPermission; }; Lưu nội dung vào tập tin có tên policy.java o Thực thi HelloServer với địa tập tin plolicy nằm thư mục D:\progs\policy.java Bước 08: Thực thi chương trình Client: Biên Soạn: Ngơ Bá Hùng - Nguyễn Cơng Huy 91 VIENTHONG05.TKĐại Học Cần Thơ - Giáo Trình Lập Trình Truyền Thơng Khoa Cơng Nghệ Thơng Tin o Cú pháp tổng quát java ClientName o Thực thi HelloClient với địa rmiregistry đưa vào tham số Để thực thi chương trình HelloClient cần có hai class nằm thư mục với HelloItf.class Hello_Stub.class 1.4 Bài tập áp dụng • Mục đích: Xây dựng ứng dụng phân tán theo chế RMI • Yêu cầu Sinh viên thực tập sau: o Bài : Xây dựng ứng dụng phục vụ việc bán vé máy bay cho đại lý phân tán tỉnh thành khác Ứng dụng có lớp sau: Lớp chuyến bay: Đại diện cho chuyến bay Có thuộc tính: Số hiệu chuyến bay, Ngày bay, Nơi đi, Nơi đến, Thời gian bay, Tổng số ghế, Số lượng ghế bán, Số lượng ghế trống Các phương thức chuyến bay: phương thức xem thông tin chuyến bay, phương thức mua vé, phương thức trả vé Để phục vụ cho nhiều đại lý phương thức thuộc loại đuợc gọi từ xa Lớp Server, tạo nhiều chuyến bay trì phép đại lý thực giao dịch chuyến bay cụ thể Client chương trình cho phép đại lý quyền xem thông tin chuyến bay, mua vé, trả vé theo yêu cầu Mục lục Biên Soạn: Ngô Bá Hùng - Nguyễn Công Huy 92 Khoa Công Nghệ Thông Tin - Đại Học Cần Thơ - Giáo Trình Lập Trình Truyền Thơng CHƯƠNG Tổng quan lập trình truyền thơng 1.1 Cơ chế giao tiếp liên trình ? 1.2 Phân loại chế giao tiếp liên trình 1.3 Mơ hình tham khảo OSI 1.4 Mạng TCP/IP 1.5 Dịch vụ mạng 1.6 Mơ hình Client – Server 1.6.1 Giới thiệu .7 1.6.2 Ví dụ dịch vụ Web 1.6.3 Các chế độ giao tiếp 1.6.3.1 Chế độ nghẽn : 1.6.3.2 Chế độ không nghẽn: 1.7 Các kiểu kiến trúc chương trình .9 1.7.1 Kiến trúc đơn tầng (Single-tier Architecture) .10 1.7.2 Kiến trúc hai tầng (Two - Tier Architecture) 10 1.7.2.1 Loại Fat Client 11 1.7.2.2 Loại Fat Server .12 1.7.3 Kiến trúc đa tầng (N-Tier Architecture) 12 1.8 Bài tập 13 1.8.1 Bài tập bắt buộc 13 1.8.2 Bài tập gợi ý 13 Tìm đọc viết báo cáo không 10 trang giao thức POP3 .13 CHƯƠNG 14 Sơ lược ngôn ngữ Java 14 1.1 Giới thiệu ngôn ngữ Java .15 1.1.1 Lịch sử phát triển 15 1.1.2 Khả ngôn ngữ Java .15 1.1.2 Những đặc điểm ngôn ngữ Java .15 1.1.3 Máy ảo Java (JMV - Java Virtual Machine) 15 1.1.4 Hai kiểu ứng dụng ngôn ngữ java .16 1.1.5 Bộ phát triển ứng dụng Java (JDK- Java Development Kit) 16 1.1.6 Kiểu liệu Java .16 1.1.7 Các phép toán 17 Biên Soạn: Ngô Bá Hùng - Nguyễn Công Huy 93 VIENTHONG05.TKĐại Học Cần Thơ - Giáo Trình Lập Trình Truyền Thông Khoa Công Nghệ Thông Tin 1.1.8 Qui cách đặt tên Java 17 1.2 Chương trình ứng dụng kiểu Application 18 1.2.1 Chương trình HelloWorld .19 1.2.3 Biên soạn chương trình phần mềm Notepad Ms Windows 19 1.2.4 Cài đặt phát triển ứng dụng JDK 20 1.2.5 Biên dịch thực thi chương trình 20 1.2.6 Một số ví dụ 21 1.2.6.1 Hiển thị thông tin hành .21 1.2.6.2 Đọc ký tự từ bàn phím 21 1.3 Các cấu trúc điều khiển Java .23 1.3.1 Lệnh if – else 23 1.3.2 Phép toán ? 24 1.3.3 Lệnh switch 25 1.3.4 Lệnh while 26 1.3.5 Lệnh - while 27 1.3.6 Lệnh for 27 1.3.7 Lệnh break 28 1.3.8 Lệnh continue 29 1.3.9 Một số vấn đề khác 30 1.3.9.1 Đọc đối số chương trình 30 1.3.9.2 Đổi chuỗi thành số 31 1.4 Ngoại lệ (EXCEPTION) 31 1.5 Một số vấn đề liên quan đến lớp Java .33 1.5.1 Định nghĩa lớp 33 1.5.2 Phạm vi nhìn thấy lớp 34 1.5.3 Tính thừa kế 35 1.6 Vào / Ra với Stream 36 1.6.1 Lớp java.io.InputStream 37 1.6.2 Lớp java.io.OutputStream .39 1.6.3 Nhập chuỗi từ InputStream 40 1.6.4 Xuất chuỗi OutputStream 41 1.7 Luồng (Thread) 42 1.7.1 Các mức cài đặt luồng 43 1.7.1.1 Tiếp cận luồng mức người dùng: 44 Biên Soạn: Ngô Bá Hùng - Nguyễn Công Huy 94 Khoa Công Nghệ Thông Tin - Đại Học Cần Thơ - Giáo Trình Lập Trình Truyền Thông 1.7.1.2 Tiếp cận luồng mức hạt nhân hệ điều hành .44 1.7.2 Luồng java 44 1.7.2.1 Độ ưu tiên luồng .47 1.7.3 Đồng hóa luồng 49 1.8 Bài tập áp dụng 49 Chủ đề 1: Cơ Java 49 Chủ đề 2: Thiết kế lớp Java 49 Chủ đề 3: Thread .50 CHƯƠNG 51 Ống dẫn (Pipe) 51 1.1 Giới thiệu ống dẫn 52 1.2 Ống dẫn Java .52 1.2.1 Giới thiệu .52 1.2.2 Các cách tạo ống dẫn 53 1.3 Dịch vụ phản hồi thông tin (Echo Service) 53 1.4 Giả lập dịch vụ phản hồi thông tin Pipe 54 1.4.1 Lớp PipedEchoServer 54 1.4.2 Lớp PipedEchoClient 55 1.4.3 Lớp PipedEcho 55 1.4.5 Biên dịch thực thi chương trình 56 CHƯƠNG 57 Socket 57 1.1 Giới thiệu socket 58 1.1.1 Giới thiệu .58 1.1.2 Số hiệu cổng (Port Number) socket 58 1.1.3 Các chế độ giao tiếp 60 1.2 Xây dựng ứng dụng Client-Server với Socket .61 1.2.1 Mơ hình Client-Server sử dụng Socket chế độ có nối kết (TCP) 61 1.2.2 Mơ hình Client-Server sử dụng Socket chế độ không nối kết (UDP) 63 1.3 Socket ngôn ngữ Java 64 1.3.1 Xây dựng chương trình Client chế độ có nối kết .65 1.3.1.1 Lớp java.net.Socket 65 1.3.1.2 Chương trình TCPEchoClient 66 1.3.2 Xây dựng chương trình Server chế độ có nối kết 67 Biên Soạn: Ngô Bá Hùng - Nguyễn Công Huy 95 VIENTHONG05.TKĐại Học Cần Thơ - Giáo Trình Lập Trình Truyền Thơng Khoa Công Nghệ Thông Tin 1.3.2.1 Lớp java.net.ServerSocket .67 1.3.2.2 Xây dựng chương trình Server phục vụ .67 1.3.2.3 Chương trình STCPEchoServer .68 1.3.2.4 Server phục vụ song song .69 1.3.2.5 Chương trình PTCPEchoServer .70 1.3.3 Xây dựng chương trình Client - Server chế độ không nối kết 71 1.3.3.1 Lớp DatagramPacket 72 1.3.3.2 Lớp DatagramSocket 73 1.3.3.3 Chương trình UDPEchoServer .74 1.3.3.4 Chương trình UDPEchoClient .75 1.4 Bài tập áp dụng 77 CHƯƠNG 79 RPC RMI .79 1.1 Lời gọi thủ tục xa (RPC- Remote Procedure Call) 80 1.1.1 Giới thiệu .80 1.1.2 Kiến trúc chương trình Client-Server cài đặt theo chế lời gọi thủ tục xa 80 Hình 5.1 Kiến trúc chương trình kiểu RPC 80 1.2 Kích hoạt phương thức xa (RMI- Remote Method Invocation ) 81 1.2.1 Giới thiệu .81 1.2.2 Kiến trúc chương trình Client-Server theo chế RMI 82 1.2.3 Các chế liên quan ứng dụng đối tượng phân tán .83 1.2.4 Cơ chế vận hành của ứng dụng Client-Server theo kiểu RMI 84 1.2.5 Các lớp hỗ trợ chương trình theo kiểu Client-Server Java 85 1.3 Xây dựng ứng dụng phân tán với RMI 85 1.3.1 Thiết kế cài đặt thành phần ứng dụng 85 1.3.2 Biên dịch tập tin nguồn tạo Stubs Skeleton 85 1.3.3 Tạo lớp truy xuất từ mạng 86 1.3.4 Thực thi ứng dụng 86 1.3.4 Ví dụ minh họa 86 1.4 Bài tập áp dụng 92 Mục lục .92 Biên Soạn: Ngô Bá Hùng - Nguyễn Công Huy 96 ... thi chương trình kết sau: Biên Soạn: Ngô Bá Hùng - Nguyễn Công Huy 30 Khoa Công Nghệ Thông Tin - Đại Học Cần Thơ - Giáo Trình Lập Trình Truyền Thơng 1.3.9 .2 Đổi chuỗi thành số Lưu chương trình. .. Hình 1. 12 - Kiến trúc chương trình Client – Server theo kiểu Fat Client Ưu điểm Biên Soạn: Ngô Bá Hùng - Nguyễn Công Huy 11 Khoa Công Nghệ Thông Tin - Đại Học Cần Thơ - Giáo Trình Lập Trình Truyền. .. nói Biên Soạn: Ngơ Bá Hùng - Nguyễn Công Huy 12 VIENTHONG05.TKĐại Học Cần Thơ - Giáo Trình Lập Trình Truyền Thơng Khoa Cơng Nghệ Thơng Tin - Hình 1. 12 - Kiến trúc chương trình đa tầng Kiến trúc