------
Phần 49.
Phân biệt Client-side và Server-side
Tới thời điểm này, không chỉ làm việc trên máy cục bộ, và
với trình duyệt nữa, mà phải làm việc với Server, phần mềm Web Server.
Khi người dùng chạy một ứng dụng web (ví dụ openemr), là họ
đang sử dụng một ứng dụng theo kiểu Client-Server. Nghĩa là ứng dụng đó sẽ gồm
các xử lý ở hai nơi: tại máy của họ (máy Client) và tại máy Server.
Trước khi chuyển qua học ngôn ngữ lập trình PHP, là một ngôn
ngữ xử lý tại Server, phần này sẽ tìm hiểu Client-side là gì và Server-side là
gì?
Theo wiki, “client-side refers to operations that are
performed by the client in a client–server relationship in a
computer network. Typically, a client is a computer application, such
as a web browser, that runs on a user's local computer or workstation and
connects to a server as necessary”.
Tạm hiểu: trong một ứng dụng mạng kiểu Client-Server, Client-side
là các hoạt động xảy ra tại trình duyệt của máy Client (máy tính của người
dùng).
Cũng theo wiki, “server-side refers to operations that
are performed by the server in a client–server relationship in a
computer network. Typically, a server is a computer program, such as
a web server, that runs on a remote server, reachable from a user's
local computer or workstation”.
Tạm hiểu: trong một ứng dụng mạng kiểu Client-Server, Server-side
là các hoạt động xảy ra tại Server. Thông thường, Server có thể là một chương
trình máy tính, ví dụ phần mềm Web Server chạy trên một máy tính ở xa.
Xem hình minh họa về Client-side và Server-side,
Giải thích hình trên:
- (1) Tại máy tính người dùng, họ nhập địa chỉ của một trang
web (hello.php), trình duyệt gửi một request (GET) tới Server, nói “ông Server
ơi, cho tôi nội dung của trang hello.php)
- (2) Server nhận được request từ Client, liền thông dịch và
thực thi đoạn mã hello.php, kết quả là có một trang HTML (trong này có thể có
thêm CSS, JavaScript)
- (3) Server gửi trang HTML kết quả về cho trình duyệt trên
máy Client
- (4) Trình duyệt tại máy Client sẽ phân tích mã HTML, mã
CSS, thực thi mã JavaScript và kết xuất ra trang web cho người dùng
Như vậy, từ khái niệm Client-side và Server-side, sẽ có một
số khái niệm kéo theo,
Ví dụ, lập trình phía Client (Client-side programming) và
lập trình phía Server (Server-side programming). Như bài viết này nói rất rõ về
nó: http://daonhanit.blogspot.com/2013/07/su-khac-nhau-giua-client-side.html
Vì bài viết có nhiều ý hay, nên chép nguyên về đây để tham
khảo:
[Có một điểm chung là dù cho lập trình ở phía Client hay
phía Server thì các lập trình viên sẽ sử dụng các ngôn ngữ kịch bản (scripting
language) để tạo ra những xử lý. Các ngôn ngữ kịch bản cho phép máy tính tạo ra
các phản hồi phức hợp để gửi đi trên mạng.
Client Side Programming:
- Những kịch bản xử lý được viết ở đây sẽ chạy một cách cục
bộ trên trình duyệt và hệ điều hành trên máy tính của bạn. Ngôn ngữ kịch bản
thông dụng để lập trình ở phía Client là JavaScript và máy tính của bạn cần
phải có trình thông dịch của JavaScript
để có thể làm việc với những kịch bản này.
- Khi trình duyệt tải trang web xuống thì những kịch bản này
cũng có thể đi theo như là một phần của trang web, nó giúp cho việc lướt web
của bạn được cải thiện hơn. Ví dụ: trong quá trình xử lý tác vụ của bạn, trang
web cần thực hiện một phép tính, thì kịch bản xử lý này sẽ thực hiện phép tính
đó ngay trên máy tính của bạn thay vì phải gửi dữ liệu lên Server và ngồi chờ
kết quả được trả về.
- Vấn đề của các kịch bản này đó là nó giới hạn trong việc
xử lý (có nghĩa là chỉ có thể dùng cho một vài xử lý nhất định mà thôi) và phụ
thuộc rất nhiều vào hệ điều hành và trình duyệt của máy người dùng. Bởi vì phát
triển một Website liên quan tới người dùng với vô số tùy chọn về phần mềm là rất khó khăn cho các lập trình viên có thể
kiểm soát được những lỗi có thể phát sinh và
vấn đề tương thích với trình duyệt.
Server Side Programming:
- Những kịch bản xử lý ở phía này sẽ được thực thi trên máy
Server và sẽ gửi trả kết quả về cho Client qua mạng. Các ngôn ngữ kịch bản
thông dụng dùng để lập trình bên phía Server là: PHP, C#, VB.NET. Những kịch
bản xử lý này giảm thiểu số lượng các lỗi cũng như vấn đề tương thích bởi vì
những dòng mã trong kịch bản sẽ chạy trên một Server sử dụng một ngôn ngữ nhất
định và một phần mềm hosting (lưu trữ Website) nhất định, do đó khi chọn Server
để hosting website của bạn điều quan trọng là xem xét Server đó có được cài đặt
sẵn và hỗ trợ ngôn ngữ mà bạn dùng hay không.
- Những kịch bản phía Server được dùng để truy cập những xử
lý hoặc tài nguyên có trên Server, ví dụ như là cơ sở dữ liệu. Khi bạn muốn lấy
truy cập dữ liệu của Server thì những yêu cầu của bạn sẽ được chuyển tới cho
những kịch bản xử lý này để chúng thực hiện các truy vấn cơ sở dữ liệu và sẽ
trả về cho trình duyệt của bạn kết quả của truy vấn đó.
- Ưu điểm lớn nhất của các kịch bản xử lý phía Server là sự
bảo mật hơn hẳn các kịch bản ở Client. Ví dụ: khi bạn truy cập vào tài khoản
ngân hàng trực tuyến, các kịch bản xử lý phía Server sẽ giao tiếp với Client bằng
những thông điệp được mã hóa. Trong khi kịch bản phía Client chỉ là những văn
bản đơn giản, chạy trên máy cục bộ. Bất cứ một "kẻ xấu" nào cũng có
thể xem mã, nghe trộm và ăn cắp thông tin cá nhân từ máy tính của bạn.
- Một ưu điểm khác đáng chú ý về kịch bản xử lý phía Server
đó là tính tương thích với các trình duyệt của người dùng. Đa số trình duyệt
hiện nay cho phép người dùng "tắt" thực thi các kịch bản xử lý phía
Client (ví dụ JavaScript) để ngăn chặn hacker tấn công, tuy nhiên chính điều
này gây nên vấn đề cho các lập trình viên, những người muốn JavaScript chạy
trên máy tính người dùng để ứng dụng Web của họ có thể được tải xuống hoàn
toàn. Còn đối với kịch bản phía Server thì không hề có bất cứ sự giới hạn nào.
- Nhược điểm chủ yếu của kịch bản xử lý phía Server là tốn
thời gian cũng như chi phí để nhận truy vấn từ người dùng. Thêm vào đó là các
lỗi trong kịch bản có thể làm treo toàn bộ hế thống Server.
Tóm lại, với những ưu điểm và nhược điểm của hai loại kịch
bản này mà hiện nay giải pháp được nhiều lập trình viên sử dụng đó là kết hợp
cả hai cái, tận dụng những ưu điểm của từng loại và giảm thiểu tối đa những
khuyết điểm của chúng.]
Xem clip nói về mô hình Client-Server: https://www.youtube.com/watch?v=L5BlpPU_muY
Ghi lại một số ý từ clip,
- Mô hình Client-Server là mô hình xử lý tập trung, các máy
tính được chia thành hai nhóm: nhóm tạo yêu cầu (requester) và nhóm đáp ứng
(response provider).
- Nhóm tạo yêu cầu là các Client, nhóm đáp ứng là các Server.
- Client có thể là một máy tính, hoặc một chương trình, được
sử dụng để tạo ra các yêu cầu.
- Server là một chương trình, luôn lắng nghe và đáp ứng lại
các yêu cầu.
-----------
Cập nhật [20/10/2017][2/11/2016]
-----------