Silverlight:你需要知道的十件事情

简单的说,Silverlight是一个跨平台跨操作系统的插件,使Web开发者能够在浏览器中建造丰富的媒体体验和RIA应用。目前发布的版本为 RC版,可用于Windows平台上的IE和Firefox浏览器,以及Mac OS X平台上的Firefox和Safari浏览器。

  在公共发布版本来临之际,现在正是了解Silverlight的好时候,本文解释了微软的Silverlight 10个主要特点,希望能够帮助你更多了解Silverlight的好处和局限性。

  本文作者Shawn Wildermuth是微软MVP(最有价值专家)(C#),Wildermuth Consulting Services的创始人,已经从事 软件开发 超过20年。目前Shawn正在全美做Silverlight的巡回授课,教人们如何在自己的项目中使用Silverlight。

  1、Silverlight是跨平台/浏览器的

  对于大部分开发团队,创建一个能够在所有流行的浏览器(包括IE、Firefox、Safari、Opera)上完美运行的Web站点是很具挑战性的事情。这不只是增加 代码 实现的问题,还要进行大量复杂的测试。

  通常面对这个问题的解决方法有两个:仅支持少数最流行的浏览器或者增加质量保证人员的数量。

  而Silverlight允许“一次开发,到处运行”,微软已经承诺会支持Windows和Mac上的Opera,而Silverlight的Linux版Moonlight也正在开发中。

  2、Silverlight 1.1 才是好戏开场

  对于目前的Silverlight 1.0 RC版,仍有很多组织在考虑是否开始在此平台上进行开发。Silverlight 1.0已经有了许多重要有趣的功能,但还有更多的精彩内容仍需到1.1版才会出现。

  Silverlight 1.1(目前仍处于Alpha预览)初次开始支持.NET,包括了基本的.NET语言:C#和Visual Basic。而微软说,Silverlight 1.1将会带有.NET对动态语言的支持,例如Ruby、Python、动态VB和托管JScript。等到1.1正式发布,所有.NET语言的支持都会 加入近来,这等于给浏览器添加了.NET编译器。

  3、Silverlight 使用开发者们已经掌握的技术

  Silverlight由微软现有的一些技术创建而成,如XAML,JavaScript以及.NET技术。如果你已经很熟悉微软.NET和Web开发技术,这些都可以应用在Silverlight的开发中。

  你选择开始新项目的Silverlight版本主要基于开发团队的技术方向。如果你的开发团队主要做ASP.NET 服务器端 开发(主要是C#和 VB.NET),你就需要等待1.1的正式发布,如果你的团队专攻像JavaScript这类的客户端开发,Silverlight就正适合你。

  4、Silverlight的用户界面使用标记语言——就像HTML

  Silverlight使用XAML来进行用户界面设计。你可能已经很熟悉另一种标记语言了:HTML。HTML文件是纯文本的,它只需要告诉浏览器如何渲染网页,XAML也是这样的,只不过,执行文本命令的不再是浏览器,而是Silverlight。

  无论开发者在服务器端用什么 工具 进行怎样的开发,最后你总要创建动态的HTML页面。XAML是标记语言,因此你可以使用服务器端技术动态创建XAML,就像你的开发团队动态创建HTML一样。标记语言有所不同,但技术并未变化。

  5、Silverlight和AJAX技术互为补充

  网络是不断进化的。回到1990年代,所有人都告诉开发者应该把尽可能多的执行都放在服务器端,技术上没问题,但是这相当影响用户体验。现在AJAX已经广泛流行开来,把代码直接放置在浏览器中就可以有效改善用户体验,这方面最典型的代表就是Google Maps。

  Silverlight也参照了这样的模型,允许在浏览器中创造更加丰富的用户界面,而采用AJAX和服务器端交换数据使Silverlight更加强大,结合了Silverlight丰富的用户界面和AJAX的异步数据传输,用户将得到非常舒适的交互体验。

  6、Silverlight允许开发者和设计者协同工作

  网络要求开发者们必须越来越多地考虑设计和美观问题,对用户的快速响应和直观的界面已经成为开发标准,这需要在开发中同时加入美术设计和用户体验规划。

  然而,美术师和程序员使用完全不同的资源和工具。通常情况是,美术师把图片文件或者HTML框架发给开发者以整合应用程序代码,当设计做出更改,整合就没完没了地进行。

  Silverlight能提供更好的开发模式。微软提供给Silverlight的 工具包 是一系列复杂工具的集合,例如Visual Studio,还有连接设计者的工具,成为Expression Studio。

  对于Silverlight,主要的设计工具是Expression Blend,它可以按设计者们所熟知的方式创建XAML内容,使用起来和Adobe Illustrator或者Photoshop差不多。但不同之处在于Blend和开发者使用同样的工程项目文件,XAML和JavaScript文件, 就像在Visual Studio中那样。当设计完成并修整好,不需要进行中间的整合过程,设计者就可以看到开发人员直接将其作为项目素材加入开发项目。这样做有助于设计者和 开发人员更加紧密地协同工作。

  7、Silverlight将分包发布

  Silverlight会分成多个数据包发送给浏览器,也就是说代码会分成一个或多个包(JavaScript文件,编译文件等等),设计也分成一个或多个包(XAML),以及其他文件(包括图片、字体、视频)。

  刚开始习惯了Flash的单文件分发模式的开发者会不大理解为什么这样做。实际上,这是有好处的。分离的包比现在的Flash完整打包更有助于在服 务器端动态地创建内容,并按照标记语言自由组合。Silverlight也提供功能可以使用zip文件把所有XAML代码使用的内容打包给用户下载。

  8、Silverlight是崭新的

  在写就本文的时候,Silverlight 1.0为RC版,Silverlight 1.1则刚刚发布Alpha版,这项技术与类似的其他公司同类技术(尤其是Adobe的Flash和Flex)相比还不够成熟。Flash目前已经到了 9.0,它花了很长时间才达到现在的普及度,但这不是说Silverlight追不上来,微软在学习他人的经验和教训方面很有一手(可以参考一下Java 和.NET),当然这也不是绝对的。

  Silverlight不是Windows Forms、Windows Presentation Foundation(WPF)、Java Applet或者Sharepoint的替代者,简单的说,如果你需要创建丰富的,优秀的,同时具备跨所有平台和操作系统的应用,那么 Silverlight正合适。

  9、Silverlight XAML对照WPF XAML

  要把XAML吹捧成为微软WPF的特长之处并不难,但是它实际上并没有看起来那么优秀,这一方面是由于WPF较低的采用率,另一方面就是WPF XAML和Silverlight XAML的区别了。

  首先,WPF的采用率相对于其他客户端技术而言(例如Visual Basic 6和.NET的Windows Forms)比较低,因此XAML也基本上被荒废了。

  第二,Silverlight XAML的语法比WPF XAML要简单一些,当然也会比WPF XAML弱一点,这既是好事也是坏事。Silverlight非常容易上手,但是从WPF转移而来的开发者可能会觉得有点不够用。

  按我的感觉,较简洁的语法对于Silverlight实际上是最合适的,因为运行环境对于用户而言越精简越好。Silverlight并不需要把所 有东西都囊括进来,对于一个轻量级客户端而言没有这个必要。当然,要能给Silverlight增加更多的功能肯定不错,但是目前不能仅仅考虑这些,我们 需要谨慎考量加入多少,同时还能保持接口的简洁和高效。

  10、Silverlight非常适合学习XAML

  就象前一节所说的,Silverlight有着轻量级的XAML语法,这意味着它对于学习XAML的工作方式非常有益,引导那些正在学习XAML的 开发者创建简明清晰的代码,帮助他们快速理解Silverlight的功能特性,当他们开始投向WPF的XAML的时候,就会发现更多的功能和特性已经准 备就绪了。

  相反的,如果开发者从WPF开始应用XAML,随后换到Silverlight的话就不得不扔掉许多特性。Silverlight的运行时库目前只有大约4.5MB,.NET 3.0运行时库(第一个支持WPF的)则接近30MB。

  Silverlight是一个对公司、消费者、用户都大有裨益的新技术,看了上面这些,现在你可以决定该如何在你的Web战略中应用Silverlight了。

 

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


如何在Silverlight4(XAML)中绑定IsEnabled属性?我试过简单的IsEnabled=“{BindingABC}”,但这不起作用–MenuItem总是启用.提前感谢您的线索!干杯编辑:有趣的是,当设置Mode=TwoWay时,绑定似乎有效.但是,在菜单项上移动鼠标后,将更新上下文菜单的外观.这是异步工作吗?右键
我正在编写我的第一个vb.net应用程序(但我也会在这里标记c#,因为我确信即使是一个c#人也可以使用类似的.net实现来回答这个问题).我申请的简短说明:我的桌面应用程序将仅在win平台上运行,使用vb.net,它是一个简单的网吧管理软件,在服务器上运行服务器gui,在工作站上运行客户端gui,
ProcessFile()是在UIThread上运行还是在单独的线程上运行.如果它在UIThread上,如何将文件请求和ProcessFile()移动到单独的线程?varxClient=newServiceReference1.Service1SoapClient();xClient.Retrieve_File_Completed+=newEventHandler<ServiceReference1.Retrieve_Fi
我从同行那里听说,对sharepoint的了解对职业生涯有益.我们不在办公室使用sharepoint.所以不知道如何开始.这些是我的新手问题>学习共享点值得努力吗?>学习sharepoint的资源在哪里?>我是否应该考虑开发哪些参考项目?感谢您的意见.解决方法:SharePoint以如此积极的方式改变了我的职业
我正在尝试保存一个类我的类对象的集合.我收到一个错误说明:Thecollectiondatacontracttype‘System.Collections.Generic.Listcannotbedeserializedbecauseitdoesnothaveapublicparameterlessconstructor.Addingapublicparameterlessconstructorwillf
我需要根据Silverlight中的某些配置值设置给定控件的Style.我想有可能从两种可用的样式(静态资源)中选择一个控件样式.我试图做一些像:<TextBoxStyle="{BindingABC}"/>哪里publicstringABC{get{return"{StaticResourceMyStyle}";}}不幸的是,这不起作用.你有
我刚买了第一台Android设备,我喜欢它…我也很喜欢你可以创建自己的应用程序并随意分发它们.我已经阅读了一些关于Monodroid的内容,而且显然微软希望将Silverlight放在这些设备上,尽管没有太多关于它们的信息……但是Moonlight呢?如果Monodroid就像Mono……为什么我们需要它呢?相反
我们的ASP.NET网站允许用户执行各种查询,并根据从数据库查询的结果显示网络图(如UML图).目前,我们正在生成一个位图并显示它.但由于我们需要支持允许用户以交互方式显示/隐藏某些块的功能,因此我们计划使用Silverlight来渲染图形.我们还计划在未来添加更多互动.我有两个问题:>ASP
我正在开发一个Silverlight4应用程序,我已经创建了一个自定义的启动画面.乍一看,自定义启动画面运行良好–非常好.几天后,我开始注意到闪屏不再显示,屏幕仍然是空白.这似乎只发生在我打开多个指向同一个应用程序的IE选项卡/窗口时.前几个将加载正常,而以下选项卡/窗口将保持“白
这是我的XAML:<ImageVerticalAlignment="Center"HorizontalAlignment="Center"Source="{BindingInput,Converter={StaticResourceByteArrayToBitmapConverter}}"><Image.Rend
问候,我有一个ItemsControl,我更改了模板,为绑定的ItemsSource中的每个对象显示一个RadioButton.但是ItemsSource可以为空,当它为空时我想显示默认值.像“绑定列表中没有可供您选择的项目”……我想到的一种方法是将ItemsControl.Visibility设置为Collapsed,并将TextBlock.Vsibi
堆栈溢出的第一个问题……我是C#的新手,但在学习它时却非常直接.几分钟前我才看到这个tutorial.通过各种c#技术阅读WCF,WPF,Silverlight,c#和asp.net,这是很多技术都可以用c#来实现.我将创建一个Web应用程序c#.我认为SilverLight似乎是我最好的选择.该应用程序将拥有一个数
我正在使用MVVM(Model-View-ViewModel)模式编写应用程序,并利用MicrosoftP&P团队的Prism和Unity位.我有一个包含项目列表的视图.这些项包含在ViewModel中的ObservableCollection中,View中的列表框是数据绑定的(ViewModel设置为View的DataContext).在ViewModel中,我有一个运行的
我有一个应用程序,它在首次运行时显示免责声明页面.选择“接受”或“拒绝”后,您再也看不到该页面了.但是,当您在第一次运行后按后退键尝试关闭应用程序时,您将返回免责声明页面,然后再次点击该页面,返回主页面,然后再次退出.这仅在应用程序第一次运行时发生,但我希望应用程序在
我正在尝试在SilverlightforWindowsPhone中使用异步HttpWebRequest.一切都很完美,直到我到达我应该打电话的地方privatestaticManualResetEventallDone=newManualResetEvent(false);...request.BeginGetResponse(newAsyncCallback(GetResponseCallback),request);a
嗨,我有两个Writablebitmap,一个来自jpg,另一个来自png,并使用此方法在循环中混合颜色:privatestaticColorMix(Colorfrom,Colorto,floatpercent){floatamountFrom=1.0f-percent;returnColor.FromArgb((byte)(from.A*amountFrom+to.A*perc
我需要开发一个程序,它包含一个图像(png),中心有一个洞.在这个图像下将有一个框架,我想点击图像的透明孔我可以点击框架内的按钮.我不知道是否有一种方法可以通过图像或其他方式传播点击.谢谢你的帮助解决方法:你在图像上将IsHitTestVisible设置为false,然后点击浏览.
我正在研究一个silverlight应用程序,我发现List没有Find扩展方法说,List<Something>list=newList<Something>(something);list.Remove(list.Find(e=>e.id==10));没有查找扩展方法我错过了什么?解决方法:它不包括在内以减小运行时的大小.建议您使用LINQ扩展,例如First
我试图弄清楚如何设置Path元素的Data属性来获得此类型的软角:alttexthttp://i42.tinypic.com/1rzu6w.jpg现在我只有这样的尖角:alttexthttp://i42.tinypic.com/2eeleah.jpg我尝试用椭圆玩,但我无法得到我想要的东西.谢谢最佳答案:路径的段具有IsSmoothJoin属性,默认为false.
问题我有一个在远程服务器上运行的restfulWeb服务.我已经制作了一个使用它的WP7应用程序,所以我知道它有效.我正在将应用程序移植到SilverlightWeb应用程序并遇到问题.我已经包含了代码的简化版本以及引发的错误.EndGetResponse方法抛出错误.随意询问更多信息.我一直在寻找解