zoukankan      html  css  js  c++  java
  • Atlas 第一篇[ScriptManager]

      1上个星期我们讨论了微软以Atlas形式来应对AJAX的潮流。Atlas基本上就是一个用来创建跨浏览器、跨平台的AJAX应用程序的ASP.NET 2.0框架。
      2
      3微软最近发布了四月社区技术预览(April Community Technology Preview)并声明认为已经准备好发布live许可证了。了解到这之后,我们将讨论Atlas的核心:ScriptManager类。
      4
      5关注的焦点
      6
      7ScriptManager类管理着Web页面上的所有Atlas组件。此外,它还会处理部分页面的更新并生成客户脚本,让你可以通过使用代理对象访问来自JavaScript的Web服务方法。
      8
      9每个使用Atlas组件的页面都只能带有一个ScriptManager控件,它在Web页面的开始部分公开。它会注册Atlas脚本,把它们放在页面上供使用。如果你正在使用ASP.NET 2.0,那么你可以在主页面上放一个ScriptManager控件,这样它就可以被使用主页面的所有页面用到了。ScriptManager控件的句法见列表A:
     10
     11<atlas:ScriptManager
     12EnablePartialRendering="true|false"
     13EnableScriptComponents="true|false"
     14ID="string"
     15runat="server" >
     16<Scripts>
     17<atlas:ScriptReference
     18Browser="browser reference"
     19Path="script file path"
     20ScriptName="script file name" />
     21</Scripts>
     22<Services>
     23<atlas:ServiceReference
     24GenerateProxy="true|false"
     25Path="server path name"
     26Type="type name" />
     27</Services>
     28</atlas:ScriptManager> 
     29现在让我们更加仔细地看看ScriptManager控件声明的各个部分。
     30
     31EnablePartialRendering:这个属性用来表示是否激活部分生成。部分生成用来只重新加载部分页面。如果为“真”的话,那么异步控件的常规回发就只显示发送给客户端的增量变化。 
     32EnableScriptComponents:这个属性用来控制Atlas的哪一部分在默认情况下可以用在客户端上。它会确定用于用户界面组件、行为、行为绑定和XML脚本编写的Atlas脚本在默认情况下是否可以被下载到客户端上。如果为“伪”的话,你可以在ScriptReference元素里下载具体的组件。 
     33ScriptReference:这个元素(它必须被包括在Scripts元素里)让你可以能够添加没有自动包括进来的脚本。脚本要用Path属性来指定,你还可以用Browser属性来为脚本指定一个浏览器。Atlas的确包括一些在默认情况下不会被发送给客户端的脚本;这些脚本可以用ScriptName脚本来添加。这样的脚本包括AtlasUIDragDrop、AtlasUIGlitz和AtlasUIMap。 
     34ServiceReference:这个元素可以让你指定要被用在页面脚本里的Web服务。Type属性可以是任何合法的MIME类型。GenerateProxy属性让你能够临时中止为Scripts集合里列出的服务生成代理对象。 
     35列表B里的Web页面使用了一个本地Web服务(尽管这个服务可以是任何服务):
     36
     37<%@ Page Language="C#" %>
     38<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
     39"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
     40<html xmlns="http://www.w3.org/1999/xhtml" >
     41<head id="hd">
     42<title>TR Sample</title>
     43<atlas:ScriptManager ID="scriptManager" runat="server" 
     44EnablePartialRendering="false"
     45EnableScriptComponents="false" >
     46<Services>
     47<atlas:ServiceReference Path="testService.asmx" GenerateProxy="true"聽 />
     48</Services>
     49<Scripts>
     50<atlas:ScriptReference Path="AtlasRuntime.js" />
     51</Scripts>
     52</atlas:ScriptManager>
     53<script type="text/javascript">
     54function callWebService() {
     55testService.displayTime("request data", handleResponse);
     56}

     57function handleResponse(response) {
     58alert("Server response: " + response);
     59}

     60</script></head>
     61<body>
     62<form id="frmTR" runat="server">
     63<div>
     64<p><input type="button" onclick="callWebService()" value="Call Web Service" /></p>
     65</div></form></body></html> 
     66页面会声明Web服务参考,后者后来用在JavaScript里来使用其唯一的方法。部分页面生成被禁用,调用所有的脚本库也被禁用。ScriptReference部分参考了AtlasRuntime脚本库(随Atlas一起安装),所以基本的功能是可用的。这个服务的源代码见列表C:
     67
     68<%@ WebService Language="C#" Class="testService" %>
     69using System;
     70using System.Web;
     71using System.Web.Services;
     72using System.Web.Services.Protocols;
     73[WebService(Namespace = "http://tempuri.org/")]
     74[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
     75public class testService : System.Web.Services.WebService {
     76[WebMethod]
     77public string displayTime() {
     78return DateTime.Now.ToString();
     79}
     }
     
     80虽然你被严格限制在一个Web页面上只能使用一个ScriptManager控件的实例,但是你可能想要往页面上添加额外的脚本或者服务参考。在这种情况下,ScriptManagerProxy控件就有了用武之地。
     81
     82<atlas:ScriptManagerProxyrunat="server" id="smProxy">
     83
     84</atlas:ScriptManagerProxy> 
     85当ScriptManager对象已经被声明的时候,如果你需要使用额外的脚本(ScriptReference元素),这个控件就非常有用。一个典型的例子用到了ASP.NET 2.0,并把一个ScriptManager对象放在主页面里。使用主页面的页面可能需要使用额外的脚本,所以代理对象可以用了。它的句法与普通的ScriptManager控件是一样的。
     86
     87其他控件
     88
     89尽管ScriptManager控件是基于Atlas的Web页面的焦点,但是这个框架还提供了一些直接可用的控件,这样通过少量的编程就可以增强Web页面的效果。下面就是最新版的Atlas里包括的一些控件:
     90
     91AutoCompleteExtender:让你扩展文本框控件来提供自动完成功能。这个Web服务被用来提供建议数据。 
     92DragOverlayExtender:你可以把服务器控件变成一个可以随着鼠标和键盘活动的浮动控件。 
     93ProfileScriptService:用来创建一个用来访问ASP.NET用户配置文件的客户端配置组件。 
     94TimerControl:用来创建一个客户端计数器,按照固定的时间间隔进行回发。 
     95Atlas的Web网站上有很多例子,但是DragOverlayExtender控件是最酷和最容易实现的一个。基本上,你可以创建一个控件并把它指派给DragOverlayExtender控件的TargetControlID属性的实例,以便让其工作。列表D里的例子说明了它把图像移动到页面周围的用法:
     96
     97<%@ Page Language="C#" %>
     98<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
     99"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    100<html xmlns="http://www.w3.org/1999/xhtml" >
    101<head id="hd">
    102<title>Drag-n-Drop</title>
    103<atlas:ScriptManager ID="scriptManager" runat="server" 
    104EnablePartialRendering="false"
    105EnableScriptComponents="true" >
    106</atlas:ScriptManager>
    107</head>
    108<body>
    109<form id="frmTest" runat="server">
    110<asp:Imagerunat="server" ImageUrl="~/testimage.JPG" id="imgTest" />
    111<atlas:DragOverlayExtender ID="doe" runat="Server">
    112<atlas:DragOverlayProperties Enabled="True" TargetControlID="imgTest" />
    113</atlas:DragOverlayExtender>
    114</form></body></html> 
    115其他信息
    116
    117系统管理员没有必要使用Atlas——你只用把Microsoft.Web.Atlas.dll文件复制到项目的\bin目录下,并把Atlas的\ScriptLibrary目录里的.js复制到你的项目里就行了。
    118
    119此外,虽然Atlas打着微软的标签,但是它适用于所有的浏览器。基于Atlas控件的所有样式都是用层叠样式表(CSS)完成的。此外,Atlas允许你根据需要开发针对不同浏览器的内容。
    120
    121最后,有些观点认为Atlas只是把开发人员从Firefox和Opera上转移开的一种策略,这两个浏览器仍旧不断在浏览器市场上获得更多的份额。虽然我们确信微软了解其竞争对手的行动,但是我并不十分担心这个软件巨头的动机;我只希望得到能够让我为客户创建强大解决方案的技术。Atlas可能(或许无法)在它最终发布的时候满足这一要求,但是到目前为止我还是对已经看到的东西十分满意。
    122
    123
  • 相关阅读:
    深入Spring Security魔幻山谷-获取认证机制核心原理讲解
    灵魂拷问:你真的理解System.out.println()打印原理吗?
    解决分布式React前端在开发环境的跨域问题
    “我以为”与“实际上”
    前端:如何让background背景图片进行CSS自适应
    VSCode如何设置Vue前端的debug调试
    【JDBC】总结
    【JDBC第9章】Apache-DBUtils实现CRUD操作
    【JDBC第8章】数据库连接池
    【JDBC第7章】DAO及相关实现类
  • 原文地址:https://www.cnblogs.com/RuiLei/p/520325.html
Copyright © 2011-2022 走看看