既然ASP.NET AJAX 1.0和WPF/E不是二择一的方案,而是互补的技术,两者有什么差别呢?开发者该如何并用这两种技术,达到相辅相成的效果?请看奚江华的说明。
问:Ajax技术即可强化网页的互动性,为什么还需要WPF/E?
答:传统的网页技术,由HTML到DHTML,再进化到Ajax,虽然让客户端与服务器端互动能力增加,运作速度也变快,但对于2D绘图、向量动画与影音效果的改善,仍十分贫乏。而这些不足之处正是WPF/E天生的超级强项,所以如果Ajax能与WPF/E互相搭配,将会大幅提升Web应用程序在使用者经验上的满意度。
问:ASP.NET AJAX与WPF/E两者之间如何互动?
答:ASP.NET AJAX与WPF/E之间的互动,完全不需要依赖特殊的桥接器,只要透过三个要素:W
问:如果我们已架设好ASP.NET AJAX开发环境,该如何与WPF/E整合?
答:开发WPF/E程序最基本只需要安装WPF/E Runtime Component,如果希望在Visual Studio 2005中有WPF/E的样板使用,需先安装Visual Studio 2005 SP1后,再下载安装WPF/E SDK,透过内建的工具产生WPF/E项目样板。
问:如您所言,ASP.NET AJAX项目样板要如何与WPF/E整合开发应用程序?
答:在ASP.NET AJAX专案中只需引用WPF/E的agHost.js及eventhandlers.js两个JavaScript档,即可整合开发。
问:WPF/E使用的是标准的HTML和JavaScript,所以其它类型的网页程序是否可以使用?
答:的确如此。由于WPF/E只要安装Runtime Component就能够执行,而它本身又可以透过JavaScript存取WPF/E DOM,并且执行WPF/E控制顶的方法与属性,就理论上是可以让JSP、PHP、ASP等网页语言使用,所有以HTML为基础的网页程序,都可以直接整合WPF/E程序,发挥WPF/E在动画、绘图与影音的强大能力。
不过,让JSP叫用WPF/E的想法,是我在研究WPF/E技术时,无意间想到的,所以就实际建置Apache和Tomcat,并部署WPF/E应用程序测试看看,结果发现确实可以正常浏览与执行WPF/E的应用程序。这确实令我十分吃惊。
因为实验的结果背后的意义是:WPF/E摆脱了Windows、IIS与ASP.NET,那么Linux服务器的JSP或PHP程序,按理来说,也可以自由叫用WPF/E的功能(编按:WPF/E目前尚未支持Linux的浏览器)。
微软从来不会大方开放.NET技术给其它软件使用,也不曾推出一个可以不需要买Windows、IIS就能执行的网页技术。未来微软会不会锁定WPF/E只应用在Windows平台,就不得而知了!
问:最后一个问题, WPF/E的影音多媒体、2D动画与向量绘图等功能都非常令人惊艳,但是,为什么没有支持3D?
答:WPF/E为何舍弃3D视觉效果?理由有几个重要因素:
1. WPF的3D是透过DirectX引擎着色,并且充分利用显示卡GPU的强大运算效能,但其它平台并没有DirectX引擎,为了保持WPF/E跨平台的特性,所以无法进行3D运算。
2. WPF/E是在浏览器中执行,而浏览器本身是属于沙箱(Sandbox)的环境,基于安全性的理由,并不允许直接与DirectX引擎等底层服务沟通,所以3D功能的运算,有这一层限制。
3. WPF/E Runtime Component的大小限制在1.1MB,这部分与Flash相当,所以无法塞入大量的3D函式库。而且Flash本身也因为跨平台因素没有提供3D功能,微软参照竞争者的作法,思维上也就不急着加入3D功能了。
虽然无论是WPF/E或Flash,3D的功能两大阵营都有种种不实作的考虑,但不表示这两个技术无法实现3D功能。因为有一个著名的Papervision 3D(开放源码的Flash),已经实作在Flash中加入3D功能了,所以由此看来,3D在WPF/E上运作是可行的,剩下的就是微软决定何时在WPF/E中加入3D功能罢了