登陆注册
8724600000027

第27章 软件构造(6)

②如果打算重复性地检索少量数据,或者检索的数据在每次使用数据时都需要尽可能地更新时,也最好使用DataReader。

在以下场合下考虑使用DataSet。

①如果应用程序不是立即“卸载”查询结果时,或者有大量的处理(如两次数据访问之间的事务逻辑处理)时,最好使用DataSet。DataSet检索数据后,将检索结果存放到内存中,并同时把连接返回到数据库连接池中,这样,DataReader可以在处理完成之前保持连接锁定在开启状态。这个特性会非常容易导致高流量的应用程序耗尽所有可用的数据库连接。

②当需要多次操作数据时,最好使用DataSet。例如,当多个控件需要获取同样的数据时,使用DataSet就比DataReader更加合适。这是因为后者只能读一次,一个DataReader只能对应一个控件,要实现此操作,每个控件就都要进行一次数据检索了。

③当数据的变化不是很频繁(即不要求每次使用数据时都从数据库重新检索它以保证它获得及时的更新)时,最好使用DataSet。DataSet可以保存在一个会话(Session)或者程序变量中,它也可以用System.Web.Caching.Cache类进行缓冲。这样可以降低从数据库直接检索数据的次数,使应用程序的性能有所提高。

④当建立返回检索数据的Web服务时,最好使用DataSet。由于DataSet是可串行化的,因此它可以作为返回值。而DataReader由于需要连续的数据库连接,因此它不能作为Web服务的返回值。

6.5ASP.NET

6.5.1ASP.NET概述

ASP.NET是一种建立在通用语言上的程序构架,能被用于一台Web服务器来建立强大的Web应用程序。ASP.NET提供许多比现在的Web开发模式强大的优势。主要有下列优点。

1.与传统的ASP比较

ASP采用VBScript作为主要编程语言,和大多数解释型语言一样,ASP致命的缺点是每次请求都要解释页面代码。ASP.NET则不同,它采用C、VB.NET等作为开发语言,基于.NET Framework之上,每次修改的代码编译成中间语言(MSIL)代码。加速了Web浏览速度,减轻了Web服务器负载,ASP.NET通过Code Behind文件、HTML页面和Web程序代码已经基本实现分离。ASP程序员习惯在HTML中直接嵌入代码,虽然ASP.NET仍然支持这样做,但是书中还是建议程序员克服这个困难,采用Code Behind文件来优化我们的网站结构。

2.执行效率的大幅提高

ASP.NET是把基于通用语言的程序在服务器上运行。不像以前的ASP即时解释程序,而是将程序在服务器端首次运行时进行编译。这样的执行效果,当然比一条一条地解释强很多。

3.世界级的工具支持

ASP.NET构架是可以用Microsoft(R)公司最新的产品Visual Studio.NET开发环境进行开发,WYSIWYG (What You See Is What You Get,所见即为所得)进行编辑。这些仅是ASP.NET强大化软件支持的一小部分。

4.强大性和适应性

因为ASP.NET是基于通用语言的编译运行的程序,所以它的强大性和适应性,可以使它运行在Web应用软件开发者的几乎所有的平台上。通用语言的基本库、消息机制和数据接口的处理都能无缝地整合到ASP.NET的Web应用中。ASP.NET同时也是languageindependent语言独立化的。所以,可以选择一种最适合自己的语言来编写程序,或者用很多种语言来编写程序,现在已经支持的有C(C++和Java的结合体)、VB和J。

将来,这样的多种程序语言协同工作的能力保护现在的基于COM+开发的程序,能够完整地移植于ASP.NET。

5.简单性和易学性

ASP.NET使运行一些很平常的任务如表单的提交、客户端的身份验证、分布系统和网站配置变得非常简单。例如,ASP.NET页面构架允许我们建立自己的用户分界面,使其不同于常见的VB Like界面。另外,通用语言简化开发使把代码结合成软件变得异常简单。

6.高效可管理性

ASP使用一种字符基础的、分级的配置系统,使服务器环境和应用程序的设置更加简单。因为配置信息都保存在简单文本中,新的设置有可能都不需要启动本地的管理员工具就可以实现。这种被称为“Zero Local Administration”的哲学观念使ASP.NET基于应用的开发更加具体和快捷。一个ASP.NET的应用程序在一台服务器系统的安装只需要简单地复制一些必需的文件,不需要系统的重新启动,一切就是这么简单。

