1. Trang chủ
  2. » Công Nghệ Thông Tin

kiến thức về lập trình truyền thống

97 282 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 97
Dung lượng 3,28 MB

Nội dung

Tổng quan về lập trình truyền thống có thể giúp bạn có thêm kiến thức về lập trình và nâng cao kĩ năng của mình tài liệu này bao gồm các kiến thúc về lập trình trình truyền thống và các ví dụ cụ thể nhằm giúp các bạn hiểu rõ hơn về lập trình truyền thống

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 Yêu cầu Sau hoàn tất chương này, bạn có thể: ƒ Giải thích Cơ chế giao tiếp liên 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 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 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 loài người, truyền thông 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 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 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 trình ghi liệu vào, 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 phải qua hạt nhân chế giao tiếp liên 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 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 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 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ù đườ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 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 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 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 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 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 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 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, 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 yê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 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, 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ó 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ó 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 Các chức tính toá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 trình tính toá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 toá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 Toà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 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 Hình 5.4 Vai trò dịch vụ tên • 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) 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 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; } 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 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) { 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 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 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, 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: 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 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 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 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 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 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 [...]... một báo cáo không quá 10 trang về giao thức POP3 Biên Soạn: Ngô Bá Hùng - Nguyễn Công Huy 13 CHƯƠNG 2 Sơ lược về ngôn ngữ Java Mục đích Chương này nhằm giới thiệu sơ lược về ngôn ngữ java cho các sinh viên đã có kiến thức căn bản về Lập trình hướng đối tượng với C++ Chương này sẽ không đề cập đến tất cả các vấn đề có trong Java mà chỉ giới thiệu những vấn đề cơ bản nhất về ngôn ngữ Java, đủ để các học... dụng để giải quyết các vấn đề về số, xử lý văn bản, tạo ra trò chơi, và nhiều thứ khác Có các môi trường lập trình đồ họa như Visual Java, Symantec Cafe, Jbuilder, Jcreator, Có khả năng truy cập dữ liệu từ xa thông qua cầu nối JDBC (Java DataBase Connectivity) Hỗ trợ các lớp hữu ích, tiện lợi trong lập trình các ứng dụng mạng (Socket) cũng như truy xuất Web Hỗ trợ lập trình phân tán (Remote Method... Công Huy 14 1.1 Giới thiệu về ngôn ngữ Java 1.1.1 Lịch sử phát triển Năm 1990, Sun MicroSystems thực hiện dự án Green nhằm phát triển phần mềm trong các thiết bị dân dụng James Gosling, chuyên gia lập trình đã tạo ra một ngôn ngữ lập trình mới có tên là Oak Ngôn ngữ này có cú pháp gần giống như C++ nhưng bỏ qua các tính năng nguy hiểm của C++ như truy cập trực tiếp tài nguyên hệ thống, con trỏ, định nghĩa... điệp Cách thức bắt tay, đồng bộ hóa tiến trình truyền nhận giữa Client và Server • • • • Thông thường phần client đảm nhận các chức năng về User Interface, như tạo các form nhập liệu, các thông báo, các báo biểu giao tiếp với người dùng Phần Server đảm nhận các chức năng về Data Storage Nhờ đó dễ dàng trong việc bảo trì, chia sẻ tổng hợp dữ liệu trong toàn bộ công ty hoặc tổ chức Các chức năng về Business... được phát hành, các bạn có thể tải về từ địa chỉ http://java.sun.com hoặc http://www.javasoft.com Bộ công cụ này gồm các chương trình thực thi đáng chú ý sau: • javac: Chương trình biên dịch các chương trình nguồn viết bằng ngôn ngữ java ra các tập tin thực thi được trên máy ảo Java • java: Đây là chương trình làm máy ảo của Java, thông dịch mã Bytecode của các chương trình kiểu application thành mã thực... màn hình Ta có thể dùng bất kỳ chương trình soạn thảo văn bản nào để biên soạn chương trình Nhưng nhớ phải ghi lại với phần mở rộng là java 1.2.3 Biên soạn chương trình bằng phần mềm Notepad của Ms Windows Notepad là trình soạn thảo đơn giản có sẵn trong MS Windows mà ta có thể dùng để biên soạn chương trình HelloWorld Hãy thực hiện các bước sau: • • Chạy chương trình Notepad: o Chọn menu Start \ Programs... Application) Thông thường là kiến trúc 3 tầng Chương trình ứng dụng được tách thành 3 phần riêng biệt tương ứng cho 3 chức năng User Interface, Business Rule và Data Storage Vì các chức năng thuộc về Business Rule được tách thành một phần riêng, nó có thể được thực thi trên một máy tính Server riêng giải quyết được hầu hết các nhược điểm mắc phải của kiến trúc đơn tầng và kiến trúc hai tầng nói trên... tính khác nhau Ngôn ngữ động, cho phép mã lệnh của một chương trình được tải từ một máy tính về máy của người yêu cầu thực thi chương trình Ngôn ngữ an toàn, tất cả các thao tác truy xuất vào các thiết bị vào ra đều thực hiện trên máy ảo nhờ đó hạn chế các thao tác nguy hiểm cho máy tính thật Ngôn ngữ đơn giản, dễ học, kiến trúc chương trình đơn giản, trong sáng 1.1.3 Máy ảo Java (JMV - Java Virtual... trình ứng dụng được nhúng vào các trang web Mã của chương trình được tải về máy người dùng từ Web server khi người dùng truy xuất đến trang web chứa nó Application: Là một chương trình ứng dụng được thực thi trực tiếp trên các máy ảo của Java • • 1.1.5 Bộ phát triển ứng dụng Java (JDK- Java Development Kit) JDK là một bộ công cụ cho phép người lập trình phát triển và triển khai các ứng dụng bằng ngôn ngữ... server tạo ra hai loại kiến trúc Client - Server là: o Fat Client o Fat Server 1.7.2.1 Loại Fat Client Trong loại này Business Rule được cài đặt bên phía Client Phần Server chủ yếu thực hiện chức năng về truy vấn và lưu trữ thông tin Hình 1.12 - Kiến trúc chương trình Client – Server theo kiểu Fat Client Ưu điểm • Tạo ra ít giao thông trên mạng nhờ dữ liệu tạm thời trong quá trình tính toán được lưu

Ngày đăng: 07/05/2016, 07:28

TỪ KHÓA LIÊN QUAN

w