Giao thức kết nối Socket cùng với giao thức HTTP là hai giao thức truyền thống, rất dễ sử dụng. Trong hai giao thức kết nối trên mỗi giao thức lại có những ưu, nhược điểm riêng mà tùy trong mỗi chương trình mà ta có thể lựa chọn phương thức kết nối thích hợp.
Giao thức HTTP:
Trong giao thức HTTP, client truyền thông điệp cho server thông qua hai phương thức là POST và GET. Với phương thức POST, lập trình viên có thể giấu các tham số truyền lên server, điều này sẽ giúp bảo mật hơn cho server, tuy nhiên sẽ gây khó khăn hơn cho lập trình viên phía client. Với phương thức GET, lập trình viên sẽ gửi tất cả các tham số yêu cầu qua url, điều này sẽ dễ dàng hơn cho lập trình viên phía client tuy nhiên sẽ rất khó để giấu url cho server.
Việc sử dụng kết nối HTTP có ưu điểm là dễ dàng cho lập trình viên nhưng nó lại có một số điểm bất lợi sau :
• HTTP khiến cho kết nối giữa Client-Server không được liên tục. Hệ thống chỉ thực hiện kết nối khi có yêu cầu, và đóng lại sau khi nhận được dữ liệu. Do đó, việc request sẽ tốn một khoảng thời gian để thiết lập kết nối, điều mà kết nối socket không mắc phải.
• Ngoài ra do việc sử dụng giao thức kết nối HTTP thực hiện truy vấn trực tiếp lên service không đảm bảo được tính bảo mật và trong suốt của hệ thống do có thể dễ dàng phát hiện các câu truy vấn.
Giao thức Socket TCP:
Chính từ những nhược điểm trên của HTTP, yêu cầu đặt ra là xây dựng thêm một module kết nối nằm giữa client và các service, nhằm làm trong suốt giữa hai tầng này, nâng cao tính bảo mật đối với server chứa service. Module này sẽ thiết lập một kết nối TCP socket với các client, giữ các kêt nối, lấy các dữ liệu từ service và trả lại cho client.
Module kết nối tại clientcó nhiệm vụ quản lý các gói tin gửi đi, nhận và xử lí các gói tin gửi về từ server và hiển thị kết quả lên form.
Module kết nối tại Serversẽ tạo một socket, lắng nghe những packet từ client gửi lên, xử lý,sau đó dựa vào mã gửi lên để gọi các dịch vụ được cung cấp bởi Search Engine của trang Socbay.com để trả về các dữ liệu đã được chuẩn hoá tương ứng.
Hình 8: Mô hình Socket TCP
Một số đặc điểm của giao thức Socket:
- Socket có cơ chế keep alive ,kết nối không bị mất sau mỗi lần nhận được dữ liệu.=> khắc phục được so với http.Thời gian kết nối client-server sẽ không bị mất.
- Tuy nhiên chính điều này dẫn đến 1 vấn đề là khi mà Socket keep alive với các request của client.Trong trường hợp hàng nghìn request gửi cùng 1 lúc và nó vẫn keep thì server có thể sẽ bị quá tải.
Trong khuôn khổ đồ án em đã chọn giao thức Socket làm giao thức kết nối cho chương trình của mình. Tuy mỗi giao thức đều có những lợi ích riêng nhưng việc lựa chọn một phần cũng do khuôn khổ làm đồ án có hạn và cũng một phần lợi thế là em đã nghiên cứu giao thức này trong thời gian thực tập vừa qua.