Câu trả lời khác đã tập trung vào những gì client-side và lập trình server-side là: những gì ngôn ngữ chủ yếu được sử dụng, những gì nhiệm vụ đã được hoàn thành, vv
Điều này là hoàn toàn đúng, nhưng tôi bỏ lỡ một chút tập trung vào sự khác biệt giữa cả hai loại lập trình, trong bối cảnh lập trình web. Hãy để tôi cố gắng giải quyết điều đó.
Bảo mật và quyền
Trong lập trình phía máy khách, bạn không có quyền truy cập vào toàn bộ hệ thống, vì những lo ngại về bảo mật. Người dùng không nhất thiết phải tin tưởng từng mã được tải xuống từ web và thực thi trên máy của mình và đây là mục tiêu thiết kế chính của môi trường phía máy khách (trình duyệt và công cụ JavaScript): để cung cấp một môi trường biệt lập nơi mã khách hàng có thể thực thi nhưng không thể truy cập bất cứ thứ gì ngoài phạm vi được phép.
Trong lập trình phía máy chủ, bạn cũng nên giới hạn quyền truy cập của từng ứng dụng vào hệ thống cơ bản, nhưng điều này ít được thực thi đối với bạn, vì cuối cùng, bạn hoặc công ty của bạn kiểm soát hệ thống đó. Thiết kế 'lồng cô lập' này không được tích hợp trong các công cụ và ngôn ngữ lập trình phía máy chủ, nhưng được thực hiện thông qua cài đặt cài đặt (sử dụng người dùng chuyên dụng với quyền hạn chế, chọn cổng yêu cầu hoặc không yêu cầu quyền root, v.v.).
Triển khai và nền tảng
Trong lập trình phía máy chủ, việc triển khai phải xảy ra từ bên ngoài mã của bạn, sử dụng một số loại công cụ (ngay cả khi đó là make install
hoặc a git clone
) và việc triển khai này thường là thủ công - hoặc ít nhất, dự kiến sẽ xảy ra trong một giám sát bán giám sát đường. Hệ thống (có nghĩa là HĐH) mà bạn triển khai thường thống nhất trên một số máy, nhưng nó có thể được tùy chỉnh rất nhiều theo nhu cầu của bạn.
Trong lập trình phía máy khách, việc triển khai diễn ra từ mã phía máy chủ của bạn, phục vụ khách hàng tự động và không có sự giám sát. Hệ thống cơ bản (có nghĩa là chủ yếu là trình duyệt) có thể rất khác nhau trên một số lượng lớn máy hơn nhiều. Để làm cho việc triển khai trở nên khả thi, các tiêu chuẩn phải được giữ nguyên và có một xu hướng mạnh mẽ hơn nhiều đối với một ngôn ngữ và môi trường.
Đây là lý do tại sao sao chép mã phía máy chủ từ máy này sang máy khác có thể mất hàng tuần, trong khi mã phía máy khách thường không quan trọng để thực thi trong các máy khác nhau.
Hiệu ứng nhà nước và thứ cấp
(Tuyên bố miễn trừ trách nhiệm: đây là điểm chủ quan nhất trong tất cả. Có lẽ có nhiều khía cạnh sai trong lập luận của tôi. Đó chỉ là một giả thuyết thú vị, theo quan điểm của tôi.)
Trong lập trình phía máy chủ, trạng thái là mối quan tâm lớn hơn nhiều, có nghĩa là làm thế nào để truy xuất và cập nhật dữ liệu theo yêu cầu của người dùng với khả năng xảy ra xung đột do đồng thời. Ngay cả khi phần lớn sự phức tạp này được giảm tải cho máy chủ cơ sở dữ liệu, thì trách nhiệm của mã phía máy chủ là cho phép cơ sở dữ liệu đảm bảo tính toàn vẹn của dữ liệu bằng cách sử dụng giao diện của nó một cách chính xác (ví dụ: không sử dụng bộ đệm cho các cập nhật không bao giờ được nhìn thấy bởi DB), trong khi đó cũng là mục tiêu của mã phía máy chủ để không làm quá tải cơ sở dữ liệu với công việc và khiến người dùng chờ phản hồi.
Trong lập trình phía khách hàng, việc trình bày kết quả cho người dùng là mối quan tâm lớn hơn nhiều và điều này bao hàm các hiệu ứng phụ (chủ yếu là in ra màn hình). Điều này không có nghĩa là không có trạng thái liên quan (ví dụ: cookie), chỉ có mục tiêu chính của mã là thực sự giao tiếp với người dùng và điều này không thể xảy ra nếu không có hiệu ứng phụ.
Đây là lý do tại sao lập trình phía máy khách thường yêu cầu (tại một số điểm) nhìn vào màn hình bằng bản demo, để kiểm tra xem tất cả màu sắc và bố cục có đúng không, trong khi lập trình phía máy chủ có thể xảy ra hầu như chỉ trong môi trường hướng văn bản, trong đó tự động kiểm tra kiểm tra xem logic vẫn đang làm những gì nó phải làm.