关于微软Silverlight,你应该知道的10件事

时间:2022-09-09 15:36:38

对于任何成长中的企业来说,设计一个合适的网站是一件非常重要的事情,但是如何让你的网站具有富互联网应用程序(Rich Internet Applications,RIA)的体验却不是那么简单。为了在这方面为开发者减轻负担,微软最近推出了Silverlight——这是一个针对Web开发者而推出的跨平台、跨浏览器的插件。这个目前以“候选版”形式提供的插件可以支持具有丰富用户体验的应用程序开发,其中包括多媒体、交互性和动画等。Silverlight插件目前可以支持Windows平台上的IE和Firefox浏览器,以及在Mac OS X平台上的Firefox和Safari浏览器。
    笔者使用Silverlight的时间比较长,一直在研究这个微软号称“Flash杀手”的工具。根据几个月的第一手体验,对它的技术方面的精华进行了总结。 
    随着Siverlight公众版的发布时间的日益接近,现在是时候来熟悉Silverlight以及其如何影响你的Web应用程序了。然而,关于Silverlight的信息如此众多,一时之间让人难以分辨哪些是重要的内容,哪些只是广告宣传。下面我将尽我的最大努力来总结出关于Silverlight你应该知道的十件事情。
1、Silverlight消除了跨浏览器/操作系统的问题
    对于大多数开发团队来说,开发一个可以同时支持当今比较流行的浏览器(包括IE、Firefox、Safari和Opera)的网站并不是一件容易的事情。问题不仅仅在于要编写更多的代码,还包括由此带来的呈指数级别增加的测试工作。随着开发者为不同操作系统的不同版本的浏览器开发应用程序,测试的工作量会变得非常巨大。 
    通常情况下有两种方式可以让开发人员解决这个问题:只支持一部分浏览器,或者增加质量保证人员的数量来应对大的工作量。 
    相比之下,这个Silverlight插件则不管用户的操作系统和浏览器,而提供了一个统一的开发模型。目前,Silverlight支持两种操作系统和三种浏览器。微软承诺将在以后增加对Windows和Mac平台上的Opera浏览器的支持。此外,Mono项目(.NET“开源版”项目)已经在它的Moonlight项目中取得了巨大的进步,通过该项目可以使Siverlight插件支持Linux平台。
2、Silverlight 1.1更值得期待 

    最近发布的Silverlight 1.0让许多机构开始考虑他们是否要开始使用Silverlight。虽然Silverlight 1.0具有很多重要的和有趣的功能,实际上大多数对Siverlight的采用要等到其1.1版的发布。 
    目前还处于Alpha预览阶段的Silverlight 1.1版将首次全方面支持.NET平台。这包含基本的.NET语言、C#和Visual Basic。此外,根据微软表示,Silverlight 1.1还将为动态语言提供.NET支持,诸如Ruby、Python、动态Visual Basic和受控JScript。 
    在我看来,Siverlight所支持的的重要语言是C#和Visual Basic,因为它们允许目前的.NET开发者来创建有意思的Silverlight应用程序。在Silverlight 1.1版中,任何.NET语言都将被支持,因为真正提交给浏览器的实际上是.NET assembly。 
    相比之下,Silverlight 1.0只支持在客户端解释的ECMA语言。Silverlight 1.0非常适合于那些已经在使用客户端脚本语言编程的现有Web开发者。 
    Silverlight 1.1还支持一个丰富的客户定制模型,这对确保一个综合性的开发体验是非常重要的。Silverlight 1.0的体验还比较不成熟,不太可能让第三方团体对其管理开发感兴趣。
