我們在進行web開發時經常會用到Session,用它去標識不同的會話,那麼涉及到跨站點的時候如何實現Session共享呢?
通常的解決方案有:使用數據庫、使用CookIEs做中間橋等等。
下面介紹一種基於ASP.Net 2.0的,通過序列化和反序列化機制實現的一種解決方案。
首先看一下通常的服務器集群的網絡拓撲結構:
利用序列化機制實現Session共享的原理:
1、Web Server 1的應用程序序列化Session信息為文本值(可以是Binary或Soap格式)
2、將序列化後的值寫入文件,保存到File Server上
3、Web Server 2 對保存在File Server上的Session序列化後的值進行反序列化
4、在Web Server 2上重新構建Session值
下面我們來詳細看看實現代碼,分以下幾個步驟:
1、創建一個類庫工程:ShareSession
引入以下的命名空間:
System.configuration
System.Runtime.Serialization.Formatters.Soap
System.Web
2、創建一個類:SessionEntity
代碼如下:
using System;
using System.Collections.Generic;
using System.Text;
using System.Collections;
namespace ShareSession
...{
/**//* *****************************
*
* Author : Xiaojun Liu
* Create Date : 2007.11.09
* Description :
*
* *****************************
*/
[Serializable]
public class SessionEntity
...{ <