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

笔者使用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。 

转载于:https://www.cnblogs.com/bihailantian/archive/2010/10/08/1846121.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/380872.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Hibernate配置C3P0连接池(在配好基本的hibernate配置下使用)

拷贝jar包 找到我们的hibernate安装包,在lib目录下找到optional目录,打开c3p0文件,拷贝里面的jar包到eclipse里 写一个测试类,代码入下 public class C3P0Test {Testpublic void test() {Session s HabernateUtils.openSessi…

workerman json mysql_workerman-json-rpc

软件简介一款使用PHP开发的高性能Json Rpc框架,框架使用TCP/IP协议直接传输json数据,系统集成统计监控模块,开发部署维护非常简。workerman-json-rpc 包含了服务端和客户端。特性:使用PHP开发,与PHP紧密结合PHP 多进程…

web站点性能测试经验点滴

对web站点性能测试,从测试工具的角度,介绍几点经验。 1、在执行客户端并发性能测试的过程中,需要同时监控数据库服务器、web服务器以及网络资源等使用情况,以便对系统的性能做全面评估。 2、录制的脚本需要编辑,有时需…

Hibernate的CURD操作

1、保存:Session的save方法 Testpublic void testSave() {Customer c new Customer();c.setCustName("测试");Session s HibernateUtils.openSession();Transaction t s.beginTransaction();s.save(c);t.commit();s.close();}2、查询:Sess…

thinkphp mysql日志_MySQL的日志基础知识及基本操作学习教程

MySQL日志主要包含:错误日志、查询日志、慢查询日志、事务日志、二进制日志;日志是mysql数据库的重要组成部分。日志文件中记录着mysql数据库运行期间发生的变化;也就是说用来记录mysql数据库的客户端连接状况、SQL语句的执行情况和错误信息等…

JavaScript里的两个等于号和三个等于号的区别

1、两个等于号: 它在作比较时会尝试自动转换 比如下面的程序:输出为true var sNum "10";var iNum 10;alert(sNum iNum) //弹出为truesNum是string类型,iNum是number类型,sNum会尝试转换,sNum转换成number…

spring boot 集合mysql_Spring boot整合mysql和druid

Spring boot整合mysql和druid集成mysql数据库引入依赖mysqlmysql-connector-javaruntimeorg.springframework.bootspring-boot-starter-jdbc添加数据库配置Spring boot项目的resources目录下的applicataion.properties# datasourcespring.datasource.urljdbc:mysql://127.0.0.1…

在博客里轻松使用LaTeX 数学公式[转]

笔者最近的博文有不少数学相关内容,发现利用一些网上服务、jQuery和CSS,可以更轻松地在博客里使用语法排版方程式。是基于的排版系统。而就是美国著明计算机教授高德纳(Donald E. Knuth),为了编写他的巨著《计算机程序设计艺术(The Art of Co…

Hibernate持久化对象的状态:瞬时状态、持久化状态、托管状态

瞬时状态:对象由new操作符创建,但没有和session关联,也就是我们刚刚创建的对象,还没有保存到数据库中去持久化状态:对象被保存到数据库中去了,并且还与session有关联托管状态:对象已经被保存中去…

oracle查看所有用户_Oracle实用命令查看共用一个表空间的所有用户

概述有朋友问到如何查出表空间都被哪些用户使用的一些方法,因为有几种情况需要考虑,也顺便做个总结。需求:如何查看共用一个表空间的所有用户查看某表空间下表的所有者使用dba用户查询:1、如果先要知道表空间的命名,可…

Hibernate中把Session和线程绑定的配置

我们一开始用session都用HibernateUtil工具类获得Session对象,因为该工具类可以保证将线程不安全的Session绑定到当前线程内,但每次返回的对象都是一个新的session,我写了一个测试方法如下: Testpublic void test() {Session s1 …

lpt监控安装_lpt1(如何在lpt1端口安装打印机)

LPT就是俗称的并口,一般电脑只有一个并口,设备管理器里面显示为LPT1,打印机常见的端口就是LPT口和USB口,新的主板很多已经取消了板载LPT接口,还有少数专.是用网线连接电脑的接口吗??&#xff1f…

awk 多文件操作2种实现方法

我们经常会将2个有关联文本文件进行合并处理。分别从不同文件获取需要的列,然后,整体输出到一起。awk进行多文件处理时候,常常会遇到2个方面问题,第一个是怎么样合并多个文件为一个文件。第二个问题就是怎么样将多行合并为一行显示…

mysql 3.5安装_MYSQL学习笔记-06-搭建数据库

文章内容输出来源:拉勾教育Java高薪训练营1. 安装说明基于Ubuntu Linux系统安装,MySQL版本是5.7.29。安装方式是通过官网下载相应的tar.gz压缩包进行安装。这种方式需要自己动手的部分比较多,如配置文件的设计、环境变量的配置、开机启动服务…

Hibernate中hql的基本查询、条件查询、排序插叙、分页查询、投影查询

hql语句和sql语句不同,当我们使用hql语句查询时,要把SQL语句的表写成 实体类的类名,字段写成实体类的属性 基本查询:查出数据库中所有的数据 代码如下: //基本查询,查询所有的实体Testpublic void test1() {//获取当…

【转】小周立波张冯喜引爆达人秀 小童星家居照大曝光

原文地址:http://www.soufun.com/news/2010-10-13/3897753.html 小小年纪,一身西装,发式清爽,腔调十足,有观众说她“天才有余,天真不足”,她自己说“进演艺圈太累了”,刚踏进演艺圈就…

mysql命令教学_mysql常用命令有什么

mysql常用命令有:1、“create database name;”;2、“use databasename;”;3、“drop database name”;4、“show tables;”;5、“select version”等等。MySQL 数据库常用命令1、MySQL常用命令create database name; …

Struts2一对多配置

在多表映射配置时,我们应该遵循以下不步骤: 确定两张表之间的关系在数据库中实现两张表之间的关系建立在实体类中描述出两个实体类之间的关系在映射配置文件中建立两个实体和两张表之间的关系 我们就按照上面的步骤做,我这里有一张联系人表和…

调整和改编赛车游戏——游戏屏幕

游戏屏幕 赛车游戏中有很多不同的游戏屏幕,这些都是由RacingGame类中的gameScreens堆栈管理的。本节介绍游戏中使用的大部分屏幕和对应的功能。大多数游戏屏幕相当简单,但其他的有点复杂并实现了一个单元测试,通过单元测试能更好地了解这个类…

mysql 锁 代码_MySQL中的锁实例

表结构:id:自增主键,a:无索引,b:普通索引CREATE TABLE test (id int(11) NOT NULL AUTO_INCREMENT,a int(4) NOT NULL DEFAULT 0,b int(4) NOT NULL DEFAULT 0,PRIMARY KEY (id),KEY b (b) USING BTREE) EN…