Professional Documents
Culture Documents
Chuong 5. Ky Thuat Lap Trinh Phan Tan
Chuong 5. Ky Thuat Lap Trinh Phan Tan
Nội dung
• Tổng quan về lập trình phân tán
• Mô hình client-server
KỸ THUẬT LẬP TRÌNH PHÂN TÁN • Kiến trúc hướng dịch vụ & kiến trúc phân tán
• Kỹ thuật lập trình web
Mục tiêu: Cung cấp kiến thức cơ bản và chuyên • Kỹ thuật lập trình webservice
sâu về kỹ thuật lập trình phân tán. Minh họa và
thực hành bằng một ngôn ngữ cụ thể. Rèn • Kỹ thuật lập trình socket
luyện kỹ năng ứng dụng thực tế.
• Tổng kết
Tổng quan về lập trình phân tán Tổng quan về lập trình phân tán
• Hệ cô lập • 2 mô hình mạng máy
– Là một node tính toán riêng biệt (1 PC, mobile, …)
– Chương trình quản lý tài nguyên và truy xuất bộ nhớ trực tiếp tính
– Các kỹ thuật lập trình trong các phần trước viết cho hệ cô lập – Ngang hàng (peer to
• Hệ phân tán:
– Tập hợp các node tính riêng rẽ có thể làm việc độc lập và liên
peer)
kết để giải quyết công việc – Khách / Phục vụ
– Trong hệ phân tán, mỗi bộ xử lý nói chung có chương trình làm
việc riêng bán độc lập, vì lợi ích chung nên cần phối hợp hành (client – server)
động với nhau
– Chương trình trong môi trường phân tán gồm nhiều phần, chạy
trên các node khác nhau
– Chương trình trên mỗi node không thể trực tiếp truy xuất bộ nhớ
và tài nguyên của node khác mà phải gián tiếp và từ xa
– Hệ phân tán phổ biến nhất = Mạng máy tính
3 4
Tổng quan về lập trình phân tán Tổng quan về lập trình phân tán
• Cấu trúc chung của chương trình phân tán
– Chia thành nhiều phần
• Các mức lập trình phân tán phổ biến
– Mỗi phần chạy trên các node khác nhau, với môi trường – Lập trình mạng tầng ứng dụng
khác nhau • Lập trình web
– Các phần liên • Lập trình web service
lạc thông qua – Lập trình mạng tầng TCP/IP
cơ chế truyền • Lập trình socket
thông điệp – Socket = IP address + service port
5 6
1
3/13/2015
Môi trường & hoạt động của ứng dụng Môi trường & hoạt động của ứng dụng
web web
• Phía client • Phía Server
– Trình duyệt web client (web browser): IE, Chrome, – Web server: IIS, Apache…
Firefox… • Giao tiếp với web browser để xử lý và hồi đáp các yêu
• Đóng vai trò chương trình dịch cho các ngôn ngữ phía client cầu người dùng
• Trình diễn nội dung văn bản theo định dạng của html và một • Cung cấp một số chương trình dịch cho ngôn ngữ lập
số ngôn ngữ client khác trình web phía server (ASP, ASP.Net). Tích hợp một số
• Làm cấu nối, cho phép người dùng tương tác với Web Server
Dịch và hiển thị file: html, javascript, CSS…
Ngôn ngữ lập trình client: html, CSS, JavaScript,
Flash, ActiveX, java aplet…
9 10
11 12
2
3/13/2015
15 16
17 18
3
3/13/2015
Cơ chế tương tác từ người dùng đến Web Server Cơ chế tương tác từ người dùng đến Web Server
Request
Response
Html Html
Javascript Javascript
Css Css
PHP
19 20
• Định nghĩa, sự hoạt Các giao thức đặc biệt: các tiến trình phân tán
transport
network
data link
động của các giao – HTTP – Chạy trên các host(“user physical
Lập trình các ứng dụng giữa các ứng dụng. data link
data link
physical
– Tìm hiểu về các giao physical
4
3/13/2015
Một số thuật ngữ trình ứng dụng mạng Giao thức tầng ứng dụng
API: application Q: Phân biệt các tiến
Tiến trình : là chương trình • user agent: là phần programming interface trình bằng cách nào?
chạy trên host. mềm xử lý giao diện
• Định ra giao diện giữa – Địa chỉ IP của host.
• Trong cùng một host, hai giữa người dùng và
tầng ứng dụng và tầng
tiến trình có thể truyền mạng. – “Số hiệu cổng”: cho
mạng.
thông với nhau qua – Thực hiện theo các phép bên host nhận
interprocess • Socket : Internet API
giao thức tầng ứng phân biết các tiến
communication (điều dụng. – Hai tiến trình truyền trình cục bộ.
khiển bởi hệ điều hành). thông bằng cách
– Web: browser
gửi/đọc dữ liệu
• Các tiến trình chạy trên – E-mail: mail reader Dịch vụ Cổng
vào/từ socket. FPT 21
các host khác nhau
– streaming HTTP 80
truyền thông qua giao Telnet 23
audio/video: media Finger 79
thức tầng ứng dụng.
player SMTP 25
Dịch vụ của các giao thức giao Các ứng dụng trên Internet và giao
vận trên Internet thức giao vận tương ứng
Dịch vụ TCP: Dịch vụ UDP:
Application Underlying
• Hướng kết nối : Yêu cầu thiết • Truyền dữ liệu không tin Application layer protocol transport protocol
lập kết nối giữa client và cậy giữa các tiến trình
gửi và nhận. e-mail SMTP [RFC 821] TCP
server.
remote terminal access telnet [RFC 854] TCP
• Truyền dữ liệu tin cậy giữa • Không hỗ trợ : thiết lập Web HTTP [RFC 2068] TCP
tiến trình gửi và nhận kết nối, độ tin cậy, điều file transfer ftp [RFC 959] TCP
tiết luồng, điều tiết tắc streaming multimedia proprietary TCP or UDP
• Điều tiết luồng : bên gửi sẽ (e.g. RealNetworks)
nghẽn,thời gian,băng
không làm “lụt” bên nhận. remote file server NSF TCP or UDP
thông tối thiểu.
• Điều tiết tắc nghẽn: điều Internet telephony proprietary typically UDP
(e.g., Vocaltec)
chỉnh tốc độ gửi khi mạng
quá tải. Q: Tại sao một số ứng dụng
dùng UDP?
• Không hỗ trợ : thời gian,
băng thông tối thiểu.
5
3/13/2015
Ví dụ: Chương trình lấy thông tin địa chỉ máy chủ Lớp Socket
import java.net.*;
public class AddrLookupApp { • Tạo kết nối từ máy khách tới máy chủ.
public static void main(String[] args) {
try { – public Socket(String host, int port): tạo một
if (args.length!=1) { kết nối theo địa chỉ host và số cổng port.
System.out.println("Usage: Java AddrLookupApp <HostName>"); – public Socket(InetAddress address, int port):
return;}
InetAddress host = InetAddress.getByName(args[0]);
tạo một kết nối theo địa chỉ là đối tượng
String hostName = host.getHostName(); InetAddress và số cổng port.
System.out.println("Host name:" + hostName); – public Socket(String host, int port, boolean
System.out.println("IP Address:" + host.getHostAddress()); stream): tạo một kết nối theo địa chỉ host và
} catch (UnknownHostException e) {
System.out.print("Address not found");
số cổng port, stream = true để quy định kết
return;} nối theo TCP, ngược lại, kết nối theo UDP
} (User Datagram Protocol).
}
6
3/13/2015
input
stream
incoming request:
tới server qua socket welcomeSocket =
Client ServerSocket()
(outToServer stream) Process Input stream:
process sequence of bytes TCP
• server đọc dòng kí tự trong into process
wait for incoming
connection request connection setup
create socket,
connect to hostid, port=x
output stream: clientSocket =
sockets sequence of bytes
connectionSocket =
Socket()
welcomeSocket.accept()
• server biến đổi dòng kí tự đó out of process
inFromServer
outToServer
7
3/13/2015
Tổng kết
45