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クラスはもっと良いアイデアがあります.一言残してください.ありがとうございます.
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; }
}
}