登陆注册
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”。

同类推荐
  • 网络广告经纪人

    网络广告经纪人

    本书为网络广告经纪人培训认证的指定教材,该认证是商务部中国商务广告协会和信息产业部中国电子商会联合推出的,旨在为国家造就和培养出一大批网络广告梯队型人才。该教材包括网络广告经纪人的介绍和发展趋势,以及网络广告的原理、策划、设计、制作、发布与交换、效果评估、管理,以及网络广告营销的国内外最新的成功案例,还提供了一些常用的网络广告制作工具。本教材适合助理网络广告经纪人和网络广告经纪人层次使用。也可作为高校广告、电子商务等专业的教材。
  • 条形码技术与应用

    条形码技术与应用

    条形码是一种可供电子仪器自动识别的标准符号,是由一组黑白相间、粗细不同的条、空符号按一定编码规则排列组成的标记,用以表示一定的信息,确认某个物体或规定它的移动,能正确快速地为产、供、销各环节在采集、处理和交换信息时提供标识。
  • 公开时刻

    公开时刻

    本书从传播者分析,内容分析,媒介分析受众与效果分析,传播环境与传播控制分析等几大方面把汶川地震作为重大传播案例,阐释汶川地震的传播学遗产。对政府部门和新闻媒体在危机公关方面做出正面评价。
  • 研究性学习丛书-电脑知识

    研究性学习丛书-电脑知识

    本书对电脑知识有一个全面详细的介绍,会对读者的电脑知识进行提高。
  • 悟道:一位IT高管20年的职场心经

    悟道:一位IT高管20年的职场心经

    本书是一位有20多年职场经验的IT企业高管撰写的一系列有关职场悟道的短文集成,讲述的是在企业里如何修炼自己,如何摆平自己的心态,怎样做到“世事洞明”和“人情练达”,如何“搞定老板”,怎样做到工作和生活平衡等诸多话题,涉及到跳槽、转行、升迁、环境、沟通、老板、下属、老外等等。每一篇都以作者的亲身经历或者身边的故事说明道理,语言简洁流畅,妙趣横生,更有不少经典片段和发人深省的职场警句,读起来就像是一个睿智幽默的老朋友坐在你面前娓娓道来。
热门推荐
  • 地下世界一重启

    地下世界一重启

    昏暗的地下世界,为了生计来回奔波的人们,一只地上的探险小队,在山中的基地里带回一个美丽的女子,另外一队人紧随其后发现山中的基地也隐藏着不为人知的秘密,随之而来的是隐藏在深处的黑暗,一个巨大的阴谋逐渐笼罩在地下世界里,无论是贫民区,军事区还是富人区,终将笼罩在黑暗之中....................
  • 快穿之365行

    快穿之365行

    有了系统365,生活日日有奔头!有了系统365,大千世界走一走!系统365,值得拥有,让你在无尽时空里体验不同的职业高峰!制香师,不是制造香水哦。职业睡眠师,人生就靠睡眠解决?阴阳商人,那是卖啥东东?狗粮品鉴师,味觉不要太挑战?……365,麻烦能给点正常的职业吗?首席设计师,可以!流行天后,没问题!花滑第一人,不是梦想!蜜月测试员,不在话下!.......这怎么又跑歪了!!!还有若干想不到的职业等你尝鲜!来吧,一起体验何为365行,行行皆学问,点点皆人生!
  • 历得欢情薄

    历得欢情薄

    几百万年前,天帝还是少年郎时与翼族公主同读一所私塾,慢慢的两人亲密无间,最后在一场大难中,会发生什么故事呢……
  • 大佬恋爱方程

    大佬恋爱方程

    十年前,才十岁的她被所谓的父亲丢到国外独自生存,而十年后,女扮男装,强势回归。手刃白眼狼父亲,俗话说,滴水之恩,当涌泉相报,所以为了还恩人的情她决定跟在恩人身旁守护他的生命。某个冷傲的大佬:“明明是救命之恩,应该是以身相许?(?`^??)?”
  • 日月光:黑马

    日月光:黑马

    3028年,地球分为三个大陆:光陆、月陆和星陆。每隔50年,地球上的保护者就会换一批人,能否让自己大陆上的人成为保护者,很大程度上决定了整个大陆接下来50年的命运。3060年,光陆为了改变自己的衰落,秘密培养了一队人马,并命名为‘DarkHorse’。他们本是普通人,因为天资过人而被强化,并暗中寻找各种机遇磨练他们。这一路上,他们失去了亲情,却拥有了一份胜似亲情的友情!背叛、受伤、决裂。。。。。。哪怕经历这些,他们依旧是彼此的保护者!他们能否成功?请拭目以待!
  • 百变蔷薇之蜕变的冷血恶公主

    百变蔷薇之蜕变的冷血恶公主

    她是一个天真到这个世界上再也找不出第二个的纯情派,而种种磨难,把她从一个单纯的女孩变为恶魔,那么,恶魔的降临,究竟会发生什么呢?面对那么多人的不信任,她还能何去何从?看着为了自己多次受伤的人,看着把自己逼到绝望的人,她要如何选择才能不伤心、不伤人,可是老天却那么地不公平,再一次掉入深渊、天使却成了她永远不能触碰的,而自己始终是一个恶魔。到底,幸福会不会眷顾她呢?
  • 渣女姐姐又宠她啦

    渣女姐姐又宠她啦

    我他妈的,好不容易适应了古代的生活。我却又重生了,这回还给穿回来了
  • 遇见幸福的自己

    遇见幸福的自己

    在全球大变化和激烈的经济挑战下,在焦虑和机遇并存的情况下,有更多的人在寻找答案迫切地寻找着可靠的指引方向,这种迫切度远甚于以往任何时期。我们不会被目前的不稳定性所打倒或者因此而泄气,如果你想改变自己的处境,重新开始,那么本书会为你提供希望以及前进路途中的详细指引。面向所有怀揣梦想的人们,作者在本书中结合自己的成功经历,将所有的成功要素归纳在寻找幸福的人生课程当中,为你指明实现梦想的道路。
  • 做人要学会低调 做事要懂得低头

    做人要学会低调 做事要懂得低头

    地低能纳海,人低可成王。世事洞明皆学问,人情练达即文章。低头并不代表低人一等。得势淡如云,富贵平常事。恃才傲物难长久,和逊恭谦心自安。退步方能进步,忍耐可以成功。屈己尊人,人皆举之。心宽容万物,尘埃归自宁。本书告诉您面对纷繁复杂的社会,应该保持做人的低调从而拥有好的心态以取得人生的成功。
  • 如果没有当初

    如果没有当初

    真正的离开,不需要过多的言语,只需要一个平淡的眼神,一个平常的微笑,然后,转身,再也不回头!爱得卑微的她,失去骄傲,失去傲骨,任由自己的尊严被人踩在脚下。可是杜非凡,当你知道真相,你会为你做的种种残忍事情而痛不欲生,这也是我对你最好的惩罚!