一起谈.NET技术,初识Silverlight 4及其架构

  简介
  Silverlight 4是今年早些时候发布的。这项技术为我们带来了许多革新。它不仅是为用户带来了丰富的交互式的互联网和多媒体内容,还为我们提供了强大的轻量级的平台。我们可以在此平台上开发可移植的,跨平台的,基于网络的应用程序,并且可以从不同的源头集成服务和数据。相比传统Web应用的界面,Silverlight应用的界面让人耳目一新。让人感觉像是Windows Form应用程序搬到了Web上。

  为什么需要Silverlight 4

  前面我们在开发Web应用的时候,碰到了许多技术上的难题,如平台兼容,不同的文件格式和通讯协议,同样的页面在不同浏览器上的表现,还有不同浏览器对Javascript的解释,经常为这些问题加班熬夜,我们没有少费脑筋来试图解决这些令人头痛的问题。有了Silverlight技术:

  • 我们就能克服现有技术平台的的不兼容性,不一致性。
  • 我们就有了能力在多平台多种浏览器上创建一致的用户体验,不管在哪里,应用程序在外观上和行为上都是统一的。
  • 我们就能利用熟悉的.net框架的类和功能将不同网络位置的数据和服务集成到一个应用程序中。
  • 我们就能为用户提供一个多媒体的,表现丰富的,操作性强的用户界面。
  • Silverlight 4为我们提供了更多的控件,更强大的功能,让我们可以开发出更强大的应用,更好地应对商务上的挑战。 

  Silverlight 4有哪些新东西? 

  •   几个实用的控件,如RichTextBox, ViewBox, WebBrowser, WebBrowserBrush等。
  •   浏览器外运行支持,浏览器外运行能象普通窗口的特性,如改变大小,置顶等。
  •   提升了信任的应用程序,允许信任的Silverlight程序可以自由读写用户文件和目录,全屏幕,调用Windows API等。
  •   更丰富的媒体,可以捕捉视屏信号和话筒语音。
  •   更强的打印功能
  •   更强更方便的UI界面,支持拖拽,支持剪贴板等等。
  •   更好的数据绑定和WCF数据服务
  •   WCF RIA 服务对多层应用支持更强。
  •   DLR的支持 

  Silverlight 4有哪些系统和浏览器支持?

  要构建有效的Silverlight 4应用,开发者有必要了解Silverlight 4的架构。

  Silverlight平台的部件

  Silverlight作为一个整体主要包括三个部分,如下表:


部件


说明


核心展现部件


负责呈现XAML所表现的UI元素,包括常用的控件,多媒体控件等,同时负责处理用户输入,事件等。


Silverlight中的.net框架


.net框架的子集。包括部件和库,其中有数据集成,可扩展的Windows控件,网络,基础类库,垃圾收集和CLR等。
有一部分Silverlight .net框架与应用程序一起部署。这些"Silverlight库"是一些程序集,不随Silverlight运行时一起发布,在Silverlight SDK中发布。开发者用到了这些Silverlight库,这些程序集就必须同应用程序一起打包。用户浏览的时候就下载到浏览器中。 这些与应用程序一起部署的的库包括新的一些UI控件,XLINQ, RSS/Atom, XML 序列化等, 和动态语言运行时(DLR).


客户端安装器和更新器


