Silverlight,你应该知道的10件事

对于任何成长中的企业来说,设计一个合适的网站是一件非常重要的事情,但是如何让你的网站具有富互联网应用程序(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吗?》, [url]http://tech.it168.com/i/2007-06-29/200706290828093.shtml[/url])。        对于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是一个令人兴奋的技术,将给企业、客户和用户带来好处。希望本文可以帮助大家了解这个技术的真正好处和不足。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 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方法抛出错误.随意询问更多信息.我一直在寻找解