大雀软件园

首页 软件下载 安卓市场 苹果市场 电脑游戏 安卓游戏 文章资讯 驱动下载
技术开发 网页设计 图形图象 数据库 网络媒体 网络安全 站长CLUB 操作系统 媒体动画 安卓相关
当前位置: 首页 -> 技术开发 -> NET专区 -> ASP.NET Whidbey 中新的代码编译功能

ASP.NET Whidbey 中新的代码编译功能

时间: 2021-07-31 作者:daque

ASP.NET Whidbey 中新的代码编译功能g. andrew duthiegraymad enterprises, inc.2003 年 10 月纲要:领会怎样运用 asp.net whidbey 更轻快地运用代码。code 目次会机动为您的站点编写翻译代码,而摘编译会使安置处事更简单。 载入正文的源代码。(请提防,在示例文献中,步调员的解释运用的是英文,正文中将其译为华文是为了便于读者群领会。)目次简介新的模块化代码模子\code 目次本钱计划器摘编译扶助在位摘编译安置摘编译intellisense 无处不在!总结简介行将推出的新版 microsoft® asp.net 引见了洪量新功效和矫正功效,它的代号为 asp.net whidbey,是按照新版 microsoft® visual studio® .net 的代号定名的。个中的某些功效运用了普通 microsoft® .net framework 本子(asp.net whidbey 即是鉴于该本子建立的)中的新功效。在那些功效傍边,最有效的功效集之一与代码编写翻译相关。正文引见 asp.net whidbey 编写翻译模子的重要变动、那些变动对编写 asp.net 运用步调的感化,以及怎样运用那些变动。矫正的功效和新的编写翻译功效不妨分为以次四个基础上面: 对模块化代码模子的矫正。 新的 code 目次。 新增的对摘编译 asp.net 运用步调的扶助。 microsoft® intellisense® 巩固功效。 新的模块化代码模子默许情景下,运用 visual studio .net 2002 或 2003 开拓的站点运用一种称为“模块化代码”的功效将可视元素(html 标志、控件等)从与 ui 关系的编制程序论理平分秋色摆脱来。当开拓职员创造一个新 web 窗体(比方 foo.aspx)时,visual studio 会机动创造一个关系的 codebehind 类文献,该文献称呼的前一局部与 web 窗体沟通,反面是 .vb 或 .cs(在于于名目运用的谈话)。类文献将经过 @ page 训令的 codebehind 和 inherits 属性与 web 窗体关系联。类文献包括事变处置代码(囊括用来将事变处置步调绑定到相映事变的代码),以及每个控件(经过 visual studio web 窗体编纂器增添到 .aspx 文献中)的辨别证明。编写翻译(天生)web 运用步调名目后,个中的一切 codebehind 类都将编写翻译到一个 .net 步调会合,该步调集将安置到 web 运用步调的 \bin 目次中。web 窗体页自己会在运转时动静举行编写翻译,而且每个 web 窗体均接受自与其关系的 codebehind 类。相关 visual studio .net 2003 和 asp.net 1.1 中的模块化代码模子的精细消息,请参见 msdn library 作品 web forms code model(英文)。固然首先的模块化代码模子表面上不错(谁不蓄意将 ui 元素与编制程序论理相辨别呢?),但它仍旧有少许缺陷: 须要从新天生。在 visual studio .net 中,运转时不会机动编写翻译 codebehind 类,所以对 codebehind 类的任何变动都须要从新天生所有名目以运用那些变动。(请提防,您不妨经过 @ page 训令的 src 属性指定对模块化代码文献进动作态编写翻译,但默许情景下 visual studio .net 不会实行此操纵。) 共享开拓题目。因为名目中的一切 codebehind 类都编写翻译到了一个步调会合,以是很难让多个开拓职员同声开拓一个名目而不会遇到瓶颈题目。 代码易被妨害。控件同声经过证明(在 .aspx 页面中)和编制程序(在 codebehind 类中)的办法生存,即使这两组控件没有精确同步,很简单使代码受到妨害。 搀杂水平减少,并且缺乏单文献扶助。在 visual studio .net 中,很多用来普及消费率的功效(囊括 intellisense 语句实行)都须要运用模块化代码。可惜的是,那些功效常常会在 codebehind 类中增添洪量对立搀杂的代码,这就爆发了代码易被妨害的题目,由于变动 visual studio .net 插入的代码很简单妨害页面。 领会到那些缺陷后,控制开拓 asp.net 和 visual studio .net whidbey 的小组确定从新商量模块化代码模子。新的模块化代码模子运用了 microsoft® visual basic® .net 和 c# 中称为限制类(在 c# 中称为限制典型)的新功效。限制类使您不妨在多个文献中设置一个类的各别局部。编写翻译时,由编写翻译器将那些局部再拉拢到一道。asp.net whidbey 运用 @ page 训令中新的 compilewith 和 classname 属性来标识要与 .aspx 页面贯串的 codebehind 限制类。经过运用限制类,再举行少许其余变动,asp.net 小组不妨实行以次手段: 无需在 codebehind 类中编写控件证明和事变绑定代码(在控件证明中经过证明的办法绑定事变)。 承诺运转时同声对 web 窗体页和 codebehind 类进动作态编写翻译,无需再为纤细的变动而从新天生所有名目。 缩小共享开拓中的文献争用局面。 对于运用模块化代码文献的开拓职员以及爱好单文献开拓(一切代码和标志均包括在 .aspx 文献中)的开拓职员,均可赢得沟通的 ide 领会。 底下给出了模块化代码模子变动前后的各别视图。以次代码不过在运用模块化代码增添新的 web 窗体(在 visual studio .net whidbey 中称之为具备代码分割的 web 窗体)时,由 visual studio 创造的默许代码:visual studio .net 2002/2003webform1.aspx:<%@ page language="vb" autoeventwireup="false" codebehind="webform1.aspx.vb" inherits="testwebapp_121602.webform1"%><!doctype html public "-//w3c//dtd html 4.0 transitional//en"><html> <head> <title>webform1</title> <meta name="generator" content="microsoft visual studio .net 7.1"> <meta name="code_language" content="visual basic .net 7.1"> <meta name=vs_defaultclientscript content="javascript"> <meta name=vs_targetschema content="http://schemas.microsoft.com/intellisense/ie5"> </head> <body ms_positioning="gridlayout"> <form id="form1" method="post" runat="server"> </form> </body></html>webform1.aspx.vb:public class webform1 inherits system.web.ui.page#region " web 窗体安排器天生的代码 " '此挪用是 web 窗体安排器所必定的。 <system.diagnostics.debuggerstepthrough()> _ private sub initializecomponent() end sub '提防:以次占位符证明是 'web 窗体安排器所必定的。 '请勿简略或变换其场所。 private designerplaceholderdeclaration as system.object private sub page_init(byval sender as system.object, _ byval e as system.eventargs) handles mybase.init 'codegen:此本领挪用是 web 窗体安排器所必定的。 '请勿运用代码编纂器窜改它。 initializecomponent() end sub#end region private sub page_load(byval sender as system.object, _ byval e as system.eventargs) handles mybase.load '此处安置用来初始化该页面包车型的士用户代码 end subend classvisual studio .net whidbeydefault.aspx:<%@ page language="vb" compilewith="default.aspx.vb" classname="asp.default_aspx" %><html><head runat="server"> <title>无题目页</title></head><body> <form runat="server"> </form></body></html>default.aspx.vb:imports microsoft.visualbasicnamespace aspexpands class default_aspxend classend namespace从上头的示例不妨领会地看到,由 visual studio .net whidbey 天生的代码越发明显、易读。无需丧失拖放功效或 intellisense 来实行此手段。\code 目次asp.net whidbey 中的另一个特殊酷且适用的新功效是减少了 \code 目次。\code 目次与 \bin 目次一致,是 asp.net 运用的一个特出目次,但它与 \bin 目次又有所各别:\bin 目委派于保存由运用步调运用的摘编译步调集,而 \code 目委派于保存要在运转时进动作态编写翻译的类文献。这使您不妨将交易论理组件、数据考察组件以及其余组件的类保存在运用步调中的某个场所,并从大肆页面运用那些类。由于那些类是在运转时动静编写翻译的,并且会被包括 \code 目次的运用步调机动援用,以是在安置名目之前不须要天生名目,也不须要精确增添类援用。您不妨放心底对组件举行变动,而后运用大略的 xcopy 或拖放操纵举行安置。除去简化组件的安置和援用外,\code 目次还极地面简化了当地化进程中运用的资源文献 (.resx) 的创造和考察进程,以及为 wsdl 文献 (.wsdl) 机动天生和编写翻译代劳类的进程。为了更好地证明上述操纵的实行进程,让咱们先来看几个示例。在第一个示例中,咱们将看到怎样创造一个大略的交易组件,以及怎样从 web 窗体页对其举行考察。本钱计划器开始,咱们翻开 visual studio .net whidbey,创造一个名为 compilation 的新 web 站点。创造 web 站点之后,ide 应与图 1 一致。图 1:visual studio .net whidbey web 站点而后,咱们将 \code 文献夹增添到该 web 站点,增添本领为右击该名目,而后采用 new folder(兴建文献夹)。此文献夹必需定名为 code,但称呼不辨别巨细写。增添文献夹后,咱们不妨增添一个新的类文献:右击 \code 文献夹,单击 add new item...(增添新项...),而后在 add new item(增添新项)对话框的 templates(沙盘)窗格中采用 class(类)项。将类定名为 calculateinterest.vb。而后增添用来计划本钱的代码(将其增添到 class 和 end class 语句之间):public function calcbalance(byval prncpl as integer, _ byval rate as double, _ byval years as integer, _ byval period as integer) as string dim basenum as double = (1 + rate / period) calcbalance = _ format(prncpl * system.math.pow(basenum, _ (years * period)), "#,###,##0.00").tostringend function创造组件类后,咱们须要窜改 default.aspx 页面以供给用来输出数据的字段,还须要挪用组件的 calcbalance 本领。为了大略起见,default.aspx 的完备列表表露如次(请提防,default.aspx 运用单文献代码模子)。default.aspx:<%@ page language="vb" %><script runat="server"> sub button1_click(byval sender as object, _ byval e as system.eventargs) dim calc as new calculateinterest label6.text = "$" & _ calc.calcbalance(convert.toint32(textbox1.text), _ (convert.toint32(textbox2.text) / 100), _ convert.toint32(textbox3.text), _ convert.toint16(dropdownlist1.selectedvalue)) label6.visible = true end sub</script><html><head runat="server"> <title> 本钱计划器</title></head><body> <form runat="server"> <asp:label id="label1" runat="server">p本金 ($):</asp:label> <asp:textbox id="textbox1" runat="server"> </asp:textbox> <br /> <asp:label id="label2" runat="server">税率 (%):</asp:label> <asp:textbox id="textbox2" runat="server"> </asp:textbox> <br /> <asp:label id="label3" runat="server">年数:</asp:label> <asp:textbox id="textbox3" runat="server"> </asp:textbox> <br /> <asp:label id="label4" runat="server">复利频次:</asp:label> <asp:dropdownlist id="dropdownlist1" runat="server"> <asp:listitem value="1">年年</asp:listitem> <asp:listitem value="4">每季</asp:listitem> <asp:listitem value="12">每月</asp:listitem> <asp:listitem value="365">每天</asp:listitem> </asp:dropdownlist> <br /> <asp:label id="label5" runat="server">节余: </asp:label> <asp:label id="label6" visible="false" runat="server"></asp:label> <br /> <asp:button id="button1" runat="server" text="计划" onclick="button1_click" /> </form></body></html>在安排视图中,窜改后的 default.aspx 应与图 2 一致。图 2:安排视图中的 default.aspx须要提防是,当您在用来挪用组件类的 <剧本> 块中键入代码时,将赢得完备的 intellisense 语句实行(囊括组件类),如图 3 所示。这是在 visual studio .net 2003 普通上的第一次全国代表大会矫正,visual studio .net 2003 不扶助效劳器端 <剧本> 块中的 intellisense。图 3:源视图中的 intellisense欣赏 default.aspx 会天生图 4 中所示的输入。填入本金、税率和年数,而后单击 calculate(计划),输入截止应与图 5 一致。图 4:default.aspx 的初始输入图 5:计划后的输入资源文献即使您往日在 visual studio .net 2002 或 2003 中运用过 web 运用步调,您确定仍旧提防到历次创造新 web 窗体页时,除去 .aspx 页以及 .vb 或 .cs 模块化文献除外,visual studio 还会创造一个具备 .resx 扩充名的配合文献(即 webform1.aspx.resx)。与大普遍 web 开拓职员一律,您大概也会忽视或试图简略那些文献,由于它们的用处和/或用法并不是很直觉。简言之,那些 .resx 文献称为“资源文献”,重要用来保存各个本子的资源,比方用来当地化的各别谈话的文古字符串。在 visual studio .net 2002 和 2003 中,资源文献须要动作天生名目过程的一局部增添到名目步调会合,而且须要导出两个定名空间,创造一个 resourcemanager 东西,并挪用其 getstring 本领以考察资源字符串。在 \code 目次的扶助下,visual studio .net whidbey 中的资源考察进程变得特殊大略,如底下的示例所示。咱们先从创造资源文献发端,仍旧运用上一个示例中的名目。开始,右击方才创造的 compilation web 站点,而后单击 add new item...(增添新项...)。在 add new item(增添新项)对话框中,采用 assembly resource file(步调合股源文献)沙盘,将资源文献定名为 strings.resx,而后单击 open(翻开)。strings.resx 文献的默许视图应与图 6 一致。图 6:在 xml 编纂器中编纂资源文献将以次项增添到数据表中(不妨将“comment”(解释)、“type”(典型)和“mimetype”(mime 典型)列保持为空):称呼 值 txtcolorprompt 请采用一种脸色: txtcolorresponsered 您采用了赤色! txtcolorresponsegreen 您采用了绿色! txtcolorresponseblue 您采用了蓝色! 此刻反复上述进程,增添一个名为 strings.en-gb.resx 的新资源文献,并将以次项增添到其数据表中,而后生存文献(由于咱们没有增添 txtcolorresponse* 的项,以是一切存户机都将运用 strings.resx 中的那些项的值):称呼 值 txtcolorprompt 请采用一种脸色: 此刻,为了充溢运用 code 目次的神秘效率,咱们须要将这两个 .resx 文献从 web 站点的根目次拖到 code 目次中。实行上述操纵后,将获得一致图 7 的截止。图 7:code 目次中的 .resx 文献为了证明此刻运用创造的资源文献是如许大略,咱们将一个 web 窗体增添到名目中,本领如次:右击 web 站点节点,而后单击 add new item....(增添新项...)。在 add new item(增添新项)对话框中,采用 web 窗体,将页面定名为 colorpicker.aspx,而后单击 open(翻开)。窜改此页面,使其与以次列表配合。colorpicker.aspx:<%@ page uiculture="en-gb" language="vb" %><script runat="server"> sub page_load(byval sender as object, byval e as system.eventargs) label1.text = resources.strings.txtcolorprompt end sub sub submit_click(byval sender as object, _ byval e as system.eventargs) label1.forecolor = _ system.drawing.color.fromname(dropdownlist1.selectedvalue) select case dropdownlist1.selectedvalue case "赤色" label1.text = resources.strings.txtcolorresponsered case "绿色" label1.text = resources.strings.txtcolorresponsegreen case "蓝色" label1.text = resources.strings.txtcolorresponseblue end select dropdownlist1.visible = false submit.visible = false end sub</script><html><head runat="server"> <title>脸色采用器</title></head><body> <form runat="server"> <asp:label id="label1" runat="server">label</asp:label> <asp:dropdownlist id="dropdownlist1" runat="server"> <asp:listitem value="red">赤色</asp:listitem> <asp:listitem value="green">绿色</asp:listitem> <asp:listitem value="blue">蓝色</asp:listitem> </asp:dropdownlist> <asp:button id="submit" text="提交" runat="server" onclick="submit_click" /> </form></body></html>当从欣赏器中欣赏 colorpicker.aspx 时,默许输入与图 8 一致。即使从为英国用户树立的体例中欣赏此页面(您不妨经过将页面包车型的士 uiculture 属性树立为“en-gb”并生存页面来模仿此景象),输入将与图 9 一致(请提防,咱们仍旧在“colour”中增添了 u)。图 8:colorpicker.aspx 的默许输入图 9:英国体例的 colorpicker.aspx 输入请提防,在 asp.net whidbey 中考察资源文献只须要一条龙代码。由于将资源文献放到 code 目次中后,即可机动嵌入和援用该资源文献,以是不须要援用任何定名空间或步调集,也不须要为考察资源字符串创造东西。并且 asp.net 还不妨决定该当运用哪个资源文献(鉴于用户欣赏器的树立),所以咱们不须要在运转时对此举行确定并作出相映的相应。asp.net 不妨扶助咱们实行这十足。摘编译扶助asp.net web 窗体的上风之一即是减少动静编写翻译后,您不妨很轻快地变动 .aspx 页,生存变动时页面将动静革新,而不须要从新编写翻译(只有不运用模块化代码)。但动静编写翻译并不是对每个运用步调都符合,并且第一次考察某个运用步调时,动静编写翻译会引导欣赏器的初始本能贬低。其余,很多功夫您大概蓄意安置一个没有源代码的运用步调。即使您遇到上述情景,您会更欣喜地领会到 asp.net whidbey 具备扶助摘编译 web 站点的功效。asp.net whidbey 扶助两种摘编译形式:在位摘编译和安置摘编译。在位摘编译在位摘编译使您不妨对 web 站点中的一切页面举行手动批编写翻译。这也是用户在您的运用步调中初次单击某个页面后爆发的操纵(前文提到的后一种情景之外),用户只需坐下来等候批编写翻译实行。 运用在位摘编译有两个重要因为:开始,它不妨制止第一次乞求页面时批编写翻译的本能贬低;其次,它使您不妨“先于”用户创造编写翻译缺点。在位摘编译也很简单实行,只需欣赏到 web 站点的根目次,增添一定的处置步调称呼 precompile.axd(熟习 asp.net 盯梢功效的用户会创造该称呼与 trace.axd 处置步调的称呼一致):http://localhost/mywebsitename/precompile.axd个中 mywebsitename 是您 web 站点的称呼。摘编译站点之后,对站点内页面包车型的士乞求也应登时实行,而不会有任何编写翻译滞后。安置摘编译第二种摘编译形式使您不妨创造所有 web 站点的可实行本子,安置这种本子不须要任何源代码(囊括 html 和其余静态文献)。所以,安置摘编译不妨提防旁人随便考察由代码表白的常识产权消息。天生的步调集和 stub 文献集不妨经过 xcopy、ftp、windows 资源处置器等安置到消费效劳器上。为了摘编译站点以举行安置,asp.net whidbey 供给了一个名为 aspnet_compiler.exe 的吩咐行适用步调。要在文献体例 web 站点上挪用 asp.net 摘编译器,须要翻开一个吩咐窗口,欣赏到 .net framework 的安置场所(<windows>\microsoft.net\framework\<本子>),而后输出以次吩咐:aspnet_compiler /v /<websitename> -p <source> <destination>个中 <websitename> 为 web 站点的称呼(即在欣赏器中输出的称呼),<source> 和 <destination> 为两个文献体例路途,辨别指向要编写翻译站点的场所以及编写翻译后的本子应输入至的场所。以咱们的 web 站点为例,输出的吩咐如次所示(请提防底下是一条吩咐):aspnet_compiler /v /compilation -p c:\websites\compilation c:\websites\compilation_compiled即使要察看 asp.net 摘编译器的一切可用选项,只需输出以次吩咐:aspnet_compiler /?请提防,某些吩咐行选项诉求 web 站点必需为灵验的 microsoft® internet 消息效劳 (iis) 运用步调本领平常处事。即使在 microsoft® windows 资源处置器中欣赏至目的目次,您会看到摘编译 web 站点后将天生一个包括 bin 目次的站点,bin 目次中包括少许步调集和刻画性文献,以及洪量与原始页面同名的 stub 文献,但不包括代码(囊括 html 和可实行代码)。即使欣赏此站点,输入与原始站点的输入沟通。请提防,不许在已举行安置摘编译的站点上运用在位摘编译,因为很大略,由于它仍旧被摘编译过了。intellisense 无处不在!对于 visual studio .net 2002 和 2003,最令我头痛的题目之一(断定很多开拓职员也有共鸣)即是对 intellisense 和其余用来普及消费率的功效的扶助不普遍。蓄意在 html 视图中将控件从东西箱中拖到页面上吗?还做不到。究竟上,在 html 视图中基础看得见东西箱的 web 窗场合板!要在 .aspx 页面上写入内嵌代码而不是运用模块化代码?不妨做到,但必需停止 intellisense、拖放功效以及其余更多功效。结果,正如我迩来在 msdn asp.net developer center 上公布的作品中提到的,在 visual studio .net 2002 或 2003 中赢得自设置控件的安排时扶助须要超过层层妨碍,囊括有点精细但生效的 xsl 窜改。令人欣喜的是,asp.net whidbey 中实行了编写翻译模子的一致,一切那些题目也都瓜熟蒂落。在 visual studio .net whidbey 中,不妨写入内嵌代码或运用新的模块化代码模子,还能赢得控件拖放、intellisense 语句实行以及一切往日您蓄意运用却因源代码办法控制而没辙运用的那些不妨普及消费率的功效。其余,对自设置效劳器控件和 web 控件的安排时扶助有了很大的矫正,囊括为源视图(html 视图在 visual studio .net whidbey 中的等效视图)中的自设置控件减少了 intellisense 语句实行。总结asp.net whidbey 中对编写翻译模子的变动,以及 visual studio .net whidbey 中相映功效的矫正无疑是一个宏大的奔腾,不只为开拓职员供给了所需的精巧性,还使她们不妨充溢运用 ide 供给的不妨普及消费率的功效。大大简化的模块化代码模子将使该功效更有效、更简略,而新增的对外嵌代码的实足扶助明显会遭到那些蓄意一切代码都坐落一个 .aspx 文献中的开拓职员的欢送。断定 \code 目次会大大普及消费率,对于那些从事兴盛赶快的中袖珍项手段开拓职员,以及那些由于编写翻译进程过于搀杂而没辙实行处事的开拓职员来说更加如许。它还为考察交易论理组件、资源文献、wsdl 文献以及其余资源供给了一种更为径直、大略的本领:经过机动编写翻译、嵌入或创造那些资源的代劳并机动援用它们,只需很少的代码即可考察那些资源。摘编译功效使开拓职员不妨轻快地普及其站点的初始本能,即使须要,还不妨经过供给功效完美的 web 运用步调(不包括源代码或 html)为要害的常识产权消息增添养护办法。结果,集一切功效于一身的 visual studio .net whidbey 无疑会为开拓职员带来特殊的领会,她们不只能从内嵌代码模子和模块化代码模子中赢得实足的 intellisense 扶助,还能察看给定页面包车型的士一切视图,开拓处事不会再因东西控制而控制于某一种款式。

热门阅览

最新排行

Copyright © 2019-2021 大雀软件园(www.daque.cn) All Rights Reserved.