7.多处理器环境的可靠性

ASP.NET已经被刻意设计成为一种可以用于多处理器的开发工具,它在多处理器的环境下用特殊的无缝连接技术,将很大地提高运行速度。即使现在的ASP.NET应用软件是为一个处理器开发的,将来多处理器运行时不需要任何改变都能提高它们的效能,但现在的ASP却做不到这一点。

8.自定义性和可扩展性

ASP.NET设计时考虑了让网站开发人员可以在自己的代码中自己定义“plug in”的模块。这与原来的包含关系不同,ASP.NET可以加入自己定义的任何组件。网站程序的开发从来没有这么简单过。

9.全性

基于Windows认证技术和应用程序配置,可以确信我们的源程序是绝对安全的。

6.5.2ASP.NET举例

1.Session的使用及概念

Session对象可以用来存储需要在服务器的多次请求—应答期间和对网页的请求期间进行维护的指定对话的信息。Session对象是每个对话存在的基础,也就是说不同的客户端生成不同的Session对象。存储在对话状态变量中的数据存在的周期较短,时间可以进行设置。

每个web应用程序必须有一个名字为web.config的配置文件,它是基于XML文件的。下面是一个名字为sessionState的对话:

若要使默认的超时时间(20分钟)延长一倍,可以将下列内容添加到应用程序的web.config文件:

Timeout=”40”

/sessionState>;

默认情况下,ASP.NET像ASP一样,在处理请求的同一进程中存储会话状态。如果cookie不可用,可以通过将会话标识符添加到URL来跟踪会话。若要启用此功能,请设置以下内容:

cookieless=”true”

/sessionState>;

cookieless选项的值为true或false。当其值为false(默认值)时,ASP.NET将使用HTTPcookie来识别用户;当其值是true时,ASP.NET将随机地生成一个唯一的号码,并将它放在被请求的文件的前面。这一号码是用来识别用户的,能够在IE的地址栏中看到它:http://localhost/(2yzakzez3eqxut45ukyzq3qp)/Default.aspx

在编程中随时可以使用session对象,不需要声明。

’存储信息

Session(”myname”)=”Mike”

’获得信息

myname=Session(”myname”)

2.cookie的使用及概念

cookie是存储在客户端文件系统的文本文件中或客户端浏览器对话的内存中的少量数据,浏览器对cookie的大小有限制,不能超过4096字节。可以用cookie检查用户在此前是否已经注册,以及保存用户的一些常用信息。

首先,创建cookie

’声明一个cookie变量

Dim cookie As HttpCookie

’判断CookieName是否存在,如果不存在创建它,存在就获取它

If Request.Cookies(”CookieName”) Is Nothing Then

cookie=New HttpCookie(”CookieName”)

Else

cookie=Request.Cookies(”CookieName”)

End If

’设置cookie过期时间为10秒

Dim ts As TimeSpan=New TimeSpan(0,0,10,0)

cookie.Expires=DateTime.Now.Add(ts)

’把cookie设为受管状态

Response.AppendCookie(cookie)

下面是利用cookie检查用户是否登录的一个VB.NET的例子。

if Request.Cookies(”username”)<;>;””then

’lbMessage是label控件的id

lbMessage.text=”你好!”&;Request.Cookies(”username”).Value

else

lbMessage.text=”你好!客人”

end if

保存用户常用信息,可以使用下面的代码:

Response.Cookies(”username”).Value=username;

3.如何在页面间传递参数

查询字符串提供了一种简单而受限制的页面传递信息的方法,可以方便地将信息通过URL从一个网页传递给另一个网页,但大多数浏览器和客户端装置都把URL的长度限制在255个字符长。还有就是,查询值是通过URL在网页间传递的,因此在有些情况下,安全就成了一个大问题。

带有查询字符串的URL如下所示:

http://www.examples.com/list.aspx?categoryid=1&;productid=101

当有客户端请求list.aspx后,可以通过下面的代码获取目录和产品信息:

Dim categoryid as string

Dim productid as string

categoryid=Request.Params(”categoryid”)

productid=Request.Params(”productid”)

4.如何设置web.config

