`
gstarwd
  • 浏览: 1554677 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

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

阅读更多
转载自网上 为了便于对silverlight的理解。


确切来说,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的。
分享到:
评论

相关推荐

    jQuery Ajax前后端使用JSON进行交互示例

    本篇文章主要介绍了jQuery Ajax前后端使用JSON进行交互示例,实现前端通过jQuery Ajax传输json到后端,后端接收json,对json进行处理,后端返回一个json给前端,有兴趣的可以了解一下。

    如何在Silverlight控件中与Html元素交互

    在Web开发领域,Silverlight是一种强大的技术,它允许开发者创建丰富的、交互式的用户界面,而HTML则是构建网页的基础。...在实际开发中,根据项目需求和浏览器兼容性,灵活选择合适的方法,是提高用户体验的关键。

    Asp.net Ajax 与Silverlight实战手册源码5章

    1. **XAML**:Silverlight使用XML标记语言XAML来描述UI布局和元素。 2. **数据绑定**:如何将UI元素与后台数据源绑定,实现动态更新。 3. **动画和视觉效果**:利用Silverlight的动画系统创建流畅的用户体验。 4. **...

    HighCharts与使用Ajax交互

    HighCharts后台交互数据模板,使用Ajax交互传递数据,显示图示

    Asp.net Ajax 与Silverlight实战手册源码第4章

    在Asp.net环境中,Silverlight通常用于增强网页的视觉效果和交互性,例如视频播放、数据可视化和游戏等。 【第四章实战内容】 在《Asp.net Ajax 与Silverlight实战手册》的第四章中,可能涵盖了以下几个主题: 1. ...

    Silverlight 4官方版

    **Silverlight 4官方版** 是微软公司推出的一款强大的富互联网应用程序(RIA)开发平台,主要用以构建和运行丰富的、交互性强的Web应用程序。它作为一个浏览器插件,提供了丰富的媒体体验和富有交互性的功能,使得...

    silverlight技术应用实例

    1. **UI设计**:Silverlight使用XAML进行UI布局和设计,这是一种XML标记语言,可以轻松地定义控件、布局和样式。XAML使得非程序员也能通过直观的拖放方式构建UI。 2. **数据绑定**:Silverlight支持数据绑定,这...

    silverlight学习

    2. **JavaScript扩展**:Silverlight能与JavaScript无缝集成,支持ASP.NET AJAX,允许开发者使用JavaScript或IronPython、C#、Visual Basic等语言编写应用程序。 3. **网络支持**:内置对TCP上的HTTP支持,便于网络...

    [Silverlight:ASP.NET与Ajax开发实战]一书源程序代码

    4. **源程序代码分析**:书中提供的源程序代码将展示如何将Silverlight、ASP.NET和Ajax结合使用,创建出功能强大且互动性强的Web应用。这些代码可能包括数据绑定、动画效果、服务调用、页面导航等多个方面的示例。...

    简单Ajax实例(带前后台交互)

    本实例以JSP页面为例,详细阐述Ajax在前后台交互中的应用。 一、Ajax基础概念 1. XMLHttpRequest对象:它是Ajax的核心,负责与服务器建立连接并发送请求,接收响应。 2. 异步:Ajax的核心特性是异步处理,这意味着...

    Silverlight与Html交互

    在IT领域,Silverlight曾是一种流行的富互联网应用程序(RIA)框架,由微软开发,用于创建交互式、多媒体丰富的Web应用。HTML(超文本标记语言)则是网页内容的基础,两者之间的交互是实现更复杂Web应用功能的关键。...

    Silverlight漂亮界面主键

    总的来说,"Silverlight漂亮界面主键"和"MicSoft.Common.SL.dll"代表了过去在Silverlight开发中对于创建美观、交互性强的Web应用程序的追求,以及通过共享库提高开发效率的实践。虽然Silverlight的时代已经过去,但...

    silverlight视频聊天Demo

    在视频聊天Demo中,可能使用了Silverlight的RIA服务或者WCF(Windows Communication Foundation)服务,来处理客户端和服务器之间的通信。这些服务能够处理音视频数据的编码、解码、压缩和传输,确保视频聊天的流畅...

    Silverlight4.0安装包

    总的来说,Silverlight 4.0是一个功能强大的开发框架,为开发者提供了构建高性能、互动性强的Web应用程序的工具。尽管现在Silverlight已被HTML5等技术逐渐取代,但其在RIA领域的贡献仍然值得我们回顾和学习。如果你...

    Ajax与servlet后台交互,数据类型JSON

    在Web开发中,Ajax(Asynchronous JavaScript and XML)与Servlet的交互是常见的技术组合,用于构建动态、异步的用户界面。本知识点主要探讨如何利用Ajax进行前后台数据交换,特别是当后台服务(Servlet)返回的数据...

    基于ThinkPHP的Ajax数据交互研究.pdf

    本文将从 Ajax 技术的介绍开始,分析基于 ThinkPHP 的 Ajax 数据交互技术,并比较传统的 Ajax 数据交互和 ThinkPHP 的 Ajax 数据交互,最后提出 ThinkPHP 的 Ajax 数据交互技术的优势。 Ajax 技术是动态网页技术的...

    Silverlight

    3. **数据绑定和通信**:学习如何在Silverlight控件中绑定数据,以及如何利用Silverlight的Out-of-Browser功能与Asp.net服务器进行通信,如使用WCF服务或ASP.NET AJAX服务。 4. **媒体支持**:了解如何嵌入和播放...

    Python - Flask 使用Ajax 实现多文件上传

    使用XMLHttpRequest对象是实现Ajax的关键,但在现代浏览器中,更推荐使用jQuery的$.ajax()方法或者fetch API,它们提供了更友好的API。 **五、Flask处理文件上传** 1. 首先,创建一个Flask路由来接收上传的文件: `...

    Silverlight实现各种统计图表

    在IT行业中,Silverlight曾是一种广泛用于创建丰富的交互式Web应用程序的技术,特别是在数据可视化方面,它提供了强大的功能。本资源的标题"Silverlight实现各种统计图表"表明它包含了一个使用Silverlight开发的库,...

    ajax实现java文件下载

    在现代Web应用中,用户对交互性和体验性的需求日益提高,传统的文件下载方式往往会导致页面刷新,影响用户体验。为了克服这一问题,开发人员通常会利用Ajax技术来实现异步文件下载,使得用户在下载文件的同时仍能...

Global site tag (gtag.js) - Google Analytics