2017-10-16 116 views
0

我一直在web開發中工作,所以我的知識和理解主要是面向Web的,因此處理無狀態。對於那些更熟悉非網頁開發的人來說,這可能是一個愚蠢的問題。Windows服務 - 對象持久性

我已經構建了一個Windows服務,它是一個MSMQ監聽器。我的問題是如何最好地在內存中存儲JWT(oAuth訪問令牌)。該令牌可以重複使用數分鐘,並且在此期間偵聽器可以處理多條消息,所以我希望將該令牌在其存儲期間保存在內存中。我真的不想將它存儲在數據庫中,並在每次收到消息時檢索它,因爲這似乎增加了不必要的開銷。在Web環境中,我將使用應用程序狀態/內存,但我不太瞭解內存如何在Windows服務上工作。例如,如果聲明並設置全局變量,那麼該值是否會在ReceiveCompletedEventHandler事件之間持續存在 - 即直到服務停止爲止?

+1

您可以簡單地創建一個定義該令牌,到期時間,到期回調等的類。如果您創建了此實例或實際上是任何類的實例,那麼該實例將與應用程序進程一樣長,除非您銷燬該實例(通過調用自定義析構函數)或丟失所有引用(當垃圾回收器被執行時) – taquion

回答

0

JWT可以始終存儲在一個變量中,並且您可以在續訂時重新分配令牌值。

private string _jwtString = "SJSJFODFSDF08s008sd0s8d8fSD8sfd0f8as808";

只要你的字符串不會掉落的範圍,它會一直存在。