Đi xuống qua các cách thức
Tôi hi vọng bạn đã trải nghiệm các ví dụ ban đầu này về lập trình mạng Python có thể trông
là gì. Quay trở lại, tôi có thể sử dụng chuỗi ví dụ này để tạo một vài điểm về lập trình mạng
trong Python.
Trước tiên, bạn có thể bây giờ thấy rõ ràng nhiều hơn thuật ngữ protocol stack có ý định gì: nó
có nghĩa xây dựng một trao đổi trò chuyện tinh vi, nghĩa đen mức cao (“Tôi muốn
geographic location của mailing address này”) trên đỉnh của các trao đổi trò chuyện cơ bản và đơn
giản hơn cái cuối cùng chính là các text strings gửi đi lại giữa hai máy tính sử dụng phần cứng mạng
của chúng.
Protocol stack cụ thể cái bạn đã khám phá là cao 4 giao thức.
+ Trên đỉnh của Google Geocoding API, cái thông báo cho bạn biết làm cách nào thể hiện các truy vấn
geographic của bạn như các URLs cái lấy dữ liệu JSON chứa các toạ độ.
+ Các URLs đặt tên tài liệu cái có thể được giành sử dụng HTTP.
+ HTTP hỗ trợ các lệnh hướng tài liệu như GET sử dụng các sockets TCP/IP thô.
+ Các sockets TCP/IP biết làm các nào chỉ gửi và nhận các byte strings.
Mỗi tầng của stack, bạn thấy, sử dụng các công cụ được cung cấp bởi tầng dưới nó và đến lượt nó cung cấp khả năng tới
tầng cao hơn tiếp theo.
Điểm thứ hai được làm sáng tỏ qua các ví dụ này là Python hỗ trợ hoàn chỉnh như thế nào cho một trong các mức mạng tại
đó bạn đã hoạt động. Chỉ khi sử dụng một giao thức tuỳ theo vendor, và cần format các yêu cầu để rằng Google sẽ hiểu
chúng, nó là cần thiết để chấp nhận sử dụng một thư viện bên thứ ba.; tôi chọn requests cho ví dụ code thứ hai không
phải vì Standard Library thiếu urllib.request module mà vì API của nó quá ì ạch. Mọi cái đơn trong các mức giao thức
khác bạn gặp đã có hỗ trợ mạnh bên trong Python Standard Library. Bất kể bạn muốn lấy tài liệu tại một URL cụ thể hay gửi
và nhận các strings trên socket mạng thô, Python đã sẵn sàng với các hàm và classes cái bạn có thể sử dụng để có công
việc được làm.
Thứ ba, chú ý rằng các chương trình của tôi giảm có xem xét về chất lượng khi tôi buộc bản thân sử dụng ngày càng tăng
các giao thức mức thấp hơn. Phần code search2.py và search3.py, ví dụ, bắt đầu hard-code các thứ như cấu trúc form và
các hostnames theo một cách rằng là không linh động và rằng có thể là khó để duy trì sau này. Code trong search4.py là
tồi nhất: nó bao gồm HTTP request không tham số, viết tay, cấu trúc của nó hoàn toàn không rõ ràng để trả lời và hiểu
các điều kiện lỗi mạng cái có thể xảy ra.