第一次浏览Silverlight应用程序,客户端的浏览器需要安装上浏览器插件,这个安装器兼更新器负责为客户端浏览器安装插件并始终保持客户端的浏览器插件最新。

  下图是MSDN官方的图,展示了Silverlight平台的部件,及一些相关部件和服务。

  核心展现部件Core presentation framework包括了XAML parser, UI Core, Inputs, DRM(digital rights management), Media, Deep Zoom等,多数是需直接与具体的操作系统API打交道的功能,所以这里没有CLR Execution Engine.

  • XAML parser负责解析XAML,能兼容不同规格的XAML
  • UI Core负责向量,bitmap,动画,文字的渲染
  • Inputs负责处理键盘,鼠标等设备的输入
  • DRM负责处理数字媒体的数字版权管理
  • Media负责处理多媒体的处理,支持不同的媒体格式和编码器
  • Deep zoom是用于高分辨率图片的放大和缩小
  • Layout负责UI元素的定位

  .net framework for Silverlight 是供应用程序使用的商业"库"。包括Data, WCF, WPF, BCL等。

  • BCL提供了.net平台上的基本类型, 集合collections,泛型Generics,加密等
  • WCF提供了应用程序处理WCF相关功能的一些类型, 用于处理SOAP, REST, RSS/ATOM等
  • Data提供了LINQ, LINQ to xml等
  • WPF提供了一些UI控件,将数据绑定到这些控件,布局,处理用户输入的一些功能。

  .net framework for Silverlight分布在若干个.net程序集中。有一部分的程序集(比如BCL)是随Silverlight 安装器在用户浏览器中安装,有一部分是在Silverlight SDK中,应用程序引用到了相关的程序集,才会随应用程序一起发布到服务器上,当有用户访问应用程序时,这些.net framework程序集才随应用程序的程序集一起下载到用户的浏览器中被CLR执行引擎(CLR Execution Engine)执行。

  CLR执行引擎(CLR Execution Engine)是这里面的核心,负责执行应用程序的.net 代码和.net framework的.net代码。CLR总是基于一个宿主。通常的宿主是一个浏览器,在浏览器外的场景时的宿主是一个操作系统进程。Silverlight 4对其CLR做了改进,Silverlight 4的CLR与桌面应用程序的CLR的差别进一步缩小。

  DLR提供了对动态语言的支持。目前支持JScript, Iron Python, Iron Ruby。这是Silverlight 4新提供的特性。

  Silverlight 4还有一些编程相关的特性:如独立存储(Isolated storage),后台线程,安全的文件管理,序列化,XAP打包,XML处理,HTML与托管代码的交互。

  • 隔离的存储提供一种安全的方式让Silverlight程序去访问浏览器本地的文件系统。
  • 后台工作者线程使异步,多线程在Silverlight上成为了可能。
  • 安全的文件管理提供一个安全的文件打开对话框,允许文件上传等。
  • 序列化使对象的序列化存储和恢复成为了可能。
  • XAP打包提供了Application类和工具来打XAP的包。.xap的包有应用程序和入口点,以便让用户浏览器插件来运行这个.xap包。应用程序的发布都是需要一个.xap包。
  • XML处理包含了处理Xml的功能。XmlReader类和XmlWriter类提供了最基本的XML处理功能,同时XLinq让开发者可以用c#或者VB.net就可以查询Xml中的数据。
  • HTML与托管代码的交互让开发者可以在托管代码中直接用HTML DOM就可以管理HTML页面里的UI元素,同时也可以写Javascript代码调用托管代码的功能,访问其中的方法,属性,激发其事件等。这个功能就为上图中的Javascript Engine和MS AJAX Library提供了可能。

  上图中的浏览器宿主(Browser Host)是用户浏览器插件提供的一个环境。它提供了运行一个Silverlight应用程序的基础环境,如Application服务,HTML DOM的集成,网络通信的基础,还有安装器。使用托管API的Silverlight应用程序都有一个继承Application类的类,有一个程序入口点,浏览器宿主(Browser Host)为应用程序建好了运行环境,然后才调用应用程序的入口。

  结束语

  以上是关于Silverlight 4的一些粗浅的认识。是任何一个Silverlight开发者想知道的内容。如果更深入些,就从多个方面来了解:它的原理,它的处理周期,它的部署,它的安全性,它的伸缩性,它的分布式计算能力,它的容错能力,等等等等。本人也是刚开始学,所知有限。有待进一步学习。等有了一点东西了再写。

  题外话:最重要的还是快速学习和分析能力。这个能力让你面对新技术时,有潜力迅速学习并掌握该技术。

时间: 2024-09-08 10:16:40

一起谈.NET技术,初识Silverlight 4及其架构的相关文章

一起谈.NET技术,Silverlight 结构分析

Silverlight是微软提供的一种Web前端应用程序开发框架,是微软RIA的主要应用程序开发平台.Silverlight以浏览器的插件方式,提供丰富的多媒体展示功能以及更多交互性的Web前端解决方案. 本文的重点在于探讨Silverlight的整体架构,以及Silverlight应用程序是如何在浏览器中运行的,各个子部分的作用是什么. 1.整体结构 Silverlight是以浏览器插件方式运行的,在安装完Silverlight后,我们来看一下安装目录:C:\ProgramFiles\Micr

一起谈.NET技术,Silverlight的搜索引擎优化

什么是SEO,为什么它是如此重要? SEO(搜索引擎优化)是改善交通的数量和质量,从搜索引擎网站的过程. 这意味着,做搜索引擎优化您的网站将使其更具可转位及更多的人参观. 下面是你的规则应该坚持以做最好的搜索引擎优化几点: <title>标签应包含有关您网站的最重要的信息 最重要的内容应留在本页面(开始后<body>标记) 所有图像标记号(<img />)应界定上的Alt标签-这是搜索引擎理解什么是图像的唯一途径说' 简短的开场白,RIA的世界 如今,网络空间是完全不同

一起谈.NET技术,Silverlight 2.5D RPG游戏技巧与特效处理:(三)动态光影