ASP.NET资源的配置信息包含在一组配置文件中,每个文件都命名为web.config。每个配置文件都包含XML标记和子标记的嵌套层次结构,这些标记带有指定配置设置的属性。因为这些标记必须是格式正确的XML,所以特别要注意标记、子标记和属性是区分大小写的。如果大小写错误,在编译期会报错误。

在这里只介绍web.config中最常用、最重要的一些配置项:

自定义错误信息默认的设置为RemoteOnly。

如果要自定义出错页面,可以设置customErrorsmode=“On”或“RemoteOnly”,以启用自定义错误信息。设置为“Off”是禁用自定义错误信息。

可以如下设置:

这里RemoteOnly和On的区别就在于:自定义出错页面只对远程访问有效,本地还是显示调试信息。

mode=”InProc”

stateConnectionString=”tcpip=127.0.0.1:42424”

sqlConnectionString=”data source=127.0.0.1;user id=sa;password=”

cookieless=”false”

timeout=”20”

/>;

会话状态设置,默认会话模式为“InProc”及进程类会话,此模式下会话状态与ASP.NET辅助进程一起执行。如果IIS服务器重新启动,则所有的会话都会遭到破坏。

Mode还可以设置为StateServer模式,此模式将ASP.NET状态服务(存储会话状态信息)运行在远程服务器上。即使IIS重启,会话状态也能得以保留。SQL Server模式是利用SQL Server来保存会话状态,但此模式效率比较低,一般不采用。

默认情况下,ASP.NET使用cookie标识哪些请求属于特定的会话。如果cookie不可用,则可以通过将会话标识符添加到URL来跟踪会话。若要禁用cookie,请设置sessionStatecookieless=“true”。

同类推荐
  • 微软360度

    微软360度

    本书是由微软总部华人协会组织编写的第二本书,是《微软360度——企业和文件》一书的姐妹篇,本书将着重向你呈现微软总部的华人专家是如何一步一步地走向成功的及在微软总部成功的心路历程,以及如何应对挑战,揭示了微软成功的最重要秘密之一——人才至上,读者读后收获更多的是这些成功人士的成功经验,从而为自己的成功做出更好的规划。就让我们一起通过此书来看看微软公司人才至上管理的方方面面,聆听微软的心声,感觉微软的脉动吧。
  • 现代企业财务软件应用教程

    现代企业财务软件应用教程

    本书内容包括财务软件概论、系统管理、企业应用平台、总账管理、报表管理、薪资管理、固定资产管理、应收款管理、应付款管理等。
  • 组态软件控制技术

    组态软件控制技术

    监控组态软件是完成数据采集与过程控制的专用软件,它以计算机为基本工具,为实施数据采集、过程监控、生产控制提供了基础平台和开发环境。本书从应用角度出发,详细介绍了组态软件应用程序的开发过程。对窗口界面编辑、动画链接、实时和历史趋势、安全机制、I/O设备连接,以及生产应用等内容都做了非常详细的介绍。MCGS是优秀的监控组态软件之一,它功能强大、使用方便,可以非常容易地实现监视、控制、管理的各项功能,并可提供软、硬件的全部接口,方便、快速地进行系统集成,构成不同需求的数据采集与监控系统。本书可作为高等学校计算机应用、自动控制、电子技术、机电技术专业的教材,同时还可作为相关专业工程技术人员的自学用书。
  • 计算机应用基础案例教程

    计算机应用基础案例教程

    本书是根据教育部对高等院校计算机公共基础课程的基本要求,结合计算机技术的最新发展及高职高专类院校计算机基础课程改革的最新动向编写而成。其主要内容包括计算机基础知识、WindowsXP操作系统、Word2003文字处理软件、Excel2003电子表格软件、PowerPoint2003演示文稿制作软件、计算机网络与安全及常用工具软件的使用。本书将理论知识与项目实践相结合,既对理论有较为系统全面的讲解,又通过案例突出了操作技能的培养。本书内容新颖,体系结构合理,可作为高职高专学校、成人高等学校的计算机公共基础课教材,也可以作为广大计算机爱好者的自学参考书。
