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,41 MB
Nội dung
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 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 C chế giao tiếp liên trình (Inter-Process Communication ) Mơ tả ch c năng, nhiệm vụ c a tầng mơ hình OSI Định nghĩa giao th c biện luận đ ợc cần thiết c a 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 đ ợc chế độ giao tiếp: Nghẽn Không nghẽn Phân biệt đ ợc kiểu kiến trúc ch Biên Soạn: Ngô Bá Hùng - Nguyễn Cơng Huy ng trình 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.1 C chế giao tiếp liên q 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 nh 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 đ ợc 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 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 nh 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 c a ch ng trình hay ch ng trình với thơng qua c chế truyền thơng đ ợc hỗ trợ b i 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 q trình Việc giao tiếp, trao đổi thơng tin diễn phạm vi c a ch ng trình Đó giao tiếp th tục d ới 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ả c a 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 đ ợc thực không gian địa (Address space) riêng biệt Việc giao tiếp trình mu n thực đ ợc địi h i phải có tiện ích hỗ trợ b i hệ điều hành, hệ điều hành mạng Các tiện ích th ng đ ợc 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 c chế giao tiếp liên trình Các c chế giao tiếp liên trình đ ợc hỗ trợ b i hệ điều hành đa nhiệm, hệ điều hành mạng đ ợc 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 trình loại 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 Loại 2: C chế giao tiếp liên trình hỗ trợ giao tiếp q 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 c 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) c a hệ điều hành Đó vùng nhớ dùng chung cho trình đ ợc qui định tr ớc b i hệ điều hành, hay tập tin đĩa đ ợc quản lý b i hệ điều hành trình ghi liệu vào, trình khác đọc liệu ra, Trong c chế giao tiếp liên q trình máy tính khác nhau, liệu trao đổi trình phải qua hạt nhân nh c chế giao tiếp liên q trình máy tính mà h n hạt nhân c a 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 c đ ợc gọi mơ hình OSI Để hai máy tính trao đổi thơng tin đ ợc với cần có nhiều vấn đề liên quan Ví dụ nh 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 h n 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 c a ng i dùng, ví dụ nh 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 nh 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 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 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 đ ợc tầng trình bày chuyển sang định dạng trung gian tr ớc đ ợ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 c a 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 c 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 đ ợc đả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, nh tập hợp lại chúng nhận đ ợc 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 c 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 đ ợc sử dụng Về nguyên tắc, tầng n c a hệ th ng giao tiếp, trao đổi thông tin với tầng n c a 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 đ ợc g i từ tầng xu ng tầng d ới tầng thấp c a máy tính g i đó, liệu đ ợc truyền đ ng truyền vật lý Mỗi 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 liệu đ ợc truyền xu ng tầng phía d ới bị "gói" lại đ n vị liệu c a tầng d ới Tại bên nhận, liệu đ ợc 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 đ ợc “tháo” Đ n vị liệu c a tầng có tiêu đề (header) riêng, đ ợc 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 c a thực ch c tầng theo cách th c riêng Các cách th c th ng đ ợc mô tả d ới dạng chuẩn mạng hay giao th c mạng Nh dẫn đến tr ng hợp ch c nh ng hai hệ th ng mạng khác không t ng tác đ ợc với Hình 1.4 so sánh kiến trúc c a 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 c a s hệ điều hành mạng thông dụng Để thực ch c mạng có protocol riêng: tầng tầng mơ hình OSI, hệ th 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 đ ợc với Với lớn mạnh c a 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 đ ợc với nhau, t c phải sử dụng chung giao th c Đó giao th c TCP/IP, giao th c c a mạng Internet 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 1.4 Mạng TCP/IP Đây kiến trúc c a mạng Internet, gồm tầng nh hình vẽ d ới đâ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 đ ợc sử dụng tầng đ ợc qui định 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 kết UPD chế độ khơng n i kết chế độ có n i Tầng tầng c a 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 c a 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 c a 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 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 Thơng th ng tầng 1,2,3 đ ợc phát triển b i 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 trình tầng ng dụng Chúng cài đặt c chế giao tiếp liên trình để q 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 c a s ng Nó đ ợc xem nh tầng xử lý thông tin 1.5 Dịch vụ mạng Dịch vụ mạng (Net service) ch hệ th ng mạng ng trình ng dụng thực tác vụ 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 tính ng trình, liệu máy 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 đ ợc sử dụng phổ biến mơ hình Client-Server Đây mơ hình c để 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 đ ợc 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 đ ợc gọi trình phục vụ hay Server Một s q trình khác có u cầu sử dụng dịch vụ server cung cấp đ ợc gọi trình khách hàng hay Client Việc giao tiếp client server đ ợc thực d ới hình th c trao đổi thông điệp (Message) Để đ ợc 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 đ ợc 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 c 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 đ ợc qui định rõ b i giao th c (protocol) c a ng dụng 1.6.2 Ví dụ dịch vụ Web Dịch vụ web đ ợc tổ ch c theo mơ hình Client -Server, đó: • • • • Web server sẵn sàng cung cấp trang web đ ợc l u trữ đĩa c ng cục c a 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 yê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 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.6.3 Các chế độ giao tiếp Q 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 c a 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 c a tạm dừng có liệu g i đến 1.6.3.2 Chế độ khơng nghẽn: Hình 1.8 - Chế độ giao tiếp nghẽn Trong chế độ này, trình client hay server phát lệnh g i liệu, thực thi c a đ ợc 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 đ ợc s l ợng liệu có (bằng ch a có q trình g i liệu đến) Sự thực thi c a trình đ ợc 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 1.7 Các kiểu kiến trúc ch Hình 1.9 - Chế độ giao tiếp khơng nghẽn ng trình m c luận lý, ch c mà ch thành loại sau: ng trình ng dụng thực xếp Các ch c thực việc t ng tác với ng i dùng nh 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 đ ợ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 đ ợc qui định b i vấn đề mà ng dụng giải Các ch c đ ợ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ó đ ợc l u đĩa c ng hay c sỡ liệu Cũng nh cần thiết phải l u lại kết tính tốn đ ợc để sử dụng sau Các ch c đ ợc gọi chung Dịch vụ l u trữ (Data Storage Service) m c vật lý, ch c đ ợ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 c a ch ng trình thành loại đ ợc 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 c a ch ng trình ng dụng (User Interface, Business Rule, Data Storage) đ ợc tích hợp vào tập tin thực thi Ví dụ: BKAV, D2, Winword, Các ng dụng kiểu đ ợc 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 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ì c 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 đ ợ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 đ ợc 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 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 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 c a 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 c a ch ng trình đ ợc trải rộng nhiều máy tính Đây đặc điểm c a ng dụng phân tán Nói cách khác, RMI c chế để xây dựng ng dụng phân tán d ới ngôn ngữ Java 1.2.2 Kiến trúc c a ch Kiến trúc ch d ới đây: ng trình Client-Server theo c chế RMI ng trình Client-Server theo c chế RMI đ ợc mơ tả nh hình 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 đ ợc gọi từ xa Client ch ng trình có tham chiếu đến ph ng th c c a đ 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 c a RMI Con đ ng kích hoạt ph ng th c Biên Soạn: Ngô Bá Hùng - Nguyễn Cơng Huy xa đ ợc mơ tả nh hình d ới đây: 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 c a RMI 1.2.3 Cá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ó 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 đ ợc 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 c a c chế giao tiếp với đ i t ợng xa đ ợc cài đặt b i 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 ới dạng tham s hay giá trị trả c a ph ng th c, nên RMI cần có c chế cần thiết để tải mã Bytecodes c a đ i t ợng từ máy ảo sang máy ảo khác Hình d ới mô tả ng dụng phân tán d ới RMI sử dụng dịch vụ danh bạ để lấy tham khảo c a đ i t ợng xa Trong đó: • • Server đăng ký tên cho đ i t ợng đ ợc gọi từ xa c a với Dịch vụ danh bạ (Registry Server) Client tìm đ i t ợng xa thơng qua tên đ ợc đă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ị c a dịch vụ tên 83 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 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 c a lớp qua lại Client Server 1.2.4 C chế vận hành c a c a RMI ng dụng Client-Server theo kiểu Tiến trình vận hành c a ng dụng Client-Server theo kiểu RMI diễn nh sau: B ớc 1: Server tạo đ i t ợng cho phép gọi từ xa với Stub Skeleton c a 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 c a đ 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 đ ợc đăng ký (ph ng th c lookup) với dịch vụ tên (4) Naming tải Stub c a đ 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 Biên Soạn: Ngô Bá Hùng - Nguyễn Công Huy ng th c xa thông qua đ i t ợng Stub (7) 84 Khoa Công Nghệ Thông Tin - Đại Học Cần Th 1.2.5 Các lớp hỗ trợ ch - Giáo Trình Lập Trình Truyền Thơng 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 đ ợc 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 c chế RMI gồm b ớc sau: Thiết kế cài đặt thành phần c a 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 c a ng dụng Đầu tiên bạn phải xác định lớp lớp cục bộ, lớp lớp đ ợc 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à đ ợc kích hoạt từ xa b i 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ả c a ph ng th c đ ợ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 đ ợc định nghĩa Các lớp c a Remote Object class cài đặt cho ph ng th c đ ợc gọi từ xa đ ợc khai báo Remote Interface định nghĩa cài đặt cho ph ng th c đ ợc sử dụng cục Nếu có lớp làm đ i s hay giá trị trả cho ph ng th c đ ợ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 cài đặt th i điểm sau Remote Interface đ ợc đị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 nh 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 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.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 nh 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 đ ợc gọi từ xa c a đ i t ợng Tạo lớp cài đặt (implement) cho giao diện đ ợc 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() đ ợc gọi từ xa Mỗi ph ng th c đ ợ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 xa c a đ i t ợng o ng th c đ ợc gọi từ 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 gọi từ xa String sayHello() nh sau: ng th c đ ợc 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 L u ch - Giáo Trình Lập Trình Truyền Thơng 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 đ ợc 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 o ng trình Server: 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 c 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 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 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 o ng trình Client: 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 stub cho client, skeleton cho server: o ng 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 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 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 nh sau: Khi rmiregistry server chạy cửa sổ mới, giữ ngun 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 B ớc 07: Thực ch o - Giáo Trình Lập Trình Truyền Thơng ng trình Server Cú pháp tổng qt: java -Djava.security.policy =UrlOfPolicyFile ServerName Trong UrlOfPolicyFile địa theo dạng URL c a tập tin mơ tả sách bảo mật mã nguồn c a 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 a có stub Để đ n giản phần ta cho phép tất ng i có quyền download tập tin c a Server Khi triển khai ng dụng thật ta phải có sách bảo mật nghiêm ngặt h n (Tham khảo tài liệu Security c a Java) File policy có dạng nh 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 D:\progs\policy.java B ớc 08: Thực thi ch th mục ng trình Client: Biên Soạn: Ngô Bá Hùng - Nguyễn Công Huy 91 Khoa Công Nghệ Thông Tin - Đại Học Cần Th o - Giáo Trình Lập Trình Truyền Thơng Cú pháp tổng quát java ClientName o Thực thi HelloClient với địa c a rmiregistry đ a vào tham s Để thực thi đ ợc 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 c 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 gi 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ý đ ợc 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 CH - Giáo Trình Lập Trình Truyền Thơng 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 c 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ả c a ngôn ngữ Java .15 1.1.2 Những đặc điểm c a 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 d ới 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 c d ới Java .16 1.1.7 Các phép toán c 17 Biên Soạn: Ngô Bá Hùng - Nguyễn Công Huy 93 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.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 c a 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 c a 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 c a 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 Biên Soạn: Ngô Bá Hùng - Nguyễn Công Huy m c ng i dùng: 44 94 Khoa Công Nghệ Thông Tin - Đại Học Cần Th 1.7.1.2 Tiếp cận luồng - Giáo Trình Lập Trình Truyền Thô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 c a 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 CH ng trình 56 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) c a 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 d ới 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 Biên Soạn: Ngơ Bá Hùng - Nguyễn Cơng Huy chế độ có n i kết 67 95 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.2.1 Lớp java.net.ServerSocket .67 1.3.2.2 Xây dựng ch 1.3.2.3 Ch ng trình Server phục vụ .67 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 c a ch tục xa 80 ng trình Client-Server cài đặt theo c chế l i gọi th 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 c a ch ng trình Client-Server theo c chế RMI 82 1.2.3 Cá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 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 c a 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 ...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.1 C chế giao tiếp liên q trình ? Truyền thơng khái niệm dùng để giao tiếp, trao đổi thông tin hai hay nhiều... i đó, liệu đ ợc truyền đ ng truyền vật lý Mỗi 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 liệu đ ợc truyền xu ng tầng... Tin - Đại Học Cần Th - Giáo Trình Lập Trình Truyền Thơng Client Server trao đổi thông tin với d ới dạng thông điệp (Message) Thông điệp g i từ Client sang Server gọi thông điệp yêu cầu (Request