ASP.NET网站制作之ASP.NET+Atlas创立客户端Web使用程序
我认为,可以通过更加简单的首次编译,而增加第二次编译的负担,来提高java的运行效率。只是将java源代码进行简单的等价转换,而不假设编译成某种虚拟机器的目标格式,而由本地编译器针对性的二次编译。asp.net|web|程序|创立|客户端<P> 提纲本文先容了Atlas框架,并切磋它的客户端和服务器端类库及其编程模子。别的,本文还具体分析了一个撑持Atlas功效的示例Web使用程序。1、开辟情况申明
本文中所供应的信息合用于以下手艺:Asp.net2.0,Asp.netAtlasCTP,VisualStudioProfessional2005和VisualWebDeveloper2005。
2、简介
Atlas是一个框架的代号,该框架关于客户端Web使用程序的开辟方面扩大了asp.net。该框架在供应一组客户端和服务器端类来创立跨扫瞄器兼容的AJAX作风的使用程序的同时,还引进了别的特性,比方桥接手艺,gadget,一个JavaScript的声明性剧本模子和扩大。
本文将先容Atlas框架并切磋它的客户端和服务器端类库及其编程模子。别的,本文还具体分析了一个撑持Atlas功效的示例Web使用程序。
3、基于客户端和服务器真个Web使用程序
如今,Web使用程序开辟次要针关于http客户端(扫瞄器)和服务器开辟。Asp.netWeb使用程序是基于服务器的(在该主机上运转),因而,关于由在客户端上的一个服务器控件引发的每个事务都请求一个完全的回寄。如许的情况能够用所示来形貌。
.一个针对asp.netWeb使用程序的http回馈
只在服务器端运转Web使用程序,而几近不必要(或很少必要)客户端处置,而且不会形成功能下落。不外,其弱点也很简单在一个asp.netWeb使用程序发明:一个闪灼的、停息的、不具有呼应性的和绝对不幸的UI;大概是,因为数据回寄和服务器过载而招致一个忙碌的线路。
要在asp.net使用程序办理这些功能停滞意味着,必需把一些加载处置移到客户端而且使用客户端平台所供应的手艺。客户端平台是能够经由过程剧本举行编程的,而JavaScript就是合适于这类义务的一种尺度的面向工具的编程言语。
那末,下面这些客户端平台手艺指的是甚么呢?这些客户端平台(扫瞄器)供应了以下手艺:
・文档工具模子:一种尺度化的言语自力的一组工具汇合,同意开辟者静态地把持HTML文档的布局、内容微风格。
・静态的超文本标志言语工具模子:一个扫瞄器供给商特定的特性汇合,能够用作DOM的一个扩大。数据绑定、UI效果(比方过滤器和过渡)、HTML元素举动和事务都是在这个工具模子外部所供应的一些特性。
・XmlHttpRequest工具:它同意经由过程Http检索和提交XML数据而不请求一种全部Web文档的完全的回馈或从头天生。
・一个JavaScript注释器:包括在一切的Web扫瞄器中,由它处置用JavaScript誊写的命令。JScript是微软版本的JavaScript,它最后由Netscape所创立。两种版本都遵守ECMAScript尺度―供给商中立的,跨平台的,通用目标的剧本言语。
这些手艺合在一同被称为AJAX,代表的意义是异步JavaScript+XML;而Atlas恰是一种使用这些手艺的创立Web使用程序的框架。上面的展现了一个撑持Atlas手艺的asp.netWeb使用程序。
.Http哀求和呼应一个撑持Atlas手艺的,基于客户真个asp.netWeb使用程序
<P> 4、Atlas框架提要
该框架包括了Microsoft.Web.Atlas.dll拆卸集,它包括了服务器端托管的和客户端JavaScriptAPI。
下展现了VisualStudio的工具扫瞄器窗口中的Atlas定名空间。
.在Microsoft.Web.Atlas.dll拆卸会合的定名空间
(一)服务器端库
在框架中展现的定名空间中供应的各类类担当服务器端库。该库供应与客户端JavaScriptAPI一同事情的设置、Web服务和控件类。
该Web服务类把asp.net特性,比方认证、表面、文明和环球化等信息,表露给客户端JavaScript代码以便举行异步存取。另外一方面,Atlas服务器控件类,在天生这些控件时可以“收回”JavaScript,从而使开辟者免于编写庞大的客户端剧本。
服务器端库还供应Atlasextender控件,它可以供应给asp.net控件别的客户端功效。
以下控件是服务器端库的一部分:
・ScriptManager控件:供应了在一个Web页面上的一切的Atlas特性,比方部分页面更新,定制和库客户端剧本参考和天生,针对客户端异步存取的Web服务援用,而非常处置是由该控件办理的。每个必要完成Atlas功效的asp.netWeb页面或用户控件都必要声明这个控件的单个实例。为了在一个页面上利用ScriptManager控件,你可使用以下声明性语法:
<atlas:ScriptManager
ID="ScriptManagerinstanceidentifier"
<!--enablesordisablespartialpagerenderingusingUpdatePanelcontrols-->
EnablePartialRendering="booleantrueorfalse"
<!--IfsettofalsetheAtlasRuntime.jsfile,whichprovidesbasicAtlasfunctionalityisreferencedbydefault.
IfsettotruetheAtlas.jsfile,whichprovidestheentireAtlasfeaturesetisreferencedbydefault.
Thedefaultvalueistrue-->
EnableScriptComponents="booleantrueorfalse"
OnPageError="invokedeventhandleronPageError"
runat="server">
<Scripts>
<atlas:ScriptReference
<!--toreferencecustomscriptfiles-->
Path="pathto.jsfile"
<!--toreferenceclientlibraryfilesthatarenotincludedautomatically-->
ScriptName="nameofscriptfilee.g.AtlasUIGlitz"/>
</Scripts>
<Services>
<atlas:ServiceReference
<!--IfsettotruethecontrolgeneratesaJavaScriptproxyobjectforasynchronousaccessforthereferencedWebService.
Ifsettofalseitdoesnt.-->
GenerateProxy="booleantrueorfalse"
Path="pathtoaWebservice(e.g.asmx)file"
Type="Webserviceclassname"
/>
</Services>
<ErrorTemplate>
<!--Markupforrenderingunhandledexceptionmessagesforasynchronouspostback.
Partialrenderingshouldbeenabled.ThetemplatehastodefineaninputbuttonwithanattributesIDofvalue"okButton"andrunatofvalue"server"toclosethemessage.-->
</ErrorTemplate>
</atlas:ScriptManager>
・ScriptManagerProxy控件:关于内容页面和用户控件来讲,假如它们的父页面已具有一个界说好的ScriptManager控件,那末这个控件能够用于参考别的剧本和服务。可是,该控件不克不及被ScriptManager控件用于删除剧本和服务参考。
・UpdatePanel控件:当经由过程ScriptManager控件撑持一个Web页面的部分天生时,UpdatePanel控件能够用于指定页面上的地区―可以被自力地利用异步回馈举行更新。以下声明性语法用于在一个Web页面中界说一个UpdatePanel控件:
<atlas:UpdatePanel
ID="UpdatePanelinstanceidentifier"
<!--IfModeattributeissettoAlwaysasynchronouspostbackstriggeredwithintheregionupdateitscontentsautomatically;
IfitissettoConditionaltheregionisupdatedinresponsetoaregisteredtrigger-->
Mode="Always|Conditional"
<!--IfRenderModeattributeissettoBlockthecontentwithintheUpdatePanelisrenderedusinga<DIV>element;
IfitissettoInlinea<SPAN>elementisusedasacontainerforthecontentwithintheUpadatePanel-->
RenderMode="Block|Inline"
runat="server">
<ContentTemplate>
<!--Contenttoberenderedwithintheregion-->
</ContentTemplate>
<!a”ACollectionofobjectsthattriggeranasynchronousupdateonthepanel.TheseObjectsdontneedtobedeclaredwithintheregion.-->
<Triggers>
<ControlValueTrigger
ControlID="objectinstanceidentifier"
PropertyName="propertyvaluethattriggerstheupdate"/>
<ControlEventTrigger
ControlID="objectinstanceidentifier"
EventName="thenameoftheeventthattriggerstheupdate"/>
</Triggers>
</atlas:UpdatePanel>
・TimerControl:它在客户端天生一个准时器,由该客户端以指定的工夫距离触发异步回馈。该控件一般用作一个请求准时更新内容的UpdatePanelat控件的触发器控件。为了以声明体例界说这个控件,必要利用以下语法:
<atlas:TimerControlEnabled="booleantrueorfalse"ID="Controlinstanceidentifier"
<!--IftheEnabledpropertyissettotruethecontrolisdefinedontheclient-side.Ifnotitisnt.-->
Interval="Intervalinmilliseconds.thedefaultis60000."
OnTick="invokedserver-sideeventhandlername"runat="server"/>
・Extender控件:它们利用增添的客户端功效扩大asp.net控件。比方,AutoCompleteExtender控件撑持asp.net文本框控件的主动完成举动,而DragOverlayExtender控件撑持拖动举动。
・开辟者还可使用一个与Atlas控件工具箱一同供应的Visualstudio2005工程模板创立定制的asp.netAtlas控件扩大器。
(二)客户端库
客户端库包含一组(.js)JavaScript文件,它们被打包为Microsoft.Web.Atlas.dll拆卸会合的资本。
包括在这个类库中的工具供应了以下特性:
・JavaScript言语扩大:同意开辟者以JavaScript编程,而同时还能利用利用OO布局,比方定名空间、类、列举、接口和数据范例。
・JavaScript基库扩大:这包含用于调试,跟踪和字符串操纵的别的工具。
・扫瞄器兼容性:关于定制剧本和由Atlas控件天生的剧本的主动扫瞄器可移植性。
・收集功效:由位于Sys.Net定名空间外部的工具供应。这些功效使得与主机的异步通信和实行远程办法的编程相称简单。
・HTML控件包装器:它们同意开辟者利用xml剧本增加特性―比方数据绑定,举动和到很多HTML控件和元素的举措。
・Atlas客户端控件:撑持开辟者利用JavaScript或XML剧本创立丰厚的使用程序;这些包含在Sys.UI.Data定名空间外部的控件,比方ListView,DataNavigator,ItemView,XSLTView,等等。
・Xml-Script:一个声明性剧本模子,它同意开辟者利用一品种似于asp.net的编程模子誊写客户端代码。Atlas声明性剧本被利用以下语法界说在<script></script>标签外部:
<scripttype="text/xml-script">
<pagexmlns:script="http://schemas.microsoft.com/xml-script/2005">
<references>
</references>
<components>
</components>
</page>
</script>
全部客户端库都包括在Atlas.js文件中,而且当在一个页面中界说一个ScriptManager控件时被默许地参考。别的地,为了削减在客户端天生的剧本的数目,我们能够把ScriptManager控件的EnableScriptComponents设置为false而且利用包括在AtlasRuntime.js文件中的该库的一个简化版本。别的,专门的库文件,比方AtlasDragandDrop.js,AtlasUIMap.js,AtlasUIGlitz.js等等,都能够按名利用ScriptManager控件的剧本汇合属性举行援用。
<P> 5、Mash-up和Gadget(widget)
Atlas中引进了两种新的特性:桥接手艺和gadget。桥接手艺同意Web使用程序消耗来自多种远程Web服务的数据―当毗连到一个单一的主机上时。这些消耗一个或更多的远程服务的Web使用程序一般被称作是Mash-up。为了完成这一目标,该框架引进了桥接文件,以.asbx扩大名标记。实在,桥接文件是XML文件―同意我们以声明体例来界说到服务的毗连并完成数据转换。下展现了一个经由过程Atlas桥接手艺消耗(mashing-up)来自多种远程Web服务上的数据的Web使用程序:
.消耗来自多种远程服务的数据
关于分歧的平台存在分歧范例的gadget。一个基于web的gadget是一个可移植的web使用程序―可以被公布就任何gadget宿主网站上,比方,live.com或start.com。一个基于web的gadget的构成以下:
・一个Xml声明:它包括该gadget自己的信息(题目,形貌,出书商,构建信息,等等)和到该gadget组件的链接(.jss和.css文件)。以下是一个针对一个假造的gadget(widget)的示例manifest文件:
<?xmlversion="1.0"?>
<rssversion="2.0"xmlns:binding="http://live.com">
<channel>
<title>Widgetalpha</title>
<link>http://www.contoso.com</link>
<description>Whatdoesthisgadgetdo?</description>
<language>en-gb</language>
<pubDate>Date</pubDate>
<!--Javascriptfunctionentrypoint;usedbythehosttoloadthegadget.-->
<binding:type>Widget.alpha</binding:type>
<item>
<description>TheJavaScriptcodecomponent</description>
<link>http://www.contoso.com/Gadgets/Widget/alpha.js</link>
</item>
<item>
<description>Thisaddsstyletothegadget</description>
<link>http://www.contoso.com/Gadgets/Widget/alpha.css</link>
</item>
</channel>
</rss>
・JavaScript代码:包括在该manifest文件链接到的.js文件中;它界说将被宿主的可移植组件。
・式样表:它界说主机用来天生下面gadget的式样。
6、测试驱动的框架
本文将在asp.net使用程序中利用AtlasUpdatePanel控件和部分页面熟成手艺。
这里所供应的示例是一个Amazon电子商务服务Web客户端使用程序,它利用City,Cuisine和Neighbourhood搜刮参数来搜刮在全部美国的餐馆。该示例使用程序利用了一个UpdatePanel控件来举行异步回馈和部分页面熟成;从而使使用程序更加敏捷和更具交互性以改善用户体验。
(一)需求
・微软VisualStudio2005,.Net框架2.0及最新的AtlasCTP。
・注册(收费)AmazonWeb服务以获得存取键ID―用它来存取该电子商务服务。
(二)设置网站
经由过程利用与框架的CTP一同安装的Atlas工程模板创立一个新的网站:
1.翻开Visualstudio2005。
2.点击“文件”菜单,选择“新建”,然后点击Website。
3.从“NewWebsite”对话框当选择“Atlasproject”模板,地位,工程名和开辟言语(VB或C#)。本例中所利用的言语为C#。
上面的显现了在VisualStudio2005中的“NewWebSite”对话框。
.“NewWebSite”对话框窗口
(三)为SOAP哀求设置服务
1.登录到你利用AmazonWeb服务创立的帐户而且利用供应的链接来保留到你的盘算机上的WSDL文件中。
2.从.Net框架2.0SDK命令提醒窗下利用WSDL.exe工具为你在第1步保留的WSDL中的服务天生一个代办署理类:
Wsdl<options><URL|path>
3.从你用VisualStudio创立的工程中翻开SolutionExplorer窗口,并右击工程文件,指向“Addasp.net”文件夹而且点击“App-Code”。
4.右击SolutionsExplorer窗口中的“App-Code”文件夹而且点击“AddExistingItem”。
5.从“AddExistingItem”对话框中扫瞄到你后面所创立的代办署理文件,选择它而且点击“Add”;这将把服务代办署理文件增加到工程中。
<P> (四)创立客户端UI
1.在SolutionsExplorer中,双击Default.aspx文件,从而在VisualStudiodesigner窗口中翻开它。
2.请确保你位于源码视图中,然后在文档的<formid="form1"runat="server">和</form>之间复制并粘贴以下代码:
<atlas:ScriptManagerID="ScriptManager1"EnablePartialRendering="true"runat="server"EnableScriptComponents="true"/>
<asp:LabelID="Label1"runat="server"Width="366px"Font-Bold="True"Font-Names="VerdanaRef"Font-Size="Small"Height="19px">SEARCHFORRESTAURANTSWITHAMAZON.COM</asp:Label><br/>
<br/>
<asp:LabelID="Label2"runat="server"Text="AccessKeyID:"Width="128px"Font-Names="VerdanaRef"></asp:Label>
<asp:TextBoxID="TxtBAccessKey"runat="server"Width="182px"Font-Names="VerdanaRef"></asp:TextBox>
<asp:RequiredFieldValidatorID="RequiredFieldValidator1"runat="server"ErrorMessage="*"
Width="16px"ControlToValidate="TxtBAccessKey"></asp:RequiredFieldValidator><br/>
<asp:LabelID="Label3"runat="server"Text="Cuisine:"Font-Names="Verdana"Width="58px"></asp:Label>
<!--TheListBoxCuisineListBoxholdsallpossibleentriesfortheCuisineparametersupportedbytheamazonECS-->
<asp:ListBoxID="ListBoxCuisine"runat="server"Rows="1"Width="206px"OnSelectedIndexChanged="ListBoxCuisine_SelectedIndexChanged"Font-Names="VerdanaRef"AutoPostBack="True">
<asp:ListItemText="Americancuisine"Value="Americancuisine"></asp:ListItem>
<asp:ListItemText="Asiancuisine"Value="Asiancuisine"></asp:ListItem>
<asp:ListItemText="Seafood"Value="Seafood"></asp:ListItem>
<asp:ListItemText="Greek"Value="Greek"></asp:ListItem>
<asp:ListItemText="Indian"Value="Indian"></asp:ListItem>
<asp:ListItemText="Italian"Value="Italian"></asp:ListItem>
<asp:ListItemText="Japanese"Value="Japanese"></asp:ListItem>
<asp:ListItemText="Chinese"Value="Chinese"></asp:ListItem>
</asp:ListBox>
<br/>
<asp:LabelID="Label5"runat="server"Font-Names="Verdana"Text="City:"
Width="61px">
</asp:Label>
<!a”TheAmazonE-CommerceServicesupportsonlythecitiesdefinedaslistitemsoftheListBoxcontrol-->
<asp:ListBoxID="listBoxCity"runat="server"Height="19px"Width="221px"AutoPostBack="True"EnableTheming="False"Rows="1"OnSelectedIndexChanged="listBoxCity_SelectedIndexChanged"Font-Names="VerdanaRef">
<asp:ListItemText="Seattle"Value="Seattle"></asp:ListItem>
<asp:ListItemText="Boston"Value="Boston"></asp:ListItem>
<asp:ListItemText="SanFrancisco"Value="SanFrancisco"></asp:ListItem>
<asp:ListItemText="NewYork"Value="NewYork"></asp:ListItem>
<asp:ListItemText="Washington,D.C."Value="Washington,D.C."></asp:ListItem>
<asp:ListItemText="Chicago"Value="Chicago"></asp:ListItem>
</asp:ListBox>
<br/>
<asp:LabelID="Label6"runat="server"Font-Names="VerdanaRef"Text="Neighbourhood:"Width="59px">
</asp:Label>
<asp:TextBoxID="TextBox3"runat="server"Width="143px"Font-Names="VerdanaRef">
</asp:TextBox>
<asp:Buttonid="submitSearch"runat="server"Height="23px"Text="Submit"
Width="54px"Font-Names="VerdanaRef"/>
<br/>
3.切换到计划视图;计划器应当天生如所示的UI。
.示例使用程序的UI
(五)设置UpdatePanel控件
1.切换到源码视图;在标注前面的<br和/>标签之间增加以下代码:
<atlas:UpdatePanelID="UP1"EnableViewState="true"Mode="Conditional"RenderMode="Inline"runat="server">
<ContentTemplate>
</ContentTemplate>
<Triggers>
</Triggers>
</atlas:UpdatePanel>
当触发一个已注册的控件中的事务时,UpdatePanel控件被有前提地举行更新。注册的事务在服务器端被经由过程异步回寄处置。
2.在UpdatePanel控件的<ContentTemplate>和</ContentTemplate>元素之间,到场上面的标注:
<atlas:UpdateProgress>
<ProgressTemplate>
<asp:LabelID="Label4"runat="server"Font-Names="VerdanaRef"Font-Size="X-Small"
Text="Loading..."Width="81px"></asp:Label>
</ProgressTemplate>
</atlas:UpdateProgress>
<br/>
<asp:RepeaterID="RP1"runat="server">
<ItemTemplate>
</ItemTemplate>
</asp:Repeater>
<asp:LabelID="NoResults"runat="server"Width="449px"Font-Names="VerdanaRef"></asp:Label>
<br/><br/>
<asp:LabelID="PriceRange"runat="server"Font-Names="VerdanaRef"Font-Size="X-Small">
</asp:Label>
<br/>
<br/>
<asp:LabelID="labelError"runat="server"Width="451px"Font-Names="VerdanaRef">
</asp:Label>
当正在更新地区时,UpdateProgress控件显现一个忙唆使器(“加载中……”)。
Repeater和Label控件卖力存储搜刮了局及潜伏的毛病动静了局。
3.为了注册将触发部分更新的控件,把以下代码片段放到UpdatePanel控件的<Triggers>和</Triggers>元素之间:
<atlas:ControlEventTriggerControlID="submitSearch"EventName="Click"/>
<atlas:ControlEventTriggerControlID="listBoxCity"EventName="SelectedIndexChanged"/>
<atlas:ControlEventTriggerControlID="listBoxCuisine"EventName="SelectedIndexChanged"/>
<P> (六)在客户端使用程序增加代码
切换到计划视图,双击天生的Web表单以显现页面响应的代码部分(Default.aspx.cs)。选择Ctrl+A来选择一切的主动天生的代码,并按Delete键扫除文档。然后,增加以下代码以消耗AmazonECS服务而且显现搜刮了局:
usingSystem;
usingSystem.Data;
usingSystem.Configuration;
usingSystem.Web;
usingSystem.Web.Security;
usingSystem.Web.UI;
usingSystem.Web.UI.WebControls;
usingSystem.Web.UI.WebControls.WebParts;
usingSystem.Web.UI.HtmlControls;
publicpartialclass_Default:System.Web.UI.Page
{
protectedAWSECommerceServiceAmazonECS=newAWSECommerceService();
protectedItemSearchSearch=newItemSearch();
protectedItemSearchRequestSearchRequest=newItemSearchRequest();
protectedItemSearchResponseSearchResponse;
protectedvoidsubmitSearch_Click(objectsender,EventArgse)
{
Search.AWSAccessKeyId=TxtBAccessKey.Text.ToString();
SearchRequest.SearchIndex="Restaurants";
SearchRequest.Cuisine=ListBoxCuisine.SelectedValue;
SearchRequest.City=listBoxCity.SelectedValue;
SearchRequest.Neighborhood=TextBox3.Text.ToString();
SearchRequest.ResponseGroup=newString[]{"ItemAttributes"};
Search.Request=newItemSearchRequest{SearchRequest};
try
{
SearchResponse=AmazonECS.ItemSearch(Search);
if(SearchResponse.Items==null)
{labelError.Text="AServererrorhasoccured.";}
else
{
ItemsresponseItems=SearchResponse.Items;
Item[]response=responseItems.Item;
if(response!=null)
{
foreach(ItemIinresponse)
{
NoResults.Text="";
LabelResults=newLabel();
LabelSep=newLabel();
Results.Text="<strong>"+I.ItemAttributes.Title.ToUpper()+"</strong>"+"<br/>"
+I.ItemAttributes.Address.Address1.ToString()+"<br/>"
+I.ItemAttributes.Neighborhood+"<br/>"
+"Tel:"+""+I.ItemAttributes.PhoneNumber+"<br/>"
+"PriceRating:"+""+priceRating(I.ItemAttributes.PriceRating)+"<br/>"+"<br/>";
Sep.Text="<br/>";
RP1.Controls.Add(Results);
RP1.Controls.Add(Sep);}
PriceRange.Text="Priceperperson(basedonentree,appetizerorsalad,onenon-alcoholicdrinkplustaxandtip)";
}
else
{
NoResults.Text="Nosearchresultsfound.";
PriceRange.Text="";
}
}
}
catch(Exceptionex)
{
labelError.Text=ex.Message.ToString();
}
}
privatestringpriceRating(stringstr)
{
if(str=="1"){
return"under$15";}
elseif(str=="2"){
return"$15-30";}
elseif(str=="3"){
return"$30-45";}
elseif(str=="4"){
return"over$45";}
else{returnnull;}
}
protectedvoidlistBoxCity_SelectedIndexChanged(objectsender,EventArgse)
{}
protectedvoidListBoxCuisine_SelectedIndexChanged(objectsender,EventArgse)
{}
}
(七)运转使用程序
1.为了运转使用程序,在计划视图下翻开Default.aspx页面。选择TxtBAccessKeyTextBox控件;在Properties窗口中把你的AmazonWeb服务存取键ID增加到该控件的Text属性中。
2.按F5键以运转该使用程序。
3.利用使用程序的历程是相称间接的。从Cuisine:列表框当选择一种cuisine范例,从City:列表框当选择一个乡村,然后点击Submit按钮。作为选择,你还能够细化你的搜刮。
(八)从扫瞄器中利用AmazonECSWeb服务
1.利用一个桥接文件来指定消耗远程Web服务的代办署理类、挪用该服务的办法和怎样操纵前往的数据。
2.利用ScriptManager控件参考桥接文件。
3.利用html控件,JavaScript和客户端Atlas数据组件来利用服务便可。
7、结论
Asp.netAtlas是一个创立基于客户真个Web使用程序的框架。这个框架在供应客户端和服务器端API用来创立跨扫瞄器兼容的AJAX作风的使用程序的同时,还引进了别的一些特性,比方桥接手艺,gadget,一个JavaScript声明性剧本模子和扩大,等等。
总之,本文先容了该框架的典范利用框架;还经由过程利用AtlasUpdatePanel控件先容了部分(Partial)页面熟成手艺,这是在asp.netWeb使用程序中增添AJAX功效和改善用户体验的最复杂的办法。java的设计机制:首先产生一个中间码,第二部编译为本地(机器)码。这个机制有很大的缺点。 同时也感谢博客园给我们这个平台,也感谢博客园的编辑们做成专题引来这么多高人指点。 Asp.net脚本的出现,为ASP空间带来了更高的稳定性,同时也为程序员建站提供更高环境! 是指转换后的Servlet程序代码的行数。这给调试代码带来一定困难。所以,在排除错误时,可以采取分段排除的方法(在可能出错的代码前后输出一些字符串,用字符串是否被输出来确定代码段从哪里开始出错)。 ASP.net1.1和2.0在程序上的语法也有很大不同,现在2.0属于新出来的,不知道半年后会不会有3.0(说笑一下)。Windows2003系统自动支持ASP和ASP.net环境,不用安装任何程序。Asp.net属于编译语言。ASP的最大不同(ASP属于解释语言)。 那么,ASP.Net有哪些改进呢? 众所周知,Windows以易用而出名,也因此占据不少的服务器市场。 代码逻辑混乱,难于管理:由于ASP是脚本语言混合html编程,所以你很难看清代码的逻辑关系,并且随着程序的复杂性增加,使得代码的管理十分困难,甚至超出一个程序员所能达到的管理能力,从而造成出错或这样那样的问题。 在调试JSP代码时,如果程序出错,JSP服务器会返回出错信息,并在浏览器中显示。这时,由于JSP是先被转换成Servlet后再运行的,所以,浏览器中所显示的代码出错的行数并不是JSP源代码的行数。
页:
[1]