您的位置:首页 > 其它

什么是Silverlight,Silverlight入门简介

2009-09-13 09:05 369 查看
本文原创作者:姚毅

虽然Silverlight号称要Rich-Client打到Flash,但是其工作机制和Flash相差还是很大的。
Flash的工作方式更像ActiveX控件,或者说就是ActiveX控件,其代码是二进制的(也许不是,但至少是不可读的),由Flash Player控件负责解释。Flash Player更像一个虚拟机来维持Flash运行。

而Silverllight完全可以将源代码放到网站后台上,前台所有的实现都是通过javascript,至于为什么还要下载一个silverlight插件,原因在于silverlight中用到的javascript对象浏览器本身没有提供。

那么Silverlight到底是运行在服务器端还是运行在客户端的呢?Flash可是实实在在运行在客户端的。
Silverlight更像Ajax,是在服务器端和客户端同时运行,期间通过XML传递数据,或者更确切的说,Silverlight是运行在服务器端的,但是因为应用了Javascript+XAML这种特殊的Ajax,使Silverlight可以提供丰富的客户端操作。

那么一个基本的Silverlight到底包括哪些部分呢?
首先,可以既然Silverlight是运行在网页之中,就要有一个HTML文件存在,在<head>部分包含了两个独立的js脚本文件
这两个js脚本分别用于创建silverlight和检查本地是否安装silverlight插件

其中包括Silverlight的部分既不是<embed>也不是<object>,而是<div>,这个<div>由<Head>中的<Style>定义一个样式,而<div>里面是一行简单的Javascript函数调用。这个函数在前面包含的单独js文件中。而函数的功能就是创建silverlight

再来看这个js脚本,它负责使用silverlight专属的对象提取一个XAML文件,并把这个XAML转换成Silverlight。这个XAML文件就如同Flash的SWF文件一样,不过SWF文件既包括资源又包括逻辑,并且是不可读的,而XAML只包括资源和表现形式,不包括程序逻辑,并且是可读的。

每一个XAML文件都对应一个相同文件名+".cs"或者".vb"的服务器端代码。这个和ASPX的CodeBeside很相似。当然我还没有研究这个cs文件是否可以编译后放在这里,按照微软一贯的做法,应该是可以的。

下面看看具体流程

1.从浏览器发出HTTP请求,服务器接到后返回HTML、Javascript

2.Javascript首先检查是否安装了Silverlight插件,如果没有则提供下载

3.Javascript开始创建Silverlight,并从服务器下载XAML文件

4.Silverlight的Javascript检查到XAML文件后,根据需要向服务器请求程序逻辑(不管后台是cs的源代码还是编译好的,程序逻辑始终是后台负责编译并执行的,然后把执行结果透过XML传递给前台)。由于请求和响应的内容很短,是类似Ajax的,所以如果网络带宽够用的话应该不会很卡。

5.本地Javascript接到响应后根据响应结果显示效果

其实,到底是cs编译好在前台运行还是在后台运行我是不知道的,但是由于silverlight是在.net下开发的,并且运行silverlight的客户机不需要安装.net框架。而且可以跨平台,所以猜测是在服务器端运行的。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: