NET應用程式的大部分使用的用戶端伺服器架構。這些術語指的是兩個進程或兩個應用程式在相互通訊和交換一些資訊。兩個過程作為一個用戶端進程,並另一個進程作為伺服器。
這是一個過程,這通常使得資訊請求。得到回應後,這一過程可能會終止或可能會做一些其他的處理。
例如: 網際網路瀏覽器作為一個用戶端應用程式,Web伺服器傳送一個請求到得到一個HTML網頁。
它接受一個來自用戶端的請求的過程。獲得來自用戶端的請求後會處理所需的收集所需的資訊,將其傳送到請求用戶端。一旦這樣做完成後,就又變成準備為另一個用戶端。伺服器進程始終等待準備用於處理傳入請求。
範例: Web伺服器一直等待來自網際網路瀏覽器的請求,並儘快得到任何請求從瀏覽器,它拿起一個請求的HTML頁面,並把它傳送回該瀏覽器。
注意,用戶端需要知道的存在伺服器的地址,但是伺服器並不需要在建立的連線之前知道用戶端的地址。一旦建立連線後,雙方都可以傳送和接收資訊。
有兩種型別的用戶端伺服器架構:
兩層構架: 在這種架構中,用戶端直接與伺服器進行互動。這種型別的架構可能有一些安全漏洞和效能問題。 IE瀏覽器和Web伺服器的兩層架構。這裡的安全問題都解決了使用安全通訊端層(SSL)。
三層架構:在這個架構中,多了一個軟體位於用戶端和伺服器之間。這中間的軟體被稱為中介軟體。中介軟體被用來執行所有的安全檢查和重負載情況下的負載平衡。中介軟體需要從用戶端的所有請求,並做必要的驗證後,通過向伺服器發出請求。然後,伺服器沒有所需的處理和傳送響應回中介軟體,中介軟體終於通過這個響應返回給用戶端。如果想實現一個3層架構,那麼可以使用如Web Logic或WebSphere軟體在Web伺服器和Web瀏覽器之間的任何中介軟體。
有兩種型別的伺服器上,可以有:
疊代伺服器: 這是最簡單形式的伺服器的服務進程的用戶端和第一個請求,然後完成後,需要從其他客戶機的請求。同時,另一個用戶端一直等待。
並行伺服器:這種型別的伺服器執行多個進程並行服務請求一次。因為一個進程可能需要更長的時間,但其他客戶機又不能等太久。 Unix下寫一個並行伺服器的最簡單的方法是fork一個子進程來分開處理每個用戶端。
系統呼叫有所不同的用戶端和伺服器建立連線,但兩者通訊端涉及的基本構造。這兩個過程分別建立自己的通訊端。
在用戶端建立通訊端所涉及的步驟如下:
建立一個socket可使用socket()的系統呼叫
通訊端連線的伺服器地址使用connect()系統呼叫。
傳送和接收資料。做到這一點的方法有許多,但最簡單的方法是使用 read() 和 write()
在伺服器端建立通訊端所涉及的步驟如下:
建立一個socket可使用socket()的系統呼叫
使用bind()系統呼叫通訊端系結到一個地址。對於網際網路上的伺服器通訊端,地址包括主機的埠號。
連線監聽listen()系統呼叫
接受連線使用 accept()系統呼叫。此呼叫通常會阻塞,直到用戶端與伺服器連線。
傳送和接收資料 read() 和write() 系統呼叫.
以下是完整的用戶端和伺服器的互動圖: