2010-02-22 51 views

回答

43

它們不會在來自客戶端的請求之間持續任何狀態。即服務不知道也不關心後續請求來自已經/還沒有做出先前請求的客戶端。基本上,它是一個'給我這個信息,忘了我',這使得客戶有責任維持任何狀態。

+1

@mike:太文字? – brian 2010-02-22 18:09:18

+2

我評論的版本很短,基本上說「因爲他們不堅持狀態。」我正在刪除我的評論,並且還有一個優點。 – 2010-02-22 18:13:06

+0

@mike:我的不好。我有同感。這就是我更新它的原因。 – brian 2010-02-22 18:15:37

4

因爲HTTP是無狀態的。在客戶端請求被服務器完成之後,沒有信息被存儲用於未來的事務。

16

因爲Web服務基於HTTP,這是一種無狀態協議。

引用wikipedia

無狀態服務器是一個服務器,它 將每個請求作爲一個獨立的事務 即無關於任何先前 請求。

即,每個請求與前一個請求是獨立的:即使我們使用一些「技巧」(例如cookie)來保留請求之間的某些狀態,但這不是協議定義的內容。

+7

無狀態協議和無狀態Web服務之間有很大的區別。應用程序可以是有狀態的(使用「技巧」,如您所述),而底層協議是無狀態的。另外,Web服務不一定意味着HTTP。例如,SOAP可以作爲傳輸層使用SMTP。 – 2010-02-22 19:16:25

+0

我會毫不猶豫地將SMTP SOAP服務稱爲「Web服務」。有很多類型的服務,但對我來說,Web服務= HTTP或HTTPS。 SMTP在網絡之前。所以我認爲帕斯卡的相關性很好。 – codenheim 2014-05-14 20:44:18

4

Web服務的概念是建模RPC(遠程過程調用)又名一個函數。因此你不需要使用會話。此外,無狀態的想法來自於將Web服務器擴展到服務器場的需求,從而實現更高的容量。

但是,使用狀態的選擇取決於技術和開發人員。沒有什麼可以阻止您創建ASP.Net Web服務並在方法定義中設置「EnableSession = True」。

這在一些基本的身份驗證方案中很有用,例如本土表單身份驗證或爲短期「工作流程」提供自動關聯。 (但我強烈建議您考慮更現代的技術將提供更高級別的安全性和性能)。