2014-02-17 56 views
0

我遇到的問題是我正在使用第三方DLL進行某些操作(操作非常昂貴),它不是可序列化的,並且每次都需要一分鐘時間才能啓動。每次調用WCF服務時都需要它,並且我無法將它保存在內存中(recyling),並且我無法將它保存在緩存中(不可序列化)。Azure中的狀態應用程序

我想知道有什麼替代品(如果有)?我原本是在考慮使用工人角色,但後來我發現他們也被回收了。然後我考慮了一個Windows服務,但我希望有更適合的東西。

我想我不是唯一有這個問題的人,而且別人已經解決了這個問題! :)

回答

2

爲什麼您無法使用輔助角色或Web角色來將yoru進程生成的數據保存在內存中?這兩個角色都沒有頻繁「刷新」它的內存。誠然,這不保證重新啓動不會發生,但這些重新啓動是非常罕見的,並檢查如果您的狀態數據爲空,然後重新填充它,不應該是一個大問題,並且邏輯可以在任何服務器上工作以同樣的方式,無論是Cloud Service還是專用VM。

編輯:Web角色或輔助角色不會在任何已知的循環上重新啓動。但是,默認情況下,IIS按計劃回收。該計時器可通過啓動腳本進行更改或禁用。此外,在工人角色中不會發生這種回收。所以,如果你正在運行一個輔助角色,事情會留在內存中,只要你不回收自己或稀有Windows更新發生

HTH

+0

也許我誤解了服務器。我的理解是,webroles會回收(默認約20小時)並刷新內存。更重要的是,WebRoles是完全無狀態的,所以每次調用都會生成一個新的服務實例。我知道我可以將它改爲Single實例,但這會影響可伸縮性嗎? – Faraday

+0

編輯我的回覆更清晰 – Igorek

+0

謝謝,這就是我的理解工作。我希望有一個更好的解決方案比(從工人角色獲取數據,如果需要等待)。我假設一次只能有一個(工作)角色被回收,但如果發生更新並且我正在運行多實例服務? – Faraday