3、Silverlight使用了开发者已经了解的技术
    Silverlight是由已经存在的微软技术组合而来的:一个混合的类似Windows展现框架的XAML(XML应用程序标记语言)、JavaScript和.NET技术。 
    如果开发者已经比较熟悉微软的.NET和Web技术,他们就能够使用他们已有的知识来创建Silverlight应用程序。即使开发者没有这些技能,掌握了这些技术也不仅仅对某个单独的产品或项目有用,它可以被应用到Silverlight应用程序以外的开发中,这与其他解决方案的情况不完全一样,例如Adobe Flash的ActionScript。 
    至于选择哪个Silverlight版本来应用到一个新项目中,这取决于你的开发团队的技能情况。如果你的开发团队主要是进行一个ASP.NET服务器端开发工作(大多数情况下是C#和VB.NET),你应该等到Silverlight 1.1版推出。如果你的团队比较熟悉客户端脚本语言,例如JavaScript,Silverlight 1.0是一个值得介绍的伟大平台。
4、Silverlight用户界面仅仅是标记语言
    XAML是Silverlight用于进行用户界面设计的混合语言。你可能已经对另一种流行的标记语言已经非常熟悉,即HTML。HTML文件是简单的文本,它包含的信息可以告诉Web浏览器如何展现一个页面的外观和给用户的感觉。XAML也做相同的事情。但是,与浏览器解释关于如何表现这个文件的指令不同的是,由Silverlight运行时来完成展现工作。 
    XAML作为标记是很重要的,因为它可以被动态的创建。无论你的开发者使用什么工具来进行服务器端的Web开发,你都可以创建动态HTML来创建页面。这个技术非常引人注目,因为你可以创建在站点中重用的HMTL代码。一个很好的例子是大多数网站的主页设计在通常情况下,页面头部和底部在整个页面中是要被重复使用的。 
    因为XAML仅仅是标记,你能够使用服务器端的技术来动态的创建XAML,就如同你的开发团队以前使用HTML的方式一样。这是一个不同的标记语言,但是技术是相同的。
5、Silverlight和Ajax技术是互补的 

    网页技术正在不断的发展。回到1990年,当Web技术最初被引入的时候,每一个人都在警告开发者应该尽可能快的转移到服务器端进行编程,这样应用程序才能提升高度。虽然这种做法从技术上讲是对的,但是它降低了用户体验。现在Ajax技术风行一时。简单的来说,Ajax直接在浏览器中编写代码,可支持更好的用户交互。其典型的例子就是Google地图服务、微软的Live地图。 
    Silverlight遵循了这个模式,它在浏览器中带来了更具表现力的用户界面。使用Ajax技术来在服务器端和客户端进行数据交换可以让Silverlight应用程序更加强大。将Silverlight的丰富的用户界面模型应用到Ajax的强大的数据传输模型中,可以得到令人难以置信的交互体验,无需强迫用户等待页面刷新时间。

6、Silverlight让开发者和设计者一起工作
    Web正在强迫开发团队来更多的思考设计和美工工作。除非特殊情况,响应用户的体验和美观的界面已经变成了一个必须要考虑的方面。通常情况下,这就要求在应用程序开发中运用美工技巧和用户界面设计技巧。今天,一般通过雇用美工开完成网站的设计工作。 
    但是,美工所使用和实现的资源通常与开发者使用的工具是不相同的。通常情况下,美工将图片文件(例如Photoshop或.jpg文件)或HTML线框提供给开发者,然后由其来综合到一个项目中。无论你使用的技术是什么,这些设计必须被整合到Web应用程序代码中。随着设计的变化,这种整合工作被一遍又一遍的重复做着。Silverlight提出了一种更好的开发过程。微软的Silverlight工具集包括了传统的开发工具,像Visual Studio,还有新的面向设计者的工具,像Expression Studio(相关文章:《微软Expression Studio能挑战Adobe吗?》,http://tech.it168.com/i/2007-06-29/200706290828093.shtml)。 
    对于Silverlight来说,主要的设计工具就是Expression Blend,它允许通过一种对设计者方便而熟悉的方式来创建XAML。对于设计人员,使用Blend就像使用Adobe Illustraor或Photoshop一样方便。它们的比较大的区别是Blend与开发者使用相同的基础文件。Blend和Visual Studio操作相同的项目文件、XAML和JavaScript文件。当一个设计被创建和修改的时候,在Silverlight中不需要使用整合步骤。设计者可以看见他们的设计与开发者所增加的相同的逻辑进行交互。这样可以帮助设计者和开发者紧密的进行合作。
7、Silverlight可以分开提交内容 

    Silverlight是以分片形式提交给Web浏览器的。这意味着代码在一个或多个封装的包中(JavaScript文件、代码集等等),设计也是作为一个或多个包(作为XAML文件)进行传输,其他资源也是被分开进行传输(包括图片、字体和视频等)。一些对Flash的单一文件提交熟悉的开发者在才开始接触Silverlight的时候可能会认为这是Silverlight平台的一个不足。 
    而实际上,我认为这是一个好的功能。相比于Flash的方式,分开的数据包使动态服务器端的内容的创建更加轻松。它让我们可以在服务器上创建引人注目的动态XAML,并简单的以其他标记的方式来传输它。Silverlight具有一个工具可以使用zip文件来打包被XAML代码所使用的多个文件,并高效的下载它们到客户端,不过它不是一个必须的要求。
8、Silverlight是新事物
    现在,Silverlight 1.0正处于候选版阶段(Release Candidate),而Silverlight 1.1则处于Alpha版。这是微软对此类技术的首次尝试。 
    相比于其他公司提供的类似服务,这个技术还不够成熟,其中与其竞争的最出名的就是Adobe的Flash和Flex产品。Flash目前的版本是9.0,它已经经历了很长的一段时间的发展,无论是在普及度还是功能丰富性都已经处于领先地位。但是,这不是说Silverlight就不会追上它。微软在从别人的成功和失败中学习方面有自己的一套东西。当然,也不是说Silverlight一定会赶上竞争对手。 
    如果你计划创建的应用程序主要是用来替代数据驱动的桌面应用程序,你可能会怀念在Silverlight中的所缺少的基本控制和数据绑定功能。Silverlight不是Windows Forms、WPF、Java Applets或Sharepoint的替代者。 
    简单来说,Silverlight不是被设计用来取代早期版本的企业应用程序。但是如果你想创建一个跨平台、跨浏览器的富用户体验的引人注目的应用程序的话,Silverlight无疑非常适合。
9、Silverlight XAML与WPF XAML的对比 

    人们很容易把XAML吹嘘为一个伟大的事物,因为微软的Windows表现层基础类库(WPF)也使用XAML。不幸的是,这些优势实际上不像它看上去那么吸引人,原因有二:WPF的低采用率和WPF XAML与Silverlight XAML的区别。 
    首先,与其他客户端技术相比,WPF的采用率还是相对比较低的。因此,考虑到XAML还未得到充分开发的事实,XAML是一个优势,但不是一个非常大优势。第二,相比WPF XAML,Silverlight XAML是一个简化版的语言,因此Silverlight XAML没有那么强大。这既是一件好事又是一件坏事。Silverlight XAML是非常易懂的,但是如果你的开发者是从WPF转到Silverlight上的,它看上去可能是不完整的。 
    在我看来,这种更简单的语法实际上更适合Silverlight,因为其运行时对终端用户来说是非常小巧和可管理的。Silverlight XAML不包含对一些对普通任务所不需要的一些内容。当然创建更多的功能到Silverlight中将是有好处的,现在的做法是非常谨慎的考虑什么功能要被增加到其中,才能保持API比较小和轻量级的特点。 
10、Silverlight是学习XAML的一个伟大方式
    正如前面所说的,Silverlight的XAML具有一个比较小的语法。这意味着它是学习XAML如何工作的一个最好的方式。试图学习XAML和了解这个技术的开发者将会把Silverlight作为创建清晰、简洁的代码的一种方式。大多数开发者将不久会开始思考他们会喜欢Silverlight的功能。当他们开始查看WPF的XAML的时候,他们会发现其中的大多数功能已经非常熟悉了。 
    相反,那些最初学习WPF的开发者在接触Silverlight后,将会需要放弃一些曾经拥有的功能。 
    目前Silverlight的运行时大约有4.5M。首次支持WPF的.NET 3.0运行时则接近30M。当然,并非所有的.NET 3.0全部内容都是WPF,但是WPF占据了其一大部分。从更小的Silverlight XAML开始是快速学习XAML的一个关键。你不会陷于高级WPF XAML概念的琐碎细节中,诸如模板、主题、数据绑定和3-D。 
    现在是时候来确定在你自己的Web网站中的什么地方来使用Silverlight。Silverlight是一个令人兴奋的技术,将给企业、客户和用户带来好处。希望本文可以帮助大家了解这个技术的真正好处和不足。