`

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
分享到:
评论

相关推荐

    Silverlight和ASP.NET揭秘.rar

    《Silverlight和ASP.NET揭秘》是一本深入探讨这两种技术的权威指南。Silverlight,由微软开发,是一款用于创建丰富的互联网应用程序(RIA)的插件,它提供了强大的图形、媒体和交互性功能。ASP.NET则是微软.NET框架...

    silverlight获取Asp.net参数(方式一)

    在IT行业中,Silverlight是一种基于.NET Framework的浏览器插件,由微软开发,用于创建富互联网应用程序(RIA)。它允许开发者构建交互性强、图形丰富的Web应用,同时与后端服务器技术如ASP.NET进行通信。本项目重点...

    Silverlight:ASP.NET与Ajax开发实战1

    【标题】"Silverlight:ASP.NET与Ajax开发实战1"是一个深入探讨Silverlight技术如何与ASP.NET和Ajax结合,以实现高效、交互丰富的Web应用程序的教程。本资源可能包括一系列的章节、示例代码和讲解,旨在帮助开发者...

    基于 Silverlight +ASP.Net实现的Sessions参数访问程序例子代码

    本示例代码着重于如何在Silverlight应用中访问和使用ASP.NET的Session参数,这是一种在多页面间共享数据的有效方式。 首先,理解Silverlight:它是由微软开发的一种运行于浏览器的插件,允许开发者创建具有丰富媒体...

    Silverlight:ASP.NET与Ajax开发实战

    《Silverlight:ASP.NET与Ajax开发实战》是针对Web开发技术的一部深度实践教程,尤其关注微软技术栈中的三大核心组件:Silverlight、ASP.NET和Ajax。这些技术都是构建交互式、高性能和富互联网应用程序(RIA)的重要...

    [Silverlight:ASP.NET与Ajax开发实战]一书源程序代码

    【Silverlight:ASP.NET与Ajax开发实战】一书的源程序代码涵盖了丰富的IT技术知识点,主要涉及Microsoft的三个核心技术:Silverlight、ASP.NET和Ajax。这些技术在Web开发领域具有重要地位,尤其对于构建交互性强、...

    Silverlight and.ASP.NET Revealed

    《Silverlight与ASP.NET揭秘》一书由Matthew MacDonald撰写,深入探讨了Silverlight与ASP.NET在Web开发领域的应用与融合,为.NET开发者提供了一扇了解并掌握这两种技术的窗口。 ### Silverlight概述 Silverlight是...

    基于silverlight的asp.net多文件上传

    综上所述,基于Silverlight的ASP.NET多文件上传是一个结合了客户端和服务器端技术的复杂功能,涉及到文件选择、上传进度追踪、文件信息展示等多个方面。通过合理的设计和编程实践,可以构建出高效且用户友好的文件...

    Beginning.Web.Development.Silverlight.And.ASP.NET.AJAX.Feb.2008

    《从新手到专业:网页开发、Silverlight与ASP.NET AJAX》是Laurence Moroney撰写的一本深入探讨网页应用开发的书籍。本书旨在帮助读者掌握如何使用ASP.NET AJAX、WPF(Windows Presentation Foundation)、WCF...

    Silverlight-ASP.NET与AJAX开发实务书附范例,有很好的参考价值

    《Silverlight-ASP.NET与AJAX开发实务》是一本深入探讨Web开发技术的专业书籍,它主要聚焦于微软的Silverlight技术、ASP.NET框架以及 AJAX(Asynchronous JavaScript and XML)的应用。这三种技术在现代Web应用中起...

    Silverlight.and.ASP.NET.Revealed

    《Silverlight与ASP.NET揭秘》一书由Matthew MacDonald撰写,深入探讨了Silverlight与ASP.NET在Web开发领域的应用。本书不仅适合.NET开发者,也适用于希望了解Silverlight如何改变Web开发格局的技术人员。 ### ...

    一个基于Silverlight2+ASP.NET实现的多文件(大文件)上传程序源码例子

    该源码例子是一个使用Silverlight 2技术和ASP.NET框架实现的多文件上传程序,特别针对大文件上传场景进行了优化。Silverlight是微软推出的一种富互联网应用程序(RIA)平台,它允许开发人员创建具有丰富用户体验的...

    silver light和asp.net的交互方法

    《Silverlight与ASP.NET的交互实现详解》 Silverlight,作为一项客户端技术,常常需要与服务端信息进行交互,以实现更丰富的用户交互体验。在ASP.NET环境中,Silverlight通常是作为一个Object对象嵌入到HTML中,...

    Silverlight(2) - 1.0实例之支持录音和回放的钢琴(Silverlight+ASP.NET AJAX+DLINQ)

    在本实例中,我们将深入探讨如何使用Silverlight 1.0构建一个支持录音和回放功能的钢琴应用,结合ASP.NET AJAX和DLINQ技术。这个项目不仅展示了Silverlight的多媒体处理能力,还体现了Web开发中的异步通信和数据管理...

    Asp.net AJAX 与 Silverlight 实战手册( 源码)

    Asp.NET AJAX 和 Silverlight 是两种在Web开发中用于创建丰富用户界面的技术。Asp.NET AJAX(Asynchronous JavaScript and XML)允许开发者通过JavaScript和XML实现页面的部分更新,从而提高用户体验,减少页面刷新...

    [其他类别]silverlight制作的手机功能演示_hypphone(ASP.NET源码).rar

    【标题】:“Silverlight制作的手机功能演示_Hypphone(ASP.NET源码)”是一个针对互联网技术的项目,展示了如何使用Silverlight技术构建适用于移动设备的功能应用,并提供了基于ASP.NET的后台源代码。 【核心知识...

    ASP.NET源码——Silverlight时钟源码.zip

    这个压缩包"ASP.NET源码——Silverlight时钟源码.zip"包含的是一个使用Silverlight技术实现的时钟应用的源代码。Silverlight是微软在2007年推出的一个插件,用于提供丰富的网络媒体体验和交互式用户界面,类似于...

    达内培训ASP.NET资料

    【ASP.NET】是一种由微软开发的web应用程序框架,用于构建动态网站、 web应用程序和web服务。它是.NET Framework的一部分,提供了丰富的功能和工具,使得开发者能够更高效地编写代码,实现更多的功能。 【达内培训...

    Pro Telerik ASP.NET and Silverlight Controls

    Pro Telerik ASP.NET and Silverlight Controls是由著名第三方控件开发商Telerik推出的组件开发书籍,其中包含ASP.NET和Silverlight自定义控件开发步骤和技巧介绍。

Global site tag (gtag.js) - Google Analytics