通常来说,只要谈到影子及影子制作,首先想到的不外乎3D.游戏中的影子设计大致可分为硬实现和软实现两种,比如像"游戏影子制作技术"这篇文章所谈到3D游戏影子制作方案Projective Shadow.Shadow Map以及Shadow Volume均属于硬实现.硬实现的效果最逼真,相对的运算量也较高:而对于Silverlight开发2.5D网游来说,我们通常会采用折中的软实现去表述场景中的动态光影效果.精致的光影能让玩家充分体验到空间立体感,当然也是2.5D网游所不可或缺的条件之一.

一起谈.NET技术,Silverlight 2.5D RPG游戏技巧与特效处理:(十一)AI系统

谈到人工智能(AI),这个话题就太大了:大学里有<人工智能教程>专门讲这方面的知识,什么大名鼎鼎的人工神经网络.遗传算法等等均可一窥究竟,这里如赘述似乎有些班门弄斧,我们暂且丢它一边去吧. 本节,我的主要目的是与大家共同探讨AI在RPG游戏中的应用.看过之前教程的朋友一定不会陌生,A*算法就是其中的一个重要组成部分:而本系列Demo中则使用了更为高级的改进型A*算法,不仅优化了性能,同时也大幅提升了玩家的操控体验.除此之外,AI更常见于RPG游戏中的角色,接下来我将引领大家循着AI的足迹,逐步

一起谈.NET技术,Silverlight访问Apache服务器(Tomcat,Geronimo)中部署的Webservice

开发环境 Vs2010 . Silverlight4 . Java Jdk1.6 U 21 . Apache-tomcat-6.0.20 . Myeclipse8.5 . Apache-ant-1.8.1 . Axis2 . Geronimo-tomcat6-javaee5-2.2 下载地址: Apache-tomcat : http://apache.ziply.com/tomcat/ Apache-ant   : http://apache.ziply.com/ant/ Axis2 : ht

一起谈.NET技术,Silverlight的多线程能力(上)

对于多线程其实一直以来都存在很多误区:比如多任务与多线程就很容易被混为一谈,而多线程也常被理所应当的认为是并行等等.而事实却是:多任务≠多线程.单任务≠单线程.多线程不一定并行,多线程与性能不成线性关系等等,其中道理在这里不再详述.笔者认为Silverlight多线程主要作用不是在于提高性能,而是在于用户体验,其根本目的是解决用户体验中的响应速度,减少单线程带来的阻塞问题.用一个贴切的例子来形容单线程和多线程的区别:单线程就好像只有一个服务窗口卖票的车站,人们排队买票时都是单线程处理的,而且不能

一起谈.NET技术,Silverlight 2.5D RPG游戏技巧与特效处理:(二)纸娃娃系统

纸娃娃系统,或许大家听起来并不陌生.早在十几年前,当时不论是文字游戏"泥巴(Mud)"或是交友.社交网站,我们只能通过屏幕上的文字来传达与交互信息:随着技术不断进步,2D/3D图形技术高速崛起,通过在基础模型上由客户随意挑选.任意更换各种造型(素材),即可打造出真正属于"自我"独特风格的网络虚拟形象,QQ秀便是我们耳熟能详的代表,更贴近真实的如(RPG)游戏及虚拟现实中的换装/换肤系统同样亦得益于纸娃娃机制. 本节,我将向大家讲解如何最好的实现Silverlight

一起谈.NET技术,Silverlight开发廋身攻略(一)

相信大家在用Silverlight做应用开发时,随着项目的进展系统功能越来越多,肯定为Xap包越来越大而烦恼,Xap包的大小直接影响应用程序的加载速度,给用户造成不良的用户体验.我也曾为这个问题头痛过,经过在网上查阅资料和项目实践发现可通过以下三种方式给Silverlight应用程廋身. 1.定期检查系统项目模块的引用集,移除多余的引用库 2.图片资源文件,如果不是必须放在资源中的,可以采用按需加载 3.将系统划分成多个Silverlight项目,然后根据需要进行Xap加载 下面我将结合实例来对

一起谈.NET技术,Silverlight 的多线程能力(下)

上一期笔者介绍了Silverlight实现多线程的诸多解决方案,本期笔者将通过一个实例来实现所有多线程编程方法,并且还将于JavaScript和Flash两种Web客户端技术性能进行比较,请勿拍砖. 在正式编程前,笔者还要重申上期非常重要的观点:Silverlight多线程主要作用不是在于提高性能,而是在于用户体验.这里要给多线程泼一盆冷水了,多线程与性能提升不是正比关系,如果你使用一个单核CPU的客户端设备,那么即便你创建100个多线程也与单线程的计算性能是一样的,因为一个CPU时间片下只能处