SilverlightシミュレーションASP.NET Session対応操作(一)

5195 ワード

最近、Silverlightプロジェクトの開発に追われています.複数のSilverlightプロジェクトの開発を経て、データのロードに関する心得を皆さんと共有して、誰がもっと良い解決策があれば、もっと楽しんでください.
Silverlightプロジェクトの開発では、ユーザーがログインに成功した後、いくつかの基礎データをロードして、ログイン後のデータの操作を行う必要があります.Silverlightプロジェクトとデータのインタラクションは一般的にWCFを選択します.このように、非同期でデータを取得するたびに、ネットワークがよくない場合、その煩わしさは自然に出てきます.
 
このような問題を解決する方法を採用します.
1.辞書情報のようないくつかの基礎データの記憶に対して、一般的には変化が少ない.また、基本的なデータの変化頻度が少なく、ユーザーが最初にログインしたときにローカルの独立したストレージや私のドキュメントなどにロードしたいと考えています.今後、ログインするたびにローカルのデータだけを直接読み取るだけで、WCFでデータを取得する必要はありません.
2.一部のデータはまだ変化する必要がありますが、时々変化するのではなく、データは一定の周期内で変化しています.例えば、人员の情报のように、普通の企业は毎日新入社员の加入がありません.このような场合、私たちはこのようなデータのタイミングを设定して最新のデータを取得することができます.例えば、人员の情报のように、10日を设定して最新のデータを取得し、また别の问题をもたらします.このように、各データの周期は异なります.これにより、このデータサイクルを保存するために、データベースに適切なテーブルを追加する必要があります.
3.ASP.NETのSessionは皆さんよく知られていないと思いますが、SilverlightにはASPのようなものはありません.NET Session、これで私たちは自分でASPのようなものを書くことができます.NETのSessionは対応する操作を処理して、このSessionの定義は次の1篇で詳しく説明して、もしどの友達が次の1篇の
SessionManagerクラスはもっと良いアイデアがあります.一言残してください.ありがとうございます.
using System.Linq;
using System.Collections.Generic;
using System.Text;

namespace CustomMap.Common
{
    /// <summary>
    ///     Session  
    /// </summary>
    public class SessionManager
    {
        /// <summary>
        ///     Session    
        /// </summary>
        private List<SessionInfo> listSession = null;

        /// <summary>
        ///            
        /// </summary>
        public int Count
        {
            get
            {
                if (listSession != null)
                    return listSession.Count;
                else
                    return 0;
            }
        }

        #region     
        /// <summary>
        ///        
        /// </summary>
        public SessionManager()
        {
            listSession = new List<SessionInfo>();
        }

        /// <summary>
        ///             
        /// </summary>
        /// <param name="SessionName">  </param>
        /// <returns></returns>
        public object this[string SessionName]
        {
            get
            {
                SessionInfo si = listSession.FirstOrDefault(info => info.SessionName == SessionName);
                if (si == null)
                    return null;
                else
                    return si.SessionValue;
            }
            set
            {
                Add(SessionName, value);
            }
        }

        /// <summary>
        ///              
        /// </summary>
        /// <param name="name">  </param>
        /// <param name="value"> </param>
        public void Add(string name, object value)
        {
            //  name    ,      ,          
            SessionInfo si = listSession.FirstOrDefault(info => info.SessionName == name);
            if (si == null)
            {
                listSession.Add(new SessionInfo { SessionName = name, SessionValue = value });
            }
            else
            {
                si.SessionValue = value;
            }
        }

        /// <summary>
        ///            
        /// </summary>
        /// <param name="name">  </param>
        public void Remove(string name)
        {
            SessionInfo si = listSession.FirstOrDefault(info => info.SessionName == name);
            listSession.Remove(si);
        }

        /// <summary>
        ///               
        /// </summary>
        public void Clear()
        {
            listSession.Clear();
        }

        /// <summary>
        ///   ToString  ,               
        /// </summary>
        /// <returns></returns>
        public override string ToString()
        {
            StringBuilder strName = new StringBuilder();
            foreach (SessionInfo info in listSession)
            {
                strName.AppendFormat(",{0}", info.SessionName);
            }
            return strName.ToString().Substring(1);
        }
        #endregion
    }

    /// <summary>
    ///     Session  
    /// </summary>
    public class SessionInfo
    {
        /// <summary>
        /// Session  
        /// </summary>
        public string SessionName { get; set; }

        /// <summary>
        /// Session 
        /// </summary>
        public object SessionValue { get; set; }
    }
}