Fiddler工具介绍一
这个工具我已经使用比较长时间了,对我的帮助也挺大,今天我翻译的微软的文章,让更多的朋友都来了解这个不错的工具,不恰当之处请大家大家多多指正。
介绍:
你是不是曾经疑惑过你的web程序和IE是如何交互的?你是不是遇到过一些奇怪的而你又无法解决的性能瓶颈?你是不是对那些发送给服务器端的cookie 和那些你下载下来的被标记为可缓存的内容感到好奇?
Fiddler官方网站及下载地址:http://www.fiddlertool.com/Fiddler/dev/
微软的Fiddler能够帮助你回答以上的问题,不但如此,它还是一个http调试代理,它能够记录所有的你电脑和互联网之间的http通讯,Fiddler 可以也可以让你检查所有的http通讯,设置断点,以及Fiddle 所有的“进出”的数据(指cookie,html,js,css等文件,这些都可以让你胡乱修改的意思)。 Fiddler 要比其他的网络调试器要更加简单,因为它仅仅暴露http通讯还有提供一个用户友好的格式。
Fiddler 包含一个简单却功能强大的基于JScript .NET 事件脚本子系统,他非常灵活性非常棒,可以支持众多的http调试任务。Fiddler 是用C#写出来的。
。。。。。接下来是一大段废话,关于如何安装的,只要一路next,就可以了。这段话我就跳过,直接切入正题了。
Running Fiddler
当你启动了Fiddler,程序将会把自己作为一个微软互联网服务的系统代理中去。你可以通过检查代理设置对话框来验证Fiddler是被正确地截取了web请求。操作是这样的:点击IE设置,工具,局域网设置,最后点击高级。

作为系统代理,所有的来自微软互联网服务(WinInet)的http请求再到达目标Web服务器的之前都会经过Fiddle,同样的,所有的Http响应都会在返回客户端之前流经Fiddler。这样,就能明白Fiddler很多作用了吧!

当你关闭Fiddler的时候,它就会自动从系统注册表中移出,换句话说,当你关闭了Fiddler后,不会占着茅坑不拉屎。
下面,是一个Fillder的用户界面,大家可以参考参考其功能。

用Fiddler来做性能测试
HTTP统计视图
通过显示所有的Http通讯,Fiddler可以轻松的演示哪些用来生成一个页面,通过统计页面(就是Fiddler左边的那个大框)用户可以很轻松的使用多选,来得到一个WEB页面的“总重量”(页面文件以及相关js,css等)你也可以很轻松得看到你请求的某个页面,总共请求了多少次,以及多少字节被转化了。

另外,通过暴露HTTP头,用户可以看见哪些页面被允许在客户端或者是代理端进行缓存。如果要是一个响应没有包含Cache-Control 头,那么他就不会被缓存在客户端。

用Fiddler来调试
Fiddler支持断点调试概念,当你在软件的菜单—rules—automatic breakpoints选项选择beforerequest,或者当这些请求或响应属性能够跟目标的标准相匹配,Fiddler就能够暂停Http通讯,情切允许修改请求和响应。这种功能对于安全测试是非常有用的,当然也可以用来做一般的功能测试,因为所有的代码路径都可以用来演习。

