標籤:soc http 資料 邏輯 hello lis bin 就是 close
web架構
所有的Web應用,本質上其實就是一個socket服務端,使用者的瀏覽器其實就是一個socket用戶端。
import socketdef handle_request(client): buf = client.recv(1024) client.send("HTTP/1.1 200 OK\r\n\r\n".encode("utf8")) client.send("Hello, Word".encode("utf8"))def main(): sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) sock.bind(("localhost", 9000)) sock.listen(5) while True: connection, address = sock.accept() handle_request(connection) connection.close() if __name__ == "__main__": main()
上述通過socket來實現了其本質,而對於真實開發中的python web程式來說,一般會分為兩部分:伺服器程式和應用程式。伺服器程式負責對socket伺服器進行封裝,並在請求到來時,對請求的各種資料進行整理。應用程式則負責具體的邏輯處理。為了方便應用程式的開發,就出現了眾多的Web架構,例如:Django、Flask、web.py 等。不同的架構有不同的開發方式,但是無論如何,開發出的應用程式都要和伺服器程式配合,才能為使用者提供服務。這樣,伺服器程式就需要為不同的架構提供不同的支援。這樣混亂的局面無論對於伺服器還是架構,都是不好的。對伺服器來說,需要支援各種不同架構,對架構來說,只有支援它的伺服器才能被開發出的應用使用。這時候,標準化就變得尤為重要。我們可以設立一個標準,只要伺服器程式支援這個標準,架構也支援這個標準,那麼他們就可以配合使用。一旦標準確定,雙方各自實現。這樣,伺服器可以支援更多支援標準的架構,架構也可以使用更多支援標準的伺服器
【python】-- web架構