五月综合缴情婷婷六月,色94色欧美sute亚洲线路二,日韩制服国产精品一区,色噜噜一区二区三区,香港三级午夜理伦三级三

您現(xiàn)在的位置: 365建站網(wǎng) > 365文章 > 類序列化之后保存在COOKIES里

類序列化之后保存在COOKIES里

文章來源:365jz.com     點(diǎn)擊數(shù):365    更新時(shí)間:2009-09-13 10:51   參與評(píng)論

      我們知道,在.NET中頁面之間傳值的方式有很多種,比如SESSION,COOKIES,Response.Redirect,URL等等;
具體用哪種方式要具體問題具體分析了,比如說就一個(gè)字段需要傳到下一個(gè)頁面,那么URL和Response.Redirect方式是不二選擇;
如果對(duì)象較大的話,我們會(huì)考慮使用session,cookies,使用Session的話,在數(shù)據(jù)量大的時(shí)候有可能會(huì)造成IIS崩潰,導(dǎo)致站點(diǎn)無法訪問,
那我們就使用COOKIES,有的朋友又會(huì)說,cookies容易丟失,確實(shí)是的,不過如果cookies用得好的話也不會(huì)丟失哦。
    接下來我介紹將類對(duì)象序列化之后保存在COOKIES里。
    在使用序列化之前,首先想一下,為什么要先將對(duì)象序列化然后寫入COOKIES呢?不進(jìn)行序列化就不行嗎?序列化以后對(duì)象變成什么樣子呢?
帶著這幾個(gè)問題我們來看看源代碼:
首先創(chuàng)建類:其中[Serializable]標(biāo)示該類可以被序列化

[Serializable]
    public class mbmembers
    {
        public mbmembers()
        {

        }

        #region "Private Variables"    
        private string _M_UserName;  // 帳號(hào)
        private string _M_RealName;  // 真實(shí)姓名
        private string _M_IDCard;  // 證件號(hào)碼
        private string _M_Email;  // 電子郵件信箱
        private string _M_Mobile;  // 手機(jī)號(hào)碼
        #endregion

        #region "Public Variables"
        /// <summary>
        /// 帳號(hào)
        /// </summary>
        public string M_UserName
        {
            set { this._M_UserName = value; }
            get { return this._M_UserName; }
        }

        /// <summary>
        /// 真實(shí)姓名
        /// </summary>
        public string M_RealName
        {
            set { this._M_RealName = value; }
            get { return this._M_RealName; }
        }

        /// <summary>
        /// 證件號(hào)碼
        /// </summary>
        public string M_IDCard
        {
            set { this._M_IDCard = value; }
            get { return this._M_IDCard; }
        }

        /// <summary>
        /// 電子郵件信箱
        /// </summary>
        public string M_Email
        {
            set { this._M_Email = value; }
            get { return this._M_Email; }
        }

        /// <summary>
        /// 手機(jī)號(hào)碼
        /// </summary>
        public string M_Mobile
        {
            set { this._M_Mobile = value; }
            get { return this._M_Mobile; }
        } 
      #endregion
    }
接下來提供序列化和反序列化的方法:

      /// <summary>
       /// 對(duì)類mbmembers進(jìn)行二進(jìn)制序列化成一個(gè)字符串
       /// </summary>
       /// <returns>序列化代碼</returns>
       public  string  BinarySerialize(mbmembers model)
       {
           BinaryFormatter ser = new BinaryFormatter();
           MemoryStream mStream = new MemoryStream();
           ser.Serialize(mStream, model);
           byte[] buf = mStream.ToArray();
           mStream.Close();

           return System.Text.Encoding.Default.GetString(buf);
       }
       /// <summary>
       /// 將從Cookie中取出的字符串反序列化成一個(gè)mbmembers類
       /// </summary>
       /// <param name="binary"></param>
       /// <returns></returns>
       public  mbmembers DeSerialize(string strLoginUserModel)
       {
           byte[] binary = System.Text.Encoding.Default.GetBytes(strLoginUserModel);
          
           BinaryFormatter ser = new BinaryFormatter();
           MemoryStream mStream = new MemoryStream(binary);
           mbmembers o = (mbmembers)ser.Deserialize(mStream);
           mStream.Close();
           return o;
       }


  將用戶個(gè)人信息序列化之后 寫入COOKIES:
            mbmembers bs = new mbmembers();
            
            Response.Cookies["userinfo"].Value = BinarySerialize(bs); //序列化
            Response.Cookies["userinfo"].Expires = DateTime.MinValue;

            
            string str= Request.Cookies["userinfo"].Value; //反序列化
            mbmembers mb = DeSerialize(str);

以上是所有源代碼,可能比較難看懂,首先你應(yīng)該明白系列化的目的就不難理解他了。系列化的目的就是能在網(wǎng)絡(luò)上傳輸對(duì)象,否則就無法實(shí)現(xiàn)面向?qū)ο蟮姆植际接?jì)算。比如你的客戶端要調(diào)用服務(wù)器上的一個(gè)方法獲得一個(gè)產(chǎn)品對(duì)象,比如方法為:public   Product   findProduct(int   product_id);  
  注意該方法返回一個(gè)Product對(duì)象,如果沒有系列化技術(shù),客戶端就收不到返回的對(duì)象Product。而序列化的實(shí)現(xiàn)就是把對(duì)象變成一個(gè)可在網(wǎng)絡(luò)上傳輸?shù)淖止?jié)流。

不過此處,如果您不想序列化,而是直接將對(duì)象保存在COOKIES里面也是可以的,這就需要循環(huán)遍歷對(duì)象里面的信息,將里面的信息拼接成字符串,然后存儲(chǔ)在COOKIES中。

 


Tag標(biāo)簽: 序列化

如對(duì)本文有疑問,請(qǐng)?zhí)峤坏浇涣髡搲?,廣大熱心網(wǎng)友會(huì)為你解答?。?點(diǎn)擊進(jìn)入論壇

發(fā)表評(píng)論 (365人查看,0條評(píng)論)
請(qǐng)自覺遵守互聯(lián)網(wǎng)相關(guān)的政策法規(guī),嚴(yán)禁發(fā)布色情、暴力、反動(dòng)的言論。
昵稱:
最新評(píng)論
------分隔線----------------------------

其它欄目

· 建站教程
· 365學(xué)習(xí)

業(yè)務(wù)咨詢

· 技術(shù)支持
· 服務(wù)時(shí)間:9:00-18:00
365建站網(wǎng)二維碼

Powered by 365建站網(wǎng) RSS地圖 HTML地圖

copyright © 2013-2024 版權(quán)所有 鄂ICP備17013400號(hào)