2013-03-13 29 views
1

當用戶通過身份驗證時,會話將使用定義的ICacheClient進行存儲,該ICacheclient可以是內存,memcached或redis。 如果我使用兩臺Web服務器,我想在會話中只填入該認證已完成在服務器上,對嗎?在什麼樣的使用是Servicestack在多服務器環境中的會話可擴展性?

我必須在此情況下(內存緩存客戶端)使用粘性會話?

+0

這是非常簡單的描述,使用'MemoryCacheClient'以保持所有會話信息存儲在單個Web服務器上。如果您想在多個負載平衡應用服務器之間共享會話信息,請使用** Redis **或** Memcached **(這是最快的分佈式緩存服務器選項)。每個選項都是非常高性能的 - 這取決於您的使用情況。 – mythz 2013-03-13 22:53:09

回答

2

我們有一對服務器提供我們的網絡應用程序,並可以根據需要進行擴展。我們使用REDIS通過ICacheclient界面維護客戶端身份驗證狀態。爲了便於在構建機器上測試,我們根據是否連接了調試器在Redis和Memcached之間切換。我們Apphost.cs有這樣的:

if (Debugger.IsAttached) 
{ 
    container.Register<ICacheClient>(new MemoryCacheClient());   
} 
else 
{ 
    container.Register<IRedisClientsManager>(c => new PooledRedisClientManager(AppConfig.REDISUrl + ":" + AppConfig.REDISPort)); 
    container.Register<ICacheClient>(c => (ICacheClient)c.Resolve<IRedisClientsManager>().GetCacheClient()); 
} 

內置的authenication方法只是工作與任何的ICacheClient被設置爲在documentation

相關問題