Silverlight模拟ASP.NET Session相应操作(一)

    近期忙于Silverlight项目开发,经过多个Silverlight项目开发,关于数据加载的一些心得,和大家一起分享下,如果哪位朋友有更好的解决方案,也麻烦更享下。Silverlight项目开发,用户登录成功后需加载一些基础数据,以便登录后对数据的操作,Silverlight 项目和数据交互一般都会选择WCF,这样每次通过异步获取数据,在网络不是很好的情况下,那种烦脑自然而然的就出来了。

采用一种方法来解决这种问题:

1.对一些基础数据的存储,如字典信息,一般很少变化;还有一些基础数据变化频率很小,希望在用户第一次登录时候就加载到本地独立存储中或是我的文档等,以后每次登录的时候只直读取本地的数据,就不再需要通过WCF获取数据。

2.有些数据还是需要变化的,只是不是时时变化,数据在一定的周期内变化,如人员信息,一般企业不会天天有新职员的加入,在这种情况下,我们可以设置这类的数据定时获取最新数据,如人员信息,设置10天去获取一次最新数据,又带来了另外一个问题,这样每类数据的周期都是不一样的,这样务必需要在数据库添加相应的表来保存这个数据周期。

3.ASP.NET 中的 Session 我想各位朋友并不陌生,不过Silverlight 并不存在类似ASP.NET Session,这样我们可以自己写一个类似ASP.NET 的Session 处理相应的操作,这个Session 的定义在下一篇详细说明,如果哪个朋友对下篇的

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; }
    }
}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
提供的源码资源涵盖了安卓应用、小程序、Python应用和Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。
ASP.NET 是一种基于微软 .NET 平台的 Web 应用程序框架。它提供了一种开发 Web 应用程序的高效和可靠的方式。ASP.NET 框架提供了一些强大的功能,包括支持面向对象的编程、服务器控件、数据绑定、安全性等。以下是 ASP.NET 技术内幕的一些重要方面: 1. ASP.NET 是基于 HTTP 协议的。它与 Web 服务器之间的通信是通过 HTTP 请求和响应完成的。 2. ASP.NET 应用程序可以使用各种编程语言编写,如 C#、VB.NET、J# 等。 3. ASP.NET 应用程序可以使用各种数据库,如 SQL Server、Oracle、MySQL 等。 4. ASP.NET 应用程序可以使用 Web 服务来实现跨平台的应用程序集成。 5. ASP.NET 应用程序可以使用一些高级的技术,如 AJAX、Silverlight、Web Parts 等来增强用户体验。 6. ASP.NET 应用程序是基于事件驱动的编程模型,它使用特定的事件来响应用户的请求和操作。 7. ASP.NET 应用程序可以使用各种服务器控件来快速开发 Web 应用程序,并提供了一个强大的数据绑定模型,可以快速绑定和显示数据。 8. ASP.NET 应用程序提供了多层架构的支持,可以将业务逻辑和数据访问层分离,从而提高代码可维护性和可重用性。 9. ASP.NET 应用程序提供了一种可扩展的架构,可以使用模块和处理程序来扩展应用程序的功能。 总之,ASP.NET 技术是一个强大的 Web 应用程序框架,提供了许多高级的功能和特性,可以帮助开发人员快速、高效地开发 Web 应用程序。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值