Session检查
用户可以在BuilderPage项种来以手工的方式来创建一个HTTP请求(即在Fiddler右侧的tab的第三个,RequestBUILDER),或者可以使用拖拽操作从Session列表中来移动一个已经存在的请求到builder page 来再次执行这个请求。。。
Fiddler 扩展
Fiddler可以使用 .net framework来对它进行扩展。有2种为Fiddler扩展准备的基本机制:
自定义规则,和规则检查。
使用脚本化的规则来扩展Fiddler
Fiddler支持JScript .NET引擎,它可以允许用户自动地修改Http请求和响应。这个引擎能够在可视化界面修改在FiddlerUI中的Session,可以从列表中提取你感兴趣的错误,也可以移除你不感兴趣的Session。
以下的示例代码演示当cookie被加载的时候把界面变成紫色。
static function OnBeforeRequest(oSession:Fiddler.Session)
{
if (oSession.oRequest.headers.Exists("Cookie")){
oSession["ui-color"] = "purple";
oSession["ui-bold"] = "cookie";
}
}
通过加入Inspectors来扩展Fiddler
用户可以加入一个Inspector插件对象,来使用.net下的任何语言来编写Fiddler扩展。RequestInspectors 和 ResponseInspectors提供一个格式规范的,或者是被指定的(用户自定义)Http请求和响应视图。
默认安装中,Fiddler加入了一下的Inspectors:
Request Inspectors
[RW] Headers—Shows request headers and status.
[RW] TextView—Shows the request body in a text box. (原始的请求body视图)
[RW] HexView—Shows the request body in a hexadecimal view. (body的16进制视图)
[RO] XML—Shows the request body as an XML DOM in a tree view.(以XML方式展示请求)
Response Inspectors
[RW] Transformer—Removes GZip, DEFLATE, and CHUNKED encodings for easier debugging.
[RW] Headers—Shows response headers and status.
[RW] TextView—Shows the response body in a text box.
[RW] HexView—Shows the response body in a hexadecimal view. (16进制视图)
[RO] ImageView—Shows the response body as an Image. Supports all .NET image formats.
[RO] XML—Shows the response body as an XML DOM in a tree view.
[RO] Privacy—Explains the P3P statement in the response headers, if present.(如果在响应头中有关于隐私策略的说明就展示出来)
HTTP调试工具:Fiddler 介绍二
学习如何通过Fiddler建立一个速度更快的网站。在这篇文章中,我们将使用Fiddler去探究HTTP的性能,缓存,以及压缩。
如果你要是没有安装和配置过Fiddler, 请从文章的第一篇开始。
HTTP性能总览
毫无疑问用户都喜欢访问速度快的网站。用户是非常的不耐烦,除非你的网站是没有竞争对手,换句话就是处于垄断地位的。如果你的访问者来自世界各地,那你就必须要保证你的网站在执行效率方面要非常好,甚至要更加标准。作为一个国际化的网络连接点,通常要受到来自两个方面的压力:高访问量以及低带宽。
在第一次至关重要的访问中,用户必须要下载每一个内容片断,来生成页面,包括JS,CSS,Images,HTML,如果你的页面太难加载(包括IIS接到请求执行并返回给客户端HTML),访问者也许就会离开你的页面!
通过暴露所有的HTTP通讯,Fiddler很容易得向你展示哪些文件经常被用于生成一个页面,
Shift+click 可以在Fiddler左边框的会话列表中多选会话,来计算那些被选会话的“页面总重量”。那些被转换成字节的数量。
如果你想让你的客户在第一次访问的时候就留下深刻的印象 ,那么最好的,也是唯一的途径就是返回给客户更少的文件。
1 使用更少的图画
2 将所有的CSS浓缩到一个CSS文件中
3 将所有的脚本浓缩到一个JS文件中
4 简化你的页面时间
5 使用HTTP压缩
如果要是你已经对用户的第一次来访的性能进行了优化,那么你可以通过Http 缓存的优势来使得你的网站访问速度更快!
HTTP 缓存介绍
2种方式来提升你的web 应用程序的速度:
减少请求和响应的往返次数
减少请求和响应的往返字节大小。
HTTP缓存是最好的减少客户端服务器端往返次数的办法。缓存提供了提供一种机制来保证客户端或者代理能够存储一些东西,而这些东西将会在稍后的HTTP 响应中用到的。(即第一次请求了,到了客户端,缓存起来,下次如果页面还要这个JS文件或者CSS文件啥的,就不要到服务器端去取下来了,但是还是要去服务器上去访问一次,因为请求要对比ETAG值,关于这个值,我将会在下次翻译中介绍其作用)这样,就不用让文件再次跨越整个网络了。
缓存相关的请求头
为了提高性能,微软的IE和其他的web客户端总是想尽办法来维持从远程服务器上下载下来的本地的缓存。
当客户端需要一个资源(html,css.js…),他们有3种可能的动作:
1 发送一个一般的HTTP请求到远程服务器端,请求这个资源。
2 发送一个有条件的HTTP请求到服务器,条件就是如果它不同于本地的缓存版本。
3 如果缓存的拷贝可用,就使用本地的缓存资源。
当发送一个请求,客户也许会使用如下的几个HEADER
Table 1. Client Cache Headers
|
Pragma: no-cache
|
The client is unwilling to accept any cached responses from caches along the route and the origin server must be contacted for a fresh copy of the resource.
|
|
If-Modified-Since: datetime
|
The server should return the requested resource only if the resource has been modified since the date-time provided by the client.
|
|
If-None-Match: etagvalue
|
The server should return the requested resource if the ETAG of the resource is different than the value provided by the client. An ETAG is a unique identifier representing a particular version of a file.
|
1 Pragma:no-cache 表明客户端不愿意接受缓存请求,它需要的是最即时的资源。
2 If-Modified-Since: datetime 表明如果这个资源自从上次被客户端请求,就已经修改了,那么服务器就会返回给客户端最新的。
3 If-None-Match: etagvalue 如果客户端资源的ETAG值跟服务器端不一致了,那么服务器端返回最新的资源。ETAG就是一个唯一的ID,用来表示一个文件的一个特定的版本。
如果要是这些有条件的请求,也就是含有If-Modified-Since 或者 If-None-MatchHeader头的请求,服务器将会以HTTP/304 Not Modified 来作为响应,那么客户端就知道可以使用客户端的缓存了。否则,服务器将会返回一个新的响应并且客户端就会抛弃过期的缓存资源。
你可以观察2个连贯的请求,来请求同一个图片,你会在Fiddler中发现:在第一个本地缓存版本中,服务器返回一个含有ETAG的文件,和一个含有最后修改日期的文件,在这个第一次的请求会话中,一个本地的缓存版本已经可以使用了。这样一来,一个有条件的请求就被创建出来。然后你再次请求这个图片的时候,他就就会响应一个本地缓存的文件,当然前提是第一次缓存的图片的ETAG值或者If-Modified-Since 值跟服务器上匹配的话,服务器就响应一个304给客户端。
Session #1
GET /images/banner.jpg HTTP/1.1
Host: www.bayden.com
HTTP/1.1 200 OK
Date: Tue, 08 Mar 2006 00:32:46 GMT
Content-Length: 6171
Content-Type: image/jpeg
ETag: "40c7f76e8d30c31:2fe20"
Last-Modified: Thu, 12 Jun 2003 02:50:50 GMT
Session #2
GET /images/banner.jpg HTTP/1.1
If-Modified-Since: Thu, 12 Jun 2003 02:50:50 GMT
If-None-Match: "40c7f76e8d30c31:2fe20"
Host: www.bayden.com
HTTP/1.1 304 Not Modified
因为一个HTTP304响应仅仅包含头,没有body,所有它在穿越互联网的时候要比携带了资源的快很多,尽管如此,HTTP/304响应需要一个服务器的往返,但是通过细心的设置响应头,web程序员可以消除这种因素,甚至是有条件的请求。
缓存相关响应头
通常缓存机制是由响应头来控制的。HTTP规范描述了Header控制缓存,The optional Cache-Control,Expires(过期)。
Expires头包含一个绝对的日期,当超过此日期,它将不会被考虑更新了。
Table 2. Common Cache-Control Headers
|
Value
|
Meaning
|
|
public
|
The response may be stored in any cache, including caches shared among many users.
|
|
private
|
The response may only be stored in a private cache used by a single user.
|
|
no-cache
|
The response should not be reused to satisfy future requests.
|
|
no-store
|
The response should not be reused to satisfy future requests, and should not be written to disk. This is primarily used as a security measure for sensitive responses.
|
|
max-age=#seconds
|
The response may be reused to satisfy future requests within a certain number of seconds.
|
|
must-revalidate
|
The response may be reused to satisfy future requests, but the origin server should first be contacted to verify that the response is still fresh.
|
Cache-Control头的参数设置:
Public 响应会被缓存,并且在多用户间共享。
Private 响应只能够作为私有的缓存,不能再用户间共享。
No-cache 响应不会被缓存
No-store 响应不会被缓存,并且不会被写入到客户端的磁盘里,这也是基于安全考虑的某些敏感的响应才会使用这个。
Max-age=#seconds 响应将会某个指定的秒数内缓存,一旦时间过了,就不会被缓存。
Must-revalidate 响应会被重用来满足接下来的请求,但是它必须到服务器端去验证它是不是仍然是最新的。
注意:
如果你要想在iis中配置缓存,请参阅微软的知识技术文章:
· How to Modify the Cache-Control HTTP Header When You Use IIS.
你可以学习更多关于在asp.net中使用缓存的知识文章:
· How To Cache in ASP.NET by Using Visual C# .NET.
如果你发现你经常在你的网站上更新文件,但是并没有更改文件名字,那你就必须要非常小心地设置你的缓存生存时间。例如:如果你要一个thisyear.gif图片文件显示当前的年份在网站上,你需要保证这个缓存过期时间不能超过一天,否则一个用户在12月31号访问你的网站的时候,在1月1号就不能显示正确的日期。
由于某些原因,服务器可能会设置:Progma:no-cache 头,Cache-control:no-cache
Header中的参数:Vary 是一个缓存信号,Vary:User-Agent表示缓存当前的响应,但是仅限于当发送同样的User-Agent 头的时候。指令 Vary:* 就相当于Cache-Control:no-Cache。
Vary就相当于asp.net中的缓存的参数一样,意思是根据什么来缓存,如果要是知道asp.net的缓存的使用方法,就很容易明白这个参数的意思。
使用HTTP会话列表,Fiddler用户可以看到在页面里包含的HTTP缓存头。
Fiddler 会话列表
如果响应不包含Expires或者Cache-Control,那么客户端就会被迫作为一个有条件的请求,来保证所有的资源都是最新的。
有条件的请求和WinInetCache
IE通过Microsoft windows Internet Services来最大程度的利用缓存服务。WinInet允许用户配置缓存的大小和行为,设置缓存进行如下操作:
1 打开IE,
2 工具选项,选择Inrernet选项,在一般子选项中,临时文件夹内,点击设置
下图就是选村的四种设置:
标记性能问题:
你可以使用Fiddler的自定义规则来标记某些你需要的,比如如果某个响应大于25KB,你可以把当前的Session标记为红色,更加醒目。以下代码都是在OnBeforeResponse事件中:
// Flag files over 25KB
if (oSession.responseBodyBytes.length > 25000){
oSession["ui-color"] = "red";
oSession["ui-bold"] = "true";
oSession["ui-customcolumn"] = "Large file";
}
同样,你也可以标记响应并不指示缓存信息。
// Mark files which do not have caching information
if (!oSession.oResponse.headers.Exists("Expires") &&
!oSession.oResponse.headers.Exists("Cache-Control")){
oSession["ui-color"] = "purple";
oSession["ui-bold"] = "true";
}
介绍HTTP压缩
所有的目前流行的WEB服务器和浏览器都提供HTTP压缩支持。HTTP压缩可以非常显著地降低客户端和服务器端的通讯量。节省超过50%的HTML,XML,CSS,JS等文件。一个浏览器发送一个信号给服务器,他可以介绍HTTP压缩过的内容,并且会把客户端所支持的压缩类型放在请求的Header中,例如:考虑如下的请求:
GET / HTTP/1.1
Accept: */*
Accept-Language: en-us
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322)
Host: search.msn.com
这个 Accept-Encoding 头表明IE将愿意接受GZIP格式的和DEFLATE格式的压缩响应。
相应的响应如下:
HTTP/1.1 200 OK
Content-Type: text/html; charset=utf-8
Server: Microsoft-IIS/6.0 --Microsoft-HTTPAPI/1.0
X-Powered-By: ASP.NET
Vary: Accept-Encoding
Content-Encoding: gzip
Date: Tue, 15 Feb 2006 09:14:36 GMT
Content-Length: 1277
Connection: close
Cache-Control: private, max-age=3600
你可以使用Fiddler来解压缩这些数据。实验表明,使用HTTP压缩能大量减少数据往返,一个普通的CSS文件甚至能减少80%!当然压缩是以牺牲CPU性能为代价的。特别是压缩动态文件,但是一般的权宜之策是压缩例如JS,CSS等静态文件,因为他们在第一次压缩后,就会被存储在服务器上,如果要压缩asp.net动态文件,一定要有个权衡才行
如果您现在还是不满足您的程序优化,那么你还可以参看这篇文章,
Ten Tips for Writing High-Performance Web Applications
什么是Silverlight?
作为新一代互联网多媒体及交互式内容播放应用插件,Silverlight是一种跨平台、支持多种浏览器的互联网多媒体呈现技术,将为广大用户带来流畅、高清的视频体验,同时为专业团队、网络媒体及商业用户提供了突破性的解决方案。
什么是WPF?
WPF(Windows Presentation Foundation) 是微软.NET Framework 3.0的组成部分之一,它是一套基于XML、.NET Framework、向量绘图(vector graphic)技术的表现层(presentation layer)开发框架。WPF是微软下一代用户界面技术,被广泛用于Windows Vista的界面开发。作为微软下一代的图形表现系统,WPF表现出强大的视觉效果,同时提供了丰富的用户接口,统一了开发人员和设计人员创建、显示和操作文档、媒体和用户界面的方法。
六间房CEO刘岩说:Siliverlight要想成为主流视频播放工具并不存在障碍,“就看微软有没有这个决心;要说障碍的话,主要是需要推动用户下载安装这个插件。”
10月24日,微软将Mix Factory大会搬到了中国,在北京798工厂艺术中心,将MIX Factory以全虚拟的方式呈现给互联网上的微软迷们。六间房作为微软合作伙伴,特别开通了MIXFactory.6.cn,试用了这一号称“Flash杀手”的互联网视频播放工具。
微软中国平台与开发总监林毅表示:“MIX”大会是微软的互联网市场活动,即“互联网设计理念交流大会”,在中国叫MIX Factory,其目标用户是互联网开发人员、设计人员、内容提供商等。
去年,微软曾于Mix'06大会上公布了名为Windows Presentation Foundation/Everywhere(WPF/E )的技术部分细节,时隔一年,Windows Presentation Foundation/Everywhere有了正式的名字:“Silverlight”插件和WPF开发工具,并成为2007 MIX Factory的明星。
Hi-Fi时代来临
林毅认为,互联网在用户体验的要求上呈现出三个特征:Hi-Fi、“客”时代和电子支付,用户对于高清晰、高保真要求越发突出,五年前的照相机通常仅有300万象素,但今天每一个相机都超过600万象素,同时,以博客、拼客、播客、换客为代表的“客时代”日渐形成,此外,网上购物、电子商务也促使互联网步入E-Pay的世界。“人们需要更高的用户体验,以便能够张扬个性。”为了迎合Web2.0时代人们的需求,微软开始涉及更广泛的互联网技术领域,包括游戏平台、在线广告、下一代用户界面、网页设计、在线视频、社交网络等等。Silverlight和WPF正是在这种大的时代背景之下产生的互联网技术。
微软德国媒体娱乐部高级经理Christian Wenger 说,用WPF 开发出来的视频应用,目前已经可以达到720P的高清质量,这是目前条件下浏览器能够播放的最清晰的内容。“我相信用电脑浏览器获得电视观看的那一天已经不远了。”
六间房:视频用户需要更好的体验
六间房视频服务网站国内首家试用了Silverlight和WPF技术,CEO刘岩在接受采访时表示,中国互联网用户约1.3亿至1.6亿,但他们从电视转移到电脑上之后,收看的视频内容主要还是电视或者电影,因为电脑上进行视频观看的质量并不很高,这在视频发展的前几年大家或许还可以接受,但现在,基于传统互联网技术的视频播放已经很难满足大家的需求,在高清晰和广告的丰富表现力,需要有更大的提高;我们也在试图突破,但全行业收获并不丰厚。“微软的Silverlight 可以给用户更好的使用体验。”
刘岩表示:Silverlight和WPF技术的试用并不会给网站经营者造成成本的增加,相反,它能够一定程度上节省带宽和存储资料,从这个意义上看,反而是有助于用户降低成本。而在推广上面,刘岩认为Siliverlight要想成为主流视频播放工具并不存在障碍,“就看微软有没有这个决心。要说障碍的话,主要是需要推动用户下载安装这个插件。”
目前互联网视频播放世界最主流的工具是Adobe公司提供的Flash,普及程度已经超过早年流行的RealPlayer和Windows Media Player等。微软称,最新发布的Siliverlight比其他主流的媒体播放技术具有更大的优势,在搜索引擎优化、跨平台运行、高清晰度等方面,Siliverlight都有相当不错的表现。
至于目前六间房数据库中已有的视频文件是否转换成Silverlight可以播放的文件,刘岩说:“这是一个有争议的话题,是否转换和如何转换,都需要未来视情况决定。”不过,“6间房肯定不会放弃目前其他流行的播放工具,但是愿意为用户提供多样化的选择。对于新技术,我们愿意去尝试”。
快睹微软Surface
在MIX Factory会议上,微软亚洲工程院创意总监Dave Vronay还展示了下一代用户界面的技术——Microsoft Surface。Microsoft Surface 是触摸式的机器,不需要键盘和鼠标来操作。Dave说:触摸是人的一种感觉方式,用起来更加符合人的本能。
Dave展示了其中一项图片显示的应用,用户可以以个人喜好、随意地通过触摸来放大照片或者视频片段,找到、或者任意地移动。Dave说:“这些技术实际上都是WPF技术所支持的。”
微软发布Flash杀手,命名为SilverLight,前身为WPF/E,这几天索性玩玩,和Flash一样,须在浏览器安装其插件,官方下载页:http://www.microsoft.com/silverlight/downloads.aspx ,1兆左右,还有示例文件和开发工具:http://www.microsoft.com/silverlight/tools.aspx ,如果还不知道silverlight是什么,看看演示吧:http://www.microsoft.com/silverlight/default.aspx
在视频方面的确很强,当然这与微软自身强大的视频编码解码是分不开的(wma/wmv),加上其浏览器作后盾(IE),相信Silverlight被正式发布应用时(Expression Studio:http://www.microsoft.com/expression),对Flash的霸主地位也是个不小的打击。
看了一下其开发文档,里面关于矢量图的部分,也是非常的丰富,而且3D效果胜过Flash,当然,Flash 9的AS3也即将到来,到时就是萝卜白菜各有所爱了。
Silverlight基本就是Javascript+xaml,对比Flex的Actionscript+mxml,感觉其更开源化,直接读xaml即可。
创建silverlight实例代码(IE/Firefox)://转载请注明来自CenFun.com
<object
id="WpfeControl"
width="400"
height="100"
classid="CLSID:32C73088-76AE-40F7-AC40-81F62CB2C1DA" >
<param name="BackgroundColor" value="#000000" />
<param name="SourceElement" value=null />
<param name="Source" value="HelloWorld.xaml" />
<param name="WindowlessMode" value="true" />
<param name="MaxFrameRate" value="30" />
<param name="OnError" value="myErrorHandler" />
<param name="OnLoad" value="onLoad" />
<embed
id="WpfeControl"
width="400"
height="100"
pluginspage="http://go.microsoft.com/fwlink/?LinkID=77792&clcid=0x409"
BackgroundColor="#000000"
SourceElement=null
Source="HelloWorld.xaml"
WindowlessMode="false"
MaxFrameRate="30"
OnError="myErrorHandler"
OnLoad="onLoad"
type="application/ag-plugin" />
</object>
//转载请注明来自CenFun.com
Width/height:控件的宽度/高度(以像素为单位)
backgroundColor:这是控件的所需背景色。
sourceElement:这是包含控件 XAML 的页面元素的名称。这是一种为 <script> 元素中所含控件配置 XAML 的方法(其中 XAML 在页面上)。若使用此方法,请将 <script> 元素的 ID 置于此参数中,而后控件将会从该处选取它。
Source:这是外部 XAML 文件的位置。
WindowlessMode:这是一个布尔参数。如果要使“WPF/E”控件成为无窗口的,请将它设置为 True。这意味着在 HTML 页面中,“WPF/E”控件将与 HTML 嵌在一起,例如,如果将“WPF/E”控件设置为透明的,则 HTML 将显示在它的“后面”。如果它不是无窗口的(换句话说,如果将此参数设置为 False),则“WPF/E”内容将显示在页面的一个截然不同的区域中,而 HTML 标记将环绕在它的周围。
MaxFrameRate:这是一个指定最大帧频的数字,“WPF/E”将按该帧频呈现动画内容。
OnLoad:这是在加载控件时要触发的页面上的一个 <script> 元素的名称。
OnError:这是当控件上出现错误时要触发的页面上的一个 <script> 元素的名称。
核心就在HelloWorld.xaml文件(一个视频xbox.wmv插入例子)://转载请注明来自CenFun.com
<Canvas
xmlns="http://schemas.microsoft.com/client/2007"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Width="300" Height="300">
<MediaElement x:Name="media" Source="xbox.wmv"
Width="300" Height="300" />
</Canvas>
总体感觉Silverlight速度有优势,毕竟有自身的windows系统和IE浏览器作后盾,而且比较简洁,右键都没有,附属强大的JS做客户端控制支持,当然效率有待考验。
SilverLight是Windows PresentATIon Foundation的一个子产品,其利用了跨浏览器Web技术进行设计,以实现多操作系统,甚至是移动设备上的无缝运行。和Flash一样,WPF/E 是作为一个浏览器的插件,可以显示矢量图形、动画和视频。
Silverlight集成了多种现有Web技术和设备,它可以在Windows、Mac平台上运行,支持IE、Firefox,甚至Apple的Safari Web浏览器。而无需对现有的网站设计进行移植,甚至包括利用Adobe Flash设计的内容。
至于SilverLight与Flash的区别,微软的一位高层人士曾这样描述:一个WPF/E程序“并不是传递给Flash播放器的一个编译好的二进制文件。”相反,所有的代码都是基于标准的,且图像都使用了XAML。
同时,与Flash的内容不方便搜索引擎收录不同,SilverLight是以DOM型式公开它的元素树,内容能很好被搜索引擎收录。
附:SilverLight产品介绍
1、Silverlight通过小巧的浏览器插件将视频、交互性内容以及其他应用融合在一起。该解决方案集成了强大的图像及图层技术,支持任何尺寸图像的无缝整合,并提供适合广播的图层技术,可以在图像上添加按钮、标题或是其他交互性内容。
2、 Silverlight允许利用WMV标准从高清设备向移动设备提供高质量视频和音频。此外,该工具通过Expression Media Encoder以及Tarari公司的内建平台,支持15X的快速视频编码及硬件加速。
3、Silverlight支持多种平台,使用户能够方便的进行代码重用,并通过不同平台无缝的连接到Web。
4、Silverlight集成了多种现有Web技术和设备,这意味着它可以在任何服务器和发布平台上使用,而无需对现有的网站设计进行移植,甚至包括利用Adobe Flash设计的内容。
5、Silverlight采用了已在.NET 3.0和Vista中使用的XAML语言,这使得Web内容和桌面内容的开发语言一致,从而降低了开发费用。Silverlight还兼容大量其他标准和 现有技术,包括ASP.NET、AJAX以及.NET 3.0,这使得开发者可以根据现有标准,或是采用微软已成熟技术来开发基于Web的内容。
6、 此外,Silverlight为设计者和开发者提供大量的开发工具和开发环境支持。对设计者来说,Expression Design和Expression Blend软件可以创建可重用界面,Expression Web使得在符合W3C标准的网站开发中可以使用XHTML、XML、XSLT、CSS以及ASP.NET等工具。对开发者来说,基于Visual Studio的Web开发支持包括ASP.NET AJAX在内的技术,并支持JavaScript,C#,VB,Ruby以及Python等多种开发语言。
7、 Silverlight浏览器插件的安装程序简单,体积约为2Mb。当用户遇到使用Silverlight开发的网页时,可以迅速的安装这一插件。 Silverlight内建的视频及动画广告解决方案灵活性很高,当传输广播类型的视频或是动画广告时,不会影响视频的质量。而这一问题是现有技术普遍遇 到的问题。
8、通过获艾美奖的Windows Media技术,传输流量可降低46%,并且和现有的Windows Media流量配置方案兼容。如果采用下一代Windows Server系统中的IIS媒体包,流量还将进一步下降。
9、Silverlight支持内容接入保护技术。无论在Windows还是Mac平台上,Silverlight都支持多种商业模型,包括订阅、租用、付费浏览或是预览等。