热门推荐
  • 钚龙领域

    钚龙领域

    当西隆穿越发现自己在十几岁时体型就超过自己两百多岁的银龙老妈时,他就发誓要为整个宇宙带来核平与娱乐!战争是一种陋习!凡是还在使用这种陋习的国家,都将迎接我的核平吐息!所有的战端都将消失!使用新的“战斗”来决定胜负!大陆英雄传说(卡牌游戏)!你值得拥有!多年以后,人们只要发生矛盾,便会原地摆出战斗场地,来一场大陆英雄传说对决。为了名望而努力修炼的人,他们不再大陆搞风搞雨,而是会参加西隆帝国的传奇大会,展现自己的才能。期望自己能够被看中,从而被加入大陆英雄传说的卡牌之中,名扬大陆,传颂千古!整个世界似乎都进入了核平时期。这是一个投错胎的变异钚龙,为宇宙带来核平与变革的时代!顺便公布下书友群吧:三三三六一九三六一.日常灌水。
  • 天行

    天行

    号称“北辰骑神”的天才玩家以自创的“牧马冲锋流”战术击败了国服第一弓手北冥雪,被誉为天纵战榜第一骑士的他,却受到小人排挤,最终离开了效力已久的银狐俱乐部。是沉沦,还是再次崛起?恰逢其时,月恒集团第四款游戏“天行”正式上线,虚拟世界再起风云!
  • 欲望禁界

    欲望禁界

    面对那骄艳欲滴的脸蛋,火辣的身材,你想的是什么;看着那高傲的嘴脸,鄙夷的目光,你的想的又是什么;亿万身价,滔天权势,你渴望的是什么?飞天遁地,强大的异能,你到底想拥有什么?为所欲为,想什么就有什么?但在那为所欲为的背后又是什么呢?
  • 诸神游戏红色的圣剑使

    诸神游戏红色的圣剑使

    此之为重生之地球的六国奇幻战争!向神发起挑战吧!
  • 来自地球的法神

    来自地球的法神

    地球来的,魔法瞬发是必须的!地球来的,身体受强化是必然的!地球来的,7系魔法一个都少不了的!地球来的,完全可以不遵守规则的!这么多丰厚的条件都有了,难道你还不想穿越?明显,到异界就是当神去的嘛!
  • 从遇到BOSS开始的异界生活

    从遇到BOSS开始的异界生活

    “爸爸,您记得您的女儿幻萌大大吗!?”章羽,有点懵。做为一个卑鄙无耻,坑蒙拐骗的优秀玩家,他怎么也没有想到有一天自己会带着游戏女儿穿越异界!
  • 暗恋十三年宠你入怀

    暗恋十三年宠你入怀

    学生时期许墨默默喜欢了顾沐七年。每天晚三都是他们的双人时间,压抑着自己心中的喜欢。七年之后,职场再次相遇,他是总裁,她是保镖。当她站在他面前,他下定决心,她从今以后只能是他的。高冷学霸变身成为霸道总裁,让她没有防备的掉进陷阱,从此无人敢觊觎。
  • 天行

    天行

    号称“北辰骑神”的天才玩家以自创的“牧马冲锋流”战术击败了国服第一弓手北冥雪,被誉为天纵战榜第一骑士的他,却受到小人排挤,最终离开了效力已久的银狐俱乐部。是沉沦,还是再次崛起?恰逢其时,月恒集团第四款游戏“天行”正式上线,虚拟世界再起风云!
  • 大学生社会实践研究

    大学生社会实践研究

    本书主要以甘肃高校(兰州商学院为主)大学生社会实践活动为例,对大学生社会实践进行了比较理性的解读,分为社会实践概论、社会实践的组织和管理、社会实践基地的建立和完善、社会调查的方法和基本程序、社会实践活动范文、附录共6大部分,旨在确立大学生社会实践活动的操作规范,提高它的可操作性,使这项活动能够顺利地开展。
  • 爆宠萌妃:王爷,求抱抱

    爆宠萌妃:王爷,求抱抱

    她,穿越第一天遭追杀,误打误撞看了美男洗澡,差点被吃干抹净……她认了。穿越第二天,一道圣旨从天而降,将她赐给了二王爷为妃……嫁就嫁吧,她也认了。什么?听说这二王爷年近三十,已经死了三任老婆了?这……听说这二王爷不但长相奇丑还怪癖极多。这……怎么个多法?听说他的前三任老婆就是被他给活活玩死的。玩死的?我不嫁!由不得你,直接敲晕塞进喜桥。洞房花烛之夜,两个二货撞在一起:Hello,好巧美男大叔配萝莉萌妃,斗太后,夺皇权,得天下……喜欢请到碗里来!!!