下载了一个 ASP.NET AJAX Beta 版,卸载原来的 Atlas,执行安装过程安装到\Program Files\Microsoft ASP.NET目录下。区别是 Microsoft.Web.Extensions.dll 被安装到 GAC 中,并且在安装指引中有这样一段话:
“The installation package installs the assembly (Microsoft.Web.Extensions.dll) in the Global Assembly Cache (GAC). Do not include the assembly in the Bin folder of your AJAX-enabled Web site.”
在 web.config 的 system.web-compilation-assemblies 节增加了
<add assembly="Microsoft.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" />
虽然我并没有把这项设置添加到配置文件,只是把 DLL 文件放在 BIN 目录下就成功执行了一个简单的例子,不过不知道是否会有什么负面影响。另外配置文件中增加了一个 <system.webServer> 节,但在machine.config中看到这是一个忽略的配置节,相信是为 IIS 7 准备的东西了。
通过异步通信层(Asynchronous Communication Layer)可以连接到网络终端并且实现 Javascript 调用 Web Service。其实不论框架的实现机制如何,XMLHTTP 终究都是 WEB 异步通信的核心。
小翻译一段原文:异步通信层提供使用不同 client executors 的扩展。executor 可以理解为是为客户端请求与服务器之间通信提供接口的关键 Component。可以自定义 executor 插件。 <XMLHttpExecutor Class>
WebRequest Class 可以通过 Get 或 Post 向服务器发送 HTTP 请求。IFRAME 可以避免页内容变化导致的频繁修改,但缺点就是载入的优先级低于父页,如果一个 IFRAME 中页的内容相对较大就会让整个页初次载入的呈现效果较差,可以通过这个方法获取原本嵌入在 IFRAME 中的内容。另:JSON 也是一个有趣的内容。
看了两个示例:如何通过 JavaScript 调用一个 Web Service 和 How To: Call a Web Service from JavaScript using Server Types,JavaScript 调用带有服务器端类型的方法和以前略有不同,需要在 Web Service 额外声明 Attribute,以前是通过 web.config 文件中增加 <webServices enableBrowserAccess="true" />
以前曾经参考《Building Mash-ups with "Atlas"》做过一个获取天气的例子,不过通过 Reflector 看了一下,发现原来的birdge*全部都消失了。那么新版是通过什么样的方案来解决 Cross site/domain Web Service 调用的呢?
我试了一下通过 Sys.Net.WebRequest 是可以获取 XML 代码的,但安全问题在各浏览器中表现不一,不是警告就是禁止。
中间插播广告:Windows Live Contacts Gadget(beta)。
我也试了一下 PageMethods,不过在隐藏代码的模型中也不是太好用,所以也只好借鉴盗链相册图片的原理(汗自己...)在 .aspx 文件中通过 XMLHTTP 对远端的 Web Service 调用是获取 XML 并处理了。
大家都在适应变化,博客园老赵点滴翻译了一组文章,序挺有意思的。
http://www.cnblogs.com/Orivan/archive/2006/10/23/536868.html