为你开始silverlight理清认识

由于silverlight技术推出不久,且短短一年时间发布了两个版本1.0和1.1,大家对这个新技术的误读很多。在此通过问答的方式来给想了解这个技术的朋友们理清认识。

silverlight与WPF的关系:
 silveright
WPF
运行环境浏览器
Windows操作系统
需要框架支持浏览器插件
.net 3.0
支持的XAML对象
部分
全部
是否支持C#,VB.NET
1.1开始支持
当然
可用.net类库
极少
不受限制

silverlight到底使用什么语言?
1.0使用javascript 来操作xaml中的各种对象,因此代码文件为明文的js脚本文件。1.1中仍可使用javascript,主推.net开发的标准语言C#和VB.NET,并可使用动态语言,因此代码可编译为dll。

既然编译为dll,怎么可以不装.net框架运行?
silverlight1.1的浏览器插件,除了提供极少的.net类库外,最主要是提供了一个精简的公共运行时,可以解析和运行.net程序集。同时你完全不必担心这个运行时会跟你装的.net framework较低版本冲突。

我开发Silverlight应该使用什么语言?
取决于你从什么平台迁移而来。如果之前你是做纯Web开发的,精晓HTML和javascript,那么使用javascript必然是你的首选。如果你像我一样干.net干了很多年,那么要让你离开C#恐怕也很难。从长远趋势来看,后者会成为主流。

silverlight只适合视频播放领域吗?
绝错,视频播放只是它的一部分。由于微软的很多silverlight推广活动都是在介绍它的视频播放功能,因此给大家造成错觉,这个新玩意就是来跟flash争在线播放这块市场的。的确,它在传输速度、影片质量上都远远优于flv。但silverlight是为了应对现在飞速发展的RIA而诞生的。作为一种新的RIA解决之道,是用来开发更精彩的Web2.0应用程序的。也许三年以后你会看到很多基于silverlight的在线阅读器,在线地图,在线游戏,但是你不会看到用silverlight开发的漂浮广告(如果有,那么这个网站CEO脑子一定是进水了)。

Silverlight的系统类库与完整的.net框架系统类库有什么不同?
Silverlight提供的系统类库非常有限,由于官方还没有文档,所以你现阶段可以通过reflector或者Visual Studio的对象浏览器来查看这些类库中的对象方法属性,数量非常少,所以用不了几个小时你就知道都包含哪些东西了。具体位于c:\Program Files\Microsoft Silverlight\,总共没几个dll。

silverlight内部可不可以访问外部的,页面上的对象?
可以。javascript自然可以,.net语言可以通过HtmlPage.Document获得网页对象,之后就可以获得和创建网页上的对象了。

外部的对象可不可以访问到silverlight内部的对象?
当然可以,通过javascript。

C#如何调用外部的Javascript函数?
参见http://blogs.msdn.com/devdave/ar ... ascript-from-c.aspx
译文版http://silverlight.cn/blogs/east ... 0_from_5F00_cs.aspx

市面上的关于silverlight的书籍有哪些?
比较好的现在仅有微软的Introducing Silverlight和OReilly的Essential Silverlight(已有人翻译连载),但都是针对1.0来讲的。而且它们能告诉你的,不比google出来的多。silverlight的真正价值在1.1之后才会体现。

silverlight的竞争对象是谁?
flash是现阶段最大的竞争对象,两者相似之处太多。目前sliverlight明显处于下风。但是随着大量的.net开发人员进入这个领域,微软及控件开发商开始发布基于silvrrlight的各种控件,形势会在两三年内扭转。长期来看,各种基于ajax的Web应用程序才是最大的竞争对手。由于sliverlight天生有一个强大的.net框架作为靠山。开发人员众多,调试工具完备,开发效率高,控件会越来越多,因此可以比纯javascript的Web应用程序更有竞争力。

Silverlight部署会不会很困难?
的确,这是.net应用程序的通病。但我们正在看到可喜的变化,首先2008年奥运会的主要合作网站几乎都会以silverlight技术来进行赛事的实时报道。我用我的大脚趾算了一下,上Internet的人最少有95%要看奥运会。如果当他们打开搜狐体育,发现眼前一片空白的话,那时候你让他装什么插件他就装什么插件。同时,微软已经宣布正版更新里面会加入silverlight,那么又有一部分人会不知不觉的就装上了插件。再谈企业内部,如果上的项目真的是基于silverlight的,那么再多的电脑也得部署,总比装.net framework来得方便吧。如果企业内部有自动更新,或者可以上外网,那么网管几乎不需要做多少额外的工作,与传统的BS程序没有差别。

Silverlight最大的缺陷是什么?
现在Silverlight1.0和1.1只能访问同一域上的Web服务,成为它发展的瓶颈,希望能在2.0版本中看到变化。同时由于控件不多,还没有像其他微软Winform、ASP.NET那样迸发出强大的生命力。要知道玩微软平台玩的就是控件。