簡體   English   中英

WCF配置服務器以記住數據

[英]WCF Configuring server to remember data

我目前在WCF中有一個服務,它處理客戶端發出的請求。 但是,它會緩存客戶端發送的一些數據。 然后它對數據進行計算。

在任何時候,客戶端都應該能夠檢索一些數據。 它由用戶自行決定(當單擊Button時,將發送AJAX查詢以獲取一些數據)。

我遇到的問題是,只要另一個客戶端連接並開始發送請求,原始客戶端發送的數據現在就會失真。

我想知道如何解決這個問題。 我試圖使用會話,因為我正在尋找一些方法,我可以為每個想要連接它的客戶端實例化我的“服務器對象”。 仍然沒有運氣。

此問題與此相關: WCF關閉連接/釋放資源

聽起來好像你正在尋找WCF耐用服務( 鏈接 )。 持久服務可以在服務調用之間保持狀態。

Juval Lowy編程中的第4章WCF服務( 鏈接 )還包含有關持久服務以及每會話服務的信息,這些信息也可能有所幫助。

但是,一般而言,將WCF服務設置為無狀態是一種良好的做法 - 即不要在調用之間保持任何狀態。 持久服務通過將數據持久化來實現這一點,例如在調用之間將數據保存到數據庫中而不是實際將其保留在內存中(如果您有數千個並發服務消費者,這可能是一件壞事)。

您的服務如何配置實例/並發? 聽起來你可能正在使用單例服務實例,並將數據存儲在服務實例中?

如果這樣可以解釋您的問題 - 該狀態將被下一個調用狀態更改操作的客戶端覆蓋。

由於您的客戶端是Web瀏覽器,您可能正在使用不支持WCF會話的webHttpBinding。

添加自己的會話概念的一種簡單方法是將會話ID傳遞給您的操作,然后您可以使用該ID查找請求的相關狀態。

如果您想要更復雜,可以調查從WCF請求中挖掘出cookie信息並將其用於您的會話。

最復雜的解決方案是使用支持WCF會話概念的自定義WCF綁定(構建在cookie或會話參數之上)。 除非你可以谷歌一個現成的解決方案,否則可能不值得努力。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM