在交互性要求强的场合,SilverLight使用Ajax是愚蠢选择

在交互性要求强的场合,SilverLight使用Ajax是愚蠢选择,第1张

概述确切来说,SilverLight是一种嵌入到浏览器的桌面程序,和之前的ActiveX,flash的action script和java的appelt相近。 SilverLight比ActiveX更好用,因为使用ActiveX要编写出交互性强的程序,必须要掌握复杂的COM,复杂的C++类型和结构体,对于一些没有编写windows程序经验的Web初哥程序员来说,那是天书。别跟我说VB 6.0也可以写A 确切来说,Silverlight是一种嵌入到浏览器的桌面程序,和之前的ActiveX,flash的action script和java的appelt相近。 Silverlight比ActiveX更好用,因为使用ActiveX要编写出交互性强的程序,必须要掌握复杂的COM,复杂的C++类型和结构体,对于一些没有编写windows程序经验的Web初哥程序员来说,那是天书。别跟我说VB 6.0也可以写ActiveX,对于连多线程都没有自带,建线程都要去调用 *** 作系统C++ API的VB 6.0来说,要写功能强大、性能优越的ActiveX(例如跟硬件交互),根本就无能为力。 说多了C++的东西了,虽然C++的确强大。但不是本文范围,Silverlight和强大的ActiveX相比,避免繁琐的打包过程和复杂的GUID,他更通用,只要目标电脑已经装过Silverlight客户端,就能通行,什么都不需要再安装,就像flash和appelt一样。 和flash相比,Silverlight唯一的劣势就是通用性,因为大部分的网站都已经用到了flash。不过Silverlight和flash相比却很多优点,在界面的效率上明显占优,而且支持多线性,在性能上这是单线程的flash所不能比拟的,更让人受不了的就是他支持使用开发windows应用程序(不是底层程序)最强大的.net去编写。 上面说了太多了,不过别以为和本文的标题没有关系。我上面所说的观点,都围绕着效率。Silverlight面世的主要目的:1 是因为界面执行效率(能直接和显卡打交道),是占cpu和内存超高的HTML 和 Js根本无法相比的 ,让界面计算能力一直是瓶颈的Web开发看到了希望,加上DirectX 3D的支持,相信不久的将来魔兽争霸能出现在IE上面 ; 2 是因为他的后台数据处理能力,Silverlight支持多线程,支持使用http通信,更让人兴奋的却是他支持使用TCP/IP长连接通信。 看到这里,可能很多没有开发过CS结构通信程序的Web开发的人员会愤愤不平地对我说,说我白痴,以为AJAX是最强大的通信方式。其实在我看来,AJAX在实时处理方面,一直是非常低效的技术。而使用Silverlight的主要目的,其实很多时候想使用他强大的交互能力,这和低效的AJAX通信明显就存在矛盾。 由于http无状态的通信特点,在交互性和实时性要求较高的场合,不得不使用AJAX,因为http通信模式下,客户端请求完成之后,和服务端的连接是断开的,所以服务器假如有最新的消息,是无法通知客户端的。这就要求客户端不断地使用AJAX定时发http请求到服务器去刷数据,假如这个间隔设置太短,不断的http请求会增加通信负担和客户端的处理负担,假如设得太长,实时性不高,这就是为什么一般的游戏都是CS结构而非Web结构的原因之一。 很多web开发人员没有接触过基于TCP/IP的Socket通信,其实Socket通信才是交互性最强的通信,既然Silverlight的交互性这么强,为什么我们还要使用AJAX?为什么还要走回原路?假如你设计的系统是一套交互性和实时性要求比较高的系统,使用AJAX去服务端提取数据,再用Js去通知Silverlight,那你就是蠢材。因为你没有利用Silverlight的优势,你没有使用Socket或者Remoting这些基于长连接的通信方式,Silverlight只是你的摆设罢了。 使用Socket通信能做到长连接,连接一直不断,这种情况下服务端是能直接通知客户端的,以事件的方式通知,能做到真正的实时,假如你还去用Js通过XMLhttp这种AJAX方式定时去服务端取数据,再通知Silverlight,那我建议你别再用Silverlight了,因为你相当于带着电视从社会主义回到原始社会,永远找不到电源,发挥不了Silverlight的作用。 当然,我说的是交互性要求比较高,实时性要求比较强的场合(其实这就是使用Silverlight的主要原因之一)。在性能要求不高的时候,也可以使用AJAX和Webservice去取数据,别根本说Webservice也高效,那只是开发效率上的高效,不是通信方式上的高效,其实它和AJAX一样是基于无状态的http的,无法做到真正的实时。假如你还没有明白Webservice,Socket和Remoting这些通信方式微妙的区别,还处于认为用那种都无所谓的阶段,那我有建议,有必要去补充一下windows Service通信程序的知识,学习一下windows编程的基础,不要单单只学Web,而是整个windows编程,学windows的运作原理,坐井观天是永远学不好Silverlight的。 总结

以上是内存溢出为你收集整理的在交互性要求强的场合,SilverLight使用Ajax是愚蠢选择全部内容,希望文章能够帮你解决在交互性要求强的场合,SilverLight使用Ajax是愚蠢选择所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://www.outofmemory.cn/web/1045876.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-24
下一篇 2022-05-24

发表评论

登录后才能评论

评论列表(0条)

保存