下载

2下载券

加入VIP
  • 专属下载特权
  • 现金文档折扣购买
  • VIP免费专区
  • 千万文档免费下载

上传资料

关闭

关闭

关闭

封号提示

内容

首页 asp

asp.doc

asp

393227040
2011-10-27 0人阅读 举报 0 0 暂无简介

简介:本文档为《aspdoc》,可适用于IT/计算机领域

查看完整版本:在ASP应用过程中改进串处理技术性能YinGuoLiXi:在ASP应用过程中改进串处理技术性能外文资料翻译(不少于外文印刷字符).所译外文资料:①作者:JamesMusson②书名(或论文题目):ImprovingStringHandlingPerformanceinASPApplications③出版社(或刊物名称):urlhttp:msdnmicrosoftcomlibrarydefaultaspurlurl=libraryenusdnasphtmlaspstrcatnasp④出版时间(或刊号):March⑤所译页码:.译成中文:    在ASP应用过程中改进串处理技术性能JamesMusson  DeveloperServices,MicrosoftUKMarchAppliesto:  MicrosoftregActiveServerPagesreg  MicrosoftVisualBasicreg摘要:大多数活跃的服务器页(ASP)应用依赖串联建立HTML格式化的数据然后被用户使用。本文对各种创造HTML数据流的方法进行了比较其中有一些在特定的情况下有更好的性能。ASP和VisualBasic编程设计的方法被合理采用了。(打印页)绪论开发者编写ASP页其实是在创造一串格式化正文通过ASP提供给网络客户。你能使用多中不同的方法创造该正文但是你所选择的方法网络应用的性能和可测量性有很大影响。在帮助用户协调他们Web应用性能的许多场合中我已经发现主要的获胜因素是那个改变HTML数据流的方式。在本文我将展示一些普通的技术并且测试他们对简单的ASP页的性能的影响。ASP设计很多ASP开发者已经遵循好的软件设计原则并且模块化他们的代码。这种设计通常采取用某一页的部分离散的功能模块组成新页的形式。线性输出由这些功能实现通常是HTML代码表然后能通过各种各样结合形式形成完整的一页。一些开发者已经更深入一步研究并且把这些HTML函数作为VisualBasicCOM的组成部分希望受益于额外的编译代码提供的执行性能。虽然这是一个好的设计惯例通过这种方法建立数据流对网络站点执行效率有较大影响。不管现实操作执行是从ASP的包含文件还是VisualBasicCOM零部件。数据串串联考虑下列代码碎片取自WriteHTML函数。命名数据的参数仅仅是一个数组包含一些需要被格式化成一个表结构的数据(数据从数据库返回例如)。FunctionWriteHTML(Data)DimnRepFornRep=to  sHTML=sHTMLvbcrlf      "<TR><TD>"(nRep)"<TD><TD>"      Data(,nRep)"<TD><TD>"      Data(,nRep)"<TD><TD>"      Data(,nRep)"<TD><TD>"      Data(,nRep)"<TD><TD>"      Data(,nRep)"<TD><TD>"      Data(,nRep)"<TD><TR>"NextWriteHTML=sHTMLEndFunction这就是为什么很多ASP和VisualBasic开发者建造HTML代码。包含在sHTML变量里的正文被返回给呼叫代码然后使用ResponseWrite给客户写信。当然这也能以相似代码表示直接嵌入网页而不使用WriteHTML的功能。这条代码的问题在于ASP和VisualBasic使用的数据类型BSTR或者基本数据流实际上不能改变长度。这表示每当数据流的长度被改变的时候数据表示就被破坏包含新数据类型的数据流随之产生:这结果产生在存储器分配操作和存储器分离操作中。当然在ASP和VisualBasic这都由你管理因此实际上的花费不显示在表面上。分配和再分配存储器要求基础的运行期代码取出专有的锁因此可能是昂贵的。这在数据量很大并且大块的存储器需要连续快速的被分配时显得特别明显在重级联线期间也是如此。当这在一种单个的用户环境里不能提出主要的问题时在服务器环境里例如在ASP申请在一个Web服务员上运行可能会引起严重的性能和可测量性问题。因此回到上面的代码碎片:多少数据分配在这里执行?实际上答案是。在这种情况下每次对''的应用操作引起那些可变的sHTML比破坏和重建。我已经提及到数据分配是昂贵的随着数据的增加越来越明显用这知识武装我们能对上面的代码加以改进。快速简单的解决方案这里有两种方法减轻数据串联的影响第是为了想办法减少操作的数据流的大小第是想办法降低数据应用操作的数量。看修订后WriteHTML代码如下。FunctionWriteHTML(Data)DimnRepFornRep=tosHTML=sHTML(vbcrlf"<TR><TD>"(nRep)"<TD><TD>"Data(,nRep)"<TD><TD>"    Data(,nRep)"<TD><TD>"Data(,nRep)"<TD><TD>"Data(,nRep)"<TD><TD>"Data(,nRep)"<TD><TD>"Data(,nRep)"<TD><TR>")NextWriteHTML=sHTMLEndFunction乍一看很难认出前后代码之间的差别。后一个有插入语在sHTML=sHTML。这实际上降低了数据流的大小通过改变数据串联的优先权的大小。在原先的代码里ASP编译器将考虑表达式的等式右边并且从左到右评价它。这结果在级联操作中包括一直在增长的sHTML。在新版本中我们给编译器一个暗示以改变它执行操作的次序。现在它将从左到右彻底的进行评价即首先的内部插入语。这技术导致级联操作中包含小的数据流并且只有一个sHTML是增长的。图显示了这一个相对于标准串联方法而言的最优化级联方法。串联使用插入语在一定的情形下能使性能和可测量性有相当明显的差别我将在本文中证明。TheStringBuilder我们已经知道了对于数据串联问题的最好解决方法并且它还提供了很多很多情况下在性能和实现的努力之间的平衡。然而如果我们想要得到改进建造大数据流的性能我们需要作出第个选择就是减少数据流分配的数量。为了达到这个目的要求使用StringBuilder。这是一个包含数据结构缓冲器和试图插入新内容的类且只有在数据长度超过缓冲器的长度时才进行再分配。微软NET免费提供了一个被推荐在全部数据串联环境的类(SystemTextStringBuilder)。在ASP和VisualBasic世界我们无法使用这种类因此我们需要创造属于我们自己的。以下是一个使用VisualBasic开发的类StringBuilder(为了更简练我们忽略了处理错误的规则)。OptionExplicit'defaultinitialsizeofbufferandgrowthfactorPrivateConstDEFINITIALSIZEAsLong=PrivateConstDEFGROWTHAsLong='  buffersizeandgrowthPrivatemnInitialSizeAsLongPrivatemnGrowthAsLong'  bufferandbuffercountersPrivatemsTextAsStringPrivatemnSizeAsLongPrivatemnPosAsLongPrivateSubClassInitialize()  '  setdefaultsforsizeandgrowth  mnInitialSize=DEFINITIALSIZE  mnGrowth=DEFGROWTH  '  initializebuffer  InitBufferEndSub'  settheinitialsizeandgrowthamountPublicSubInit(ByValInitialSizeAsLong,ByValGrowthAsLong)  IfInitialSize>ThenmnInitialSize=InitialSize  IfGrowth>ThenmnGrowth=GrowthEndSub'  initializethebufferPrivateSubInitBuffer()  mnSize=  mnPos=EndSub'  growthebufferPrivateSubGrow(OptionalMinimimGrowthAsLong)  '  initializebufferifnecessary  IfmnSize=Then    mnSize=mnInitialSize    msText=Space$(mnInitialSize)  Else    '  justgrow    DimnGrowthAsLong    nGrowth=IIf(mnGrowth>MinimimGrowth,        mnGrowth,MinimimGrowth)    mnSize=mnSizenGrowth    msText=msTextSpace$(nGrowth)  EndIfEndSub'  trimthebuffertothecurrentlyusedsizePrivateSubShrink()  IfmnSize>mnPosThen    mnSize=mnPos    msText=RTrim$(msText)  EndIfEndSub'  addasingletextstringPrivateSubAppendInternal(ByValTextAsString)  If(mnPosLen(Text))>mnSizeThenGrowLen(Text)  Mid$(msText,mnPos,Len(Text))=Text  mnPos=mnPosLen(Text)EndSub'  addanumberoftextstringsPublicSubAppend(ParamArrayText())  DimnArgAsLong  FornArg=ToUBound(Text)    AppendInternalCStr(Text(nArg))  NextnArgEndSub  '  returnthecurrentstringdataandtrimthebufferPublicFunctionToString()AsString  IfmnPos>Then    Shrink    ToString=msText  Else    ToString=""  EndIfEndFunction'  clearthebufferandreinitPublicSubClear()  InitBufferEndSub在这个类中使用的基本原理是一易变的(msText)被保持在作为一个数据缓冲器的类水平这个缓冲器通过使用Space$函数被调整到一定尺寸并用空格符充满它。当更多的正文需要与现有的数据串联时在检查缓冲器足够大之后Mid$函数被用于将数据插入到正确位置。ToString函数返回数据被正确储存同时也整理缓冲器的大小以适合数据。使用StringBuilder的ASP代码如下显示。FunctionWriteHTML(Data)DimoSBDimnRepSetoSB=ServerCreateObject("StringBuilderVBStringBuilder")'  initializethebufferwithsizeandgrowthfactoroSBInit,FornRep=to  oSBAppend"<TR><TD>",(nRep),"<TD><TD>",      Data(,nRep),"<TD><TD>",      Data(,nRep),"<TD><TD>",      Data(,nRep),"<TD><TD>",      Data(,nRep),"<TD><TD>",      Data(,nRep),"<TD><TD>",      Data(,nRep),"<TD><TR>"NextWriteHTML=oSBToString()SetoSB=NothingEndFunction使用StringBuilder类有一项明确的经常性开支为因为每当使用它时必须建立一个类的实例(并且包含DLL的类必须建立在实例基础上)。还有经常性开支包含额外方法称作StringBuilder实例。StringBuilder如何执行与插入''方法有关还取决于数据串联的数量数据流的大小和StringBuilder数据缓冲区预置参数选择的情况。注意到多数情况下过高估计空间的数量比增长要好一些。内构的建造方法ASP包括一种快速增加你的HTML代码的方式并且仅仅是对ResponseWrite的简单调用。Write函数使用一个最优的具有很好的执行特征的数据缓冲器。被修正的WriteHTML代码显示如下。FunctionWriteHTML(Data)DimnRepFornRep=to  ResponseWrite"<TR><TD>"  ResponseWrite(nRep)  ResponseWrite"<TD><TD>"  ResponseWriteData(,nRep)  ResponseWrite"<TD><TD>"  ResponseWriteData(,nRep)  ResponseWrite"<TD><TD>"  ResponseWriteData(,nRep)  ResponseWrite"<TD><TD>"  ResponseWriteData(,nRep)  ResponseWrite"<TD><TD>"  ResponseWriteData(,nRep)  ResponseWrite"<TD><TD>"  ResponseWriteData(,nRep)  ResponseWrite"<TD><TR>"NextEndFunction虽然这很可能为我们提供最好的性能和可测量性我们已经中断了封装因为我们现在有为Response数据写的函数代码因此呼叫代码已经丢失控制的度。对这些代码的移动也变得有点困难(以COM的组成为例)因为该函数依赖于Response数据流的利用。测试以上种方法都已经通过简单的ASP页和填满虚拟数据的表的对比测试。该试验的执行依据ApplicationCenterTestreg(ACT)通过选择一个委托人(WindowsregXPProfessional,PIIIMHz,MBRAM)依靠专业的服务器(WindowsAdvancedServer,dualPIIIMHz,MBRAM)以Mbsec的速度。ACT被配置成使用线程以便模拟个用户连接到网站。每次试验由秒加热时间和随后的一个秒负荷组成并尽可能多提出请求。测试在各种不同的变化很多的串联操作中进行如在WriteHTML功能的代码碎片中所示。迄今每次测试走都在各种各样的串联方法中运行过。结果以下是一系列图表显示了每种方法在应用中的吞吐量和在ASP页的响应时间。这对应用支持多少请求和用户在下载网页时应该等待多久给出了一些意见。Table  串联方法缩写词缩写    描述RESP    ThebuiltinResponseWritemethodCAT    Thestandardconcatenation('')methodPCAT    Theparenthesizedconcatenation('')methodBLDR    TheStringBuildermethod同时这次测试对典型的ASP应用而言是不实际的从表中很明显看出甚至在次重复中记录也不太大如今有很多复杂的ASP页存在会超出数字的范围并且甚至超过测试的范围。Table  试验样品的页面大小和串联的数量Noofiterations    Noofconcatenations    Pagesize(bytes)        ,        ,        ,        ,    ,    ,    ,    ,    ,    ,    ,    ,    ,    ,    ,    ,    ,    ,Figure  Chartshowingthroughputresults象期望的那样我们能从图表看见多重的ResponseWrite方法(RESP)在整个测试的迭代范围中给我们最好的吞吐量。可是令人惊讶的是标准数据串联方法(CAT)的退化速度以及括入语版本(PCAT)执行超过次迭代的好处。在某处经常性开支为迭代的StringBuilder方法(BLDR)开始显示出价值这归功于数据缓冲不管怎么样但有一点在ASP页中使用StringBuilder将很可能得到额外的成就。Figure  ChartshowingresponsetimeresultsFigure  ChartshowingresponsetimeresultswithCATomittedTimeToFirstByte制作的图表和图表以毫秒为单位表示了响应时间的标准。标准数据串联方法的响应时间(CAT)如此增加得如此迅速以致于那些图表被重复除了这种方法(图)因此其它方法之间的差别能被检查。有趣的是多重的ResponseWrite方法(RESP)和StringBuilder方法(BLDR)给出了看来是要一直增加迭代但是一旦一定的门槛被打破标准串联方法(CAT)和括入圆括号的串联方法(PCAT)都迅速增加。结论在这次讨论中我集中于多少数据流建造技术可以被应用于ASP环境中间但是不忘记这适用于任何具有大数据流的VisualBasic的情况例如手工建立XML资料。下列指南将帮助你决定何种方法可能最适于你的情形。•首先试试括入圆括号''的方法特别是当处理现有代码时。这对代码结构只有很小的影响并且你将发现这将提高应用性能使你超越你的目标。•如果有可能不损害你需要的封装水平使用ResponseWrite。这将给你最好的性能以避免不必要存储器的字符串处理。•用StringBuilder建造真正的大的或者是加强的数据处理。虽然你可能没有正确认识本文中表现的相同的性能增加我已经在现实的ASP网页应用中使用这些技术以阐述它在性能和可测量性方面的极少的额外的努力。.所译外文资料:①作者:ScottMitchell②书名(或论文题目):MakinganASPNETWebSiteAccessible③出版社(或刊物名称):urlhttp:msdnmicrosoftcomaspnetdefaultaspxpull=libraryenusdnaspphtmlacsarafaspurl④出版时间(或刊号):May⑤所译页码:.译成中文:    使一个ASPNET网站容易接近和理解ScottMitchell  guysfromRollacomMayAppliesto:  MicrosoftregASPNET  MicrosoftregNETFramework  MicrosoftregVisualStudioregNET摘要:利用ASPNET类的可继承性使得它们的代码可以被那些没有能力的人使用和理解。(打印页)绪论当大多数的网络用户使用带有典型设置的浏览器访问网页时那些没有能力的用户一般利用可选的方法获得网上的信息。例如盲人可能使用一种可以将文字转换成盲文的文本浏览器或者用一个屏幕阅读器大声地读出来。一个视力衰竭的人可能仍然在使用诸如MicrosoftregInternetExplorer的浏览器但是要辅助于屏幕放大器或者设定特别大的显示字体。运动能力丧失的人可能就不能使用鼠标和键盘作为一种输入设备。由于残疾人通过使用特殊的设备和不标准的浏览器设置进行网上冲浪一个网站的总体设计对残疾人的使用有着非常大的影响。例如那些固定显示大小的绝对固定的特殊字号就会和残疾人使用的设置不一样。那些含有Flash或者Shockwave界面而且不提供更改、文字表达的大大阻碍了残疾人使用盲文设备和texttospeech合成器。一个可以容易地为不同设备做转换的网站是一个容易接近的。从这一点上说你可能会想:“我为什么要考虑保证我的网站是容易接近的?”我认为这有两个很好的理由:、这是一个好买卖从美国年的人口普查来看有万的美国人都有能力缺陷从HarrisInteractive在年月的登记显示的有缺陷的美国人是一般的网络用户而且有能力缺陷的人的上网时间几乎是正常人的倍。从这两个结果来看你会发现有超过万经常上网的残疾人。如果你不花一点时间让你的网站容易接近你将失去万潜在的访问者。、这是政府机构的要求年美国政府通过了项复原法案要求联邦机构使得他们的电子信息容易被单独的残疾人所接近。这项法律为软件应用和网络应用以及电讯产品和视屏产品提供了指导方针。不仅仅是联邦机构必须执行这个方针同时也包括那些为联邦政府工作的私人企业。(在其他的一些国家对政府机构也有类似的要求)因此如果你是为政府工作或者在一个为政府提供服务的公司工作制作容易接近的网络应用是必需的。在这篇文章中我们将讨论通过什么步骤可以让你的网站变得容易接近。我们将简短地看一下可利用的正式的可接近指南然后集中在被美国政府使用的可接近指南中。文章覆盖了怎样使用继承来使不易达到的ASPNET站点变得接近指南。WAI,WCAG,and条标准使一个网站更容易达到有许多措施可被采取。但是这些措施是什么一个站点需要使用多少才可能达到目的?这些问题的答案随着你询问的人和这些人需要提供的达到程度的不同而改变。一个财富进入世界强的公司所需要的站点内部网比只有个雇员的公司的站点内部网需要更高的可达到程度。WC关于可接近性的意见为了使这个讨论正式化WC在正式成立了WebAccessibilityInitiative一个致力于使网络站点更容易被残疾人利用的群体。WAI首先发表Web内容满足可接近指南或者说叫WCAG。WCAG为设计可达到的网站的目录提供了条指南。指南并不详细说明如何制作一个更可达到的网站。相反他们高度陈述怎样怎样保证可接近性。例如指南“提供等效的听觉和视觉内容的选择”。伴随每条指南的是一套关卡。关卡详细说明如何保证可接近性。每个关卡被赋予了下列优先权价值之一:)优先权价值、一个Web开发者必须满足这个关卡否则一个或更多用户将不能访问内容。)优先权价值、一个Web开发者必须满足这个关卡否则一个或更多用户将很难访问到内容。)优先权价值、一个Web开发者必须满足这个关卡否则一个或更多用户访问内容将有困难。除列举的条指南和他们相关联的WCAG还提供了一个网站可接近的级分类刻度。实现全部优先权关卡的站点符合水平A。实现全部优先权和优先权的评价双A实现所有关卡的评价三A。WCAG提供了一套好的行为保证不同程度的可达到性。虽然对WCAG的彻底的讨论在本文的范围之外以下列出的是WCAG的条指南。每条指南的关卡和他们的优先权值都能在官方网的可达到目录中找到。    提供等效的听觉和视觉内容的选择    不要仅仅依赖于颜色    使用标记和风格并尽量这么做    阐明自然语言的使用    建立优美地容易改变的表格    保证网页可以容易使用新技术    保证用户能控制改变对时间敏感的内容    保证用户界面能直接达到    为独立设备做设计    使用临时的解决方法    使用WC技术和指南    提供前后关系和方向性信息    提纲清晰的导航机制    保证文档简洁清晰创造一个适应性的、可接近的DataGridWeb控制年月提出的Web控制将ASPNETWeb控制提高到第条标准。然而即使是Hotfix仍然有一些不符合WCAG优先权的关卡。幸运的是你可以很容易地扩展现有网络控制以满足你的公司所需要的达到性要求。这可能得感谢继承性的力量。特别的我们可以通过延伸的功能让一个不符合达到性要求的网站达到要求。通过使用继承我们只需修改或者增加功能性而不需要重写功能就可以让控制符合标准。WCAG关卡说道:“保证当scripts、applets或者其他功能脚本代码不可用或者不支持时网轧仍然可用。如果这是不可能的就提供等同的信息。例如保证触发scripts脚本的链接在scripts关闭或者不支持时仍能正常工作(例如不要使用“javascript:asthelinktarget”)然而LinkButton呈现出超链接到javascript:linktarget(<ahref="javascript:doPostBack('','')"><a>)问题是不支持JavaScript的浏览器不会点击链接后返回信息。这篇文章的剩余部分考虑建造一套适应习惯的DataGrid专栏那将展示一个Web控制的按钮在用户浏览器不支持JavaScript时如何在sortableDataGrid的头部内进行控制。这时按钮控制显示的是一个<inputtype="submit">标签而不是一个带javascript:linktarget的链接。注意:条并不要求链接不使用javascript:linktarget。它唯一的客户端script评论可以在rule(l)中找到它写道:“页面利用scripting语言来显示内容或者构造基础的界面由script提供的信息将由可以通过帮助技术读取的功能性文本来识别。”这条规则要求识别的是网页内容是由script产生的还是它的行为是经过script修改的<noscript>HTML元素将解释script行为。不过我曾经听一些在为政府做项目的开发者说他们被要求不使用JavaScript功能。让DataGridColumn具有适应性DataGridWeb控制包括许多专栏都是从SystemWebUIWebControlsDataGridColumn类中派生出来的。ASPNET有种内置的DataGrid专栏:、边界专栏、按钮专栏、编辑需求专栏、链接专栏、模板专栏父类DataGridColumn为所有的DataGrid类专栏提供了道具和方法。这些道具包括标题、分类表达、可见物和其他。DataGridColumn类有两个制作DataGrid时起非常重要作用的方法:•    Initialize()–初始化DataGridColumn在DataGrid的绑定过程中每个专栏调用一次。•    InitializeCell(cell,index,itemType)–为在DataGrid的绑定过程中的每个专栏调用每个单元。Cell是在初始化过程中用实际的HTML<table>表示的TableCellIndex是单元初始化过程中的行索引ItemType是ListItemType的例举值指定所增加单元的类型(Item,AlternatingItem,Header,Footer,EditItem等等)。DataGridColumn类是表现专栏的页眉页脚。源于BoundColumn、ButtonColumn、EditCommandColumn等等用于表现DataGrid项目的类。注意:要获得更多关于创造DataGrid类的信息请参考MarcieRobillard的论文“CreatingCustomColumnsfortheASPNETDataGrid”。为了让我们的DataGrid能根据用户的浏览器是否支持Java脚本而自动适应我们要创造一个由DataGridColumn而来的一种DataGrid类。这种DataGrid专栏类叫做AccessibleDataGridColumn需推翻DataGridColumn类的InitializeCell()方法将检查DataGrid是否设置成让不支持Java脚本的浏览器进行访问。如果这两种条件是正确的AccessibleDataGridColumn将呈现出与LinkButton相反的一个button。这个类的代码显示如下:PublicClassAccessibleDataGridColumn    InheritsDataGridColumn    PublicOverridesSubInitializeCell(        ByValcellAsTableCell,    ByValcolumnIndexAsInteger,    ByValitemTypeAsListItemType)    DimsortingAsBoolean=    NotMeOwnerIsNothing    AndAlsoMeOwnerAllowSorting    AndAlsoMeSortExpressionLength>    DimsupportsJSAsBoolean=    NotHttpContextCurrentIsNothing    AndAlsoHttpContextCurrentRequestBrowserJavaScript    IfsortingAndNotsupportsJS    AnditemType=ListItemTypeHeaderAndNotMeDesignMode    ThenIfMeHeaderImageUrlLength>Then    DimbAsNewImageButton    bAlternateText=MeHeaderText    bImageUrl=MeHeaderImageUrl    bCommandName="Sort"    bCommandArgument=MeSortExpression    bCausesValidation=FalsecellControlsAdd(b)    ElseDimbAsNewButton    bText=MeHeaderText    bCommandName="Sort"    bCommandArgument=MeSortExpression    bCausesValidation=False    cellControlsAdd(b)    EndIf    ElseMyBaseInitializeCell(cell,columnIndex,itemType)    EndIf      EndSub      EndClass这种强制性的方法InitializeCell()用来查看分类是不是被激活如果当前的浏览器不支持客户端的JavaScript脚本当前初始化的项目是一个页眉且这种表现不是在MicrosoftregVisualStudioregNET的设计中的。如果测试通过另一个测试将被执行用来确定这个专栏是否有一个指定的HeaderImageUrl值。如果有它表现为ImageButton设置它的AlternateText为专栏的HeaderText。如果没有将产生一个Button并添加到单元中。注意:查看一个浏览器是否支持JavaScript仅仅是看它RequestBrowserJavaScript的性质。这个性质是基于用户代理商发送到网络服务器的数据建立的。当一个浏览器不支持JavaScript时可适应的DataGrid将在页眉中显示出Buttons比如Netscape或者Lynx。如果使用MicrosoftregInternetExplorer则将显示为默认的LinkButtons即使用户手动关闭了JavaScript支持功能。这篇文章下载了两篇MicrosoftregVisualStudioregNET的工程(两个可视化的VisualBasicNET工程):一个是包含DataGrid专栏类的类库另一个是用来验证适应性的ASPNETWeb应用。要在一个ASPNETWeb工程中使用这些DataGrid专栏类你首先需要在ASPNETWeb工程的“bin”文件夹中添加它的汇编器。(如果你要使用VisualStudioNET最简单的方法就是添加汇编器到提到的文件夹中。)其次你需要象下面这样在ASPNETWeb页中添加一个能利用这些DataGrid类的References提示:<RegisterTagPrefix="accessibility"Namespace="AccessibilityControls"Assembly="AccessibilityControls">最后为了使用这些专栏在ASPNETWeb页中添加一个DataGrid并且设置AutoGenerateColumns的性质为False。在HTML部分添加以下句法:<asp:DataGridrunat="server"AutoGenerateColumns="False"><Columns><accessibility:AccessibleBoundColumnDataField="FieldName"><accessibility:AccessibleBoundColumn><Columns><asp:DataGrid>以上就是关于这个的一切!图显示了一个使用AccessibleBoundColumn和AccessibleButtonColumnDataGrid专栏类的ASPNETWeb页的HTML部分的screenshot。图显示的是该页设计效果的screenshot。图使用AccessibleBoundColumn图设计中的AccessibleBoundColumn注意到在VisualStudioNET设计中的DataGrid可理解的专栏看起来和标准的一样。同样如果你使用一个支持JavaScript的浏览器查看一个网页(如图)DataGrid将表现的和正常的一样在专栏页眉有一个LinkButtons和ButtonColumn。然而如果你使用一个不支持JavaScript的浏览器比如Netscape那么ButtonColumn和专栏页眉将显示为Buttons(如图)。图更新后的浏览器中的AccessibleBoundColumn图旧的浏览器中的AccessibleBoundColumnASPNET中的可接近性ASPNET服务器控制着下一个ASPNET译文的运行codenamedWhidbey将自动产生默认的条标准。此外这些服务器控制也将产生WCAGcompliant标准。为了超越过去MicrosoftregVisualStudioregNET将装载一个额外的功能去自动检查HTML的条标准和WCAGcompliance。要获得更多的关于这个令人振奋的信息请查看XHTMLandAccessibilityinASPNETWhidbey来自ScottGuthrie一个ASPNET  的合作者。要获得更多关于网页可接近的信息请务必查看Microsoft'sAccessibilityhomepage。同样还有Sectionpage在上面能够找到多种多样的Microsoft产品如何做到符合标准的信息。相关文献)    SPNETDataWebControlsKickStart)ASPNETUnleashed)WebAccessibilityforPeoplewithDisabilities)AccessibilityforEverybody:UnderstandingtheSectionAccessibilityRequirements学生签名    余卉  (可添页)                                                    年  月  日指导教师审阅意见:指导教师签名                                                                                  年    月    日所译外文资料附件(含封面、封底、目录、翻译部分页码的复印件等一并予以装订)外文资料原文:ImprovingStringHandlingPerformanceinASPApplicationsJamesMussonDeveloperServices,MicrosoftUKMarchAppliesto:  MicrosoftregActiveServerPagesreg  MicrosoftVisualBasicregSummary:MostActiveServerPages(ASP)applicationsrelyonstringconcatenationtobuildHTMLformatteddatathatisthenpresentedtousersThisarticlecontainsacomparisonofseveralwaystocreatethisHTMLdatastream,someofwhichprovidebetterperformancethanothersforagivensituationAreasonableknowledgeofASPandVisualBasicprogrammingisassumed(printedpages)ContentsIntroductionASPDesignStringConcatenationTheQuickandEasySolutionTheStringBuilderTheBuiltinMethodTestingResultsConclusionIntroductionWhenwritingASPpages,thedeveloperisreallyjustcreatingastreamofformattedtextthatiswrittentotheWebclientviatheResponseobjectprovidedbyASPYoucanbuildthistextstreaminseveraldifferentwaysandthemethodyouchoosecanhavealargeimpactonboththeperformanceandthescalabilityoftheWebapplicationOnnumerousoccasionsinwhichIhavehelpedcustomerswithperformancetuningtheirWebapplications,IhavefoundthatoneofthemajorwinshascomefromchangingthewaythattheHTMLstreamiscreatedInthisarticleIwillshowafewofthecommontechniquesandtestwhateffecttheyhaveontheperformanceofasimpleASPpageASPDesignManyASPdevelopershavefollowedgoodsoftwareengineeringprinciplesandmodularizedtheircodewhereverpossibleThisdesignnormallytakestheformofanumberofincludefilesthatcontainfunctionsmodelingparticulardiscretesectionsofapageThestringoutputsfromthesefunctions,usuallyHTMLtablecode,canthenbeusedinvariouscombinationstobuildacompletepageSomedevelopershavetakenthisastagefurtherandmovedtheseHTMLfunctionsintoVisualBasicCOMcomponents,hopingtobenefitfromtheextraperformancethatcompiledcodecanofferAlthoughthisiscertainlyagooddesignpractice,themethodusedtobuildthestringsthatformthesediscreteHTMLcodecomponentscanhavealargebearingonhowwelltheWebsiteperformsandscalesregardlessofwhethertheactualoperationisperformedfromwithinanASPincludefileoraVisualBasicCOMcomponentStringConcatenationConsiderthefollowingcodefragmenttakenfromafunctioncalledWriteHTMLTheparameternamedDataissimplyanarrayofstringscontainingsomed

用户评价(0)

关闭

新课改视野下建构高中语文教学实验成果报告(32KB)

抱歉,积分不足下载失败,请稍后再试!

提示

试读已结束,如需要继续阅读或者下载,敬请购买!

文档小程序码

使用微信“扫一扫”扫码寻找文档

1

打开微信

2

扫描小程序码

3

发布寻找信息

4

等待寻找结果

我知道了
评分:

/72

asp

VIP

在线
客服

免费
邮箱

爱问共享资料服务号

扫描关注领取更多福利