`
webcode
  • 浏览: 5939964 次
  • 性别: Icon_minigender_1
  • 来自: 上海
文章分类
社区版块
存档分类
最新评论

Silverlight之重

 
阅读更多

上期笔者刚提出Silverlight之亲,本期就要讨论silverlight之重?请大家不要觉得奇怪,架构的轻与重永远都是相对而言,虽然Silverlight相对于传统C/S架构有更加轻型的运行时环境,但相较于Html+JavaScript等传统B/S架构确实具有更加庞大的基础类库支持。Silverlight依靠.Net平台,使用C#高级语言代替JavaScript脚本语言,实现了强大的客户端计算能力、支持多线程,继承了WPF丰富的样式、控件、特效与动画,更可控的浏览器适应性,更安全的沙箱模式,客户端嵌入式数据库等,这就是本期要给大家介绍的重点—Silverlight之重

自上世纪90年代以来,Html+JavaScript几乎占据了Web应用的全部,在近20年的发展过程中,一大批工具化的JavaScript框架应运而生,比如轻量级的JQuery、重量级的ExtJs和Dojo等都为开发者建立Web应用提供了多种选择。ExtJs框架有强大的UI展现层,已经在Turbo CRM等企业级应用中有实际案例,而Dojo有IBM、Oracle等大公司撑腰,Struts2更将Dojo集成在客户端框架中,该框架甚至还支持离线浏览。

虽然以上框架已经具有相当可观的基础库支持,但Silverlight的架构却拥有更加重量级的高级语言支持,使得它可以完成JavaScript框架所不能实现的功能,Silverlight之重就体现在以下几方面:

  • 基于.Net平台,拥有丰富的基础类库支持,可以快速构建复杂的企业级应用

    Silverlight拥有强大的.Net平台支持,自Silverlight1.1使用.Net运行时环境以来,Silverlight类库已经得到极大的扩充,并集成了WPF、WCF、LINQ、DLR、COM等.Net平台的优秀技术,下图是MSDN上关于.Net for Silverlight的支持图例。

    由于Silverlight使用了WPF展现层控件库,使得Silverlight与WPF共享代码不存在任何技术屏障,事实上Silverlight就是一种桌面应用在Web上的轻量级实现,即便存在一些差异,我们也可以通过下面的代码将Silverlight应用与桌面应用粘合在一起。

    #if SILVERLIGHT
        dynamic excel = AutomationFactory.CreateObject("Excel.Application");
    #else
        dynamic excel = Microsoft.VisualBasic.Interaction.CreateObject("Excel.Application", string.Empty);
    #endif
    

    目前已经有很多重型的企业级架构实现了Silverlight与WPF共享类库,比如Prism项目。

    Silverlight运行时环境目前已经有近千个可供使用的类,而ToolKit与大量的第三方工具程序集可以为Silverlight提供更加强大的后援支持。因此在RIA企业级应用开发过程中,团队可以通过.Net强大的基础库与工具集快速构建出复杂的企业级应用。(敬请期待本专栏第四期《Silverlight CoreCLR结构浅析》)

  • 支持多线程,支持UI线程与后台线程分离,具有更大的性能优势

    Silverlight具有彼此分离的UI线程与后台线程,可以将客户端的耗时操作放在后台线程中处理。这样做有两方面的收益:第一,由于没有在UI线程中执行耗时操作,避免了UI线程阻塞,提高了UI响应速度;第二,由于没有将操作放在服务器端运行,减少了网络的调用开销,同时通过使用客户端资源降低服务器端压力。Silverlight多线程可以通过多种方式实现,比如Dispatcher、BackgroundWorker、ThreadPool都可以轻松创建后台线程,并可以通过事件句柄实现线程间异步通信。(敬请期待本专栏第五期《Silverlight的多线程能力》)

  • 丰富的服务器端通信能力

    目前Silverlight支持TCP、UDP、Socket等网络协议,以及HttpHandler、WebServices等多种应用层协议,还可以通过WCF RIA Service数据“透明”访问方式(通过向客户端公开数据访问层,屏蔽了通信层手工编码)快速实现实体通信。

    在原有应用集成方面,如果服务器端使用.Net平台,那么Silverlight客户端程序可以重用原有通信方式,而不必对服务器端程序有较大改动,如果服务器端使用Java平台,Silverlight也提供标准WebServices、Http、Socket多种交互方式进行通信,服务器端只要进行简单的服务封装就可以实现与Silverlight客户端的数据通信。因此,Silverlight基于.Net提供了快速与服务器端程序集成的能力。事实上,在笔者所开发的项目中,已经实现了Silverlight客户端与.Net、J2EE(通过REST接口)、Tuxedo(通过SALT接口)的数据连通性。(敬请期待本专栏第六期《Silverlight与J2EE通信》)

  • LINQ语言的支持

    LINQ是一种开发高效的声明式语言,开发者可以通过这种类似SQL的语言快速构建数据逻辑,而避免了原有面向对象操作中的复杂过程,当然这只是LINQ的外在表现形式。其实LINQ声明式语言依赖于Lambda表达式,而Lamda表达式的背后是强大的表达式树ExpressionTree,LINQ to Any的真正强大在于将数据逻辑的具体实现方式与书写方式分离开,使开发者使用一种方式就可以访问和操作各种数据对象。而Silverlight集成了LINQ语言,在实际的应用开发中,开发者可以通过更加简单的方式来实现复杂的业务逻辑;另一方面,Silverlight同样集成了强大的表达式树,使得开发者可以通过自行扩展表达式树来构建LINQ To Any的适配器,也可以使用表达式树来构建更加复杂的动态语法和动态LINQ。当然,如果未来微软将PLINQ的并行查询语言集成到Silverlight中,那将使Silverlight的查询性能更近一步。(敬请期待本专栏第七期《Silverlight轻量级查询对比》)

  • 客户端嵌入式数据库支持

    Silverlight内置IsolatedStorage可以操作独立存储中的数据,但这还不足以实现复杂的数据操作,我们需要在Silverlight项目中引入第三方嵌入式数据库程序集,实德Silverlight可以通过客户端独立存储来建立客户端嵌入式数据库,实现在脱机状态下存储与管理数据。开发者可以通过嵌入式数据库快速构建纯客户端(包括桌面、移动设备等)的信息管理应用,甚至实现基于嵌入式数据库缓存的“云与端”应用。目前支持Silverlight的嵌入式数据库选择已经相当广泛,比如Siaqodb、EffiProz、Perst、Rapid Repository(WP7 DataBase)等都有专门针对Silverlight的嵌入式数据库与管理工具。(敬请期待本专栏第八期《Silverlight嵌入式数据对比》)

  • 动态语言支持

    Silverlight对动态语言的支持分为:对JavaScript的互操作性、对dynamic动态类型的支持和DLR的集成。

    在对JavaScript的互操作性方面,Silverlight可以通过System.Windows.Interop类集将其应用程序中的控件暴露成Html DOM,实现内部控件对外部JavaScript的可见性;Html反向可见性是通过System.Windows.Browser类集来实现的,Silverlight可以与Html对象或者JavaScript对象进行交互。Silverlight中支持dynamic动态类型,允许在运行时动态加载对象。通过Silverlight 集成了动态语言运行时环境DLR,目前支持IronPython、IronRuby、JScript等动态语言在Silverlight应用程序中的执行。

  • 与COM的互操作

    Silverlight脱浏览器应用(OOB)可以在客户端创建并操作COM对象,比如打开Word、Excel等所有在客户端操作系统中注册的COM组件,Silverlight5甚至允许在浏览器中调用Office COM对象,在OOB模式下更可以调用任何外部Windows应用程序,并支持对USB设备与条形码扫描器等更多外设的API调用。

  • 3D引擎与丰富的多媒体控制

    Silverlight基础类库包含MediaElement控件,可以在Silverlight程序中控制媒体对象,也可以通过System.Windows.Media类集对绘图、文本和音频/视频内容进行编程,比如通过Brush、ImageBrush、VideoBrush绘制更加丰富的媒体内容;通过BitmapImage类自定义点阵图片,实现诸如粒子效果的应用;通过System.Windows.Media.Animation类集来创建动画;通过System.Windows.Media.Effects实现模糊、阴影等多种视觉特效;通过System.Windows.Media.Media3D操作3D投射矩阵。

    Silverlight5还将增加GPU3D加速的API支持,增加3D视觉特效,增加即时模式图形API,允许将图形图像直接呈现到GPU,这些特性的加入将使Silverlight具有更强大的媒体展现能力。

  • MEF扩展性管理框架的支持

    MEF (Managed Extensibility Framework )扩展性管理框架,是.NET平台下用于创建可扩展的轻型应用程序的库。在Silverlight SDK(C:\Program Files\Microsoft SDKs\Silverlight\v4.0\Libraries)中我们可以找到System.ComponentModel.Composition.dll与System.ComponentModel.Composition.Initialization.dll这两个动态链接文件。在Silverlight项目中引用后,就可以使用MEF扩展性管理框架,该框架以声明方式指定其功能,在运行时通过MEF 组合引擎发现部件。应用程序无需硬编码的引用或脆弱的配置文件即可利用相关部件,其依赖项注册的实现方式甚至比基于配置的Spring还要简单,Silverlight完全可以利用MEF构建扩展性极强的企业级应用。

由此可见,Silverlight拥有比JavaScript更为重型的框架支撑,通过Silverlight可以快速移植桌面应用到Web端,也可以将Web应用脱开浏览器执行,或者构建轻型的桌面应用、移动设备应用。应该说Silverlight不仅仅是Web应用,在MSDN的知识库中,Silverlight已经从Web开发节点转到了.Net开发节点下,从这一点上可以看出微软正在进行Silverlight转型。

而未来的Windows 8操作系统的瘦客户端UI-“Jupiter”将采用Silverlight,该界面将允许运行在基于ARM CPU的平板设备上。Silverlight 4凭借优秀的框架已经获得了InfoWorld评出的2011年度最佳RIA平台奖项,未来Silverlight还将担负Web应用、移动应用和桌面应用的统一大业,Silverlight之重也在于此!


分享到:
评论

相关推荐

    Silverlight Mef Demo

    使用MEF构建可扩展的Silverlight应用程序,这个Demo实现了一个可多重扩展的运算器,可以动态下载包,也可以静态导入。可以作为很好的MEF入门示例吧。

    silverlight 3 控件经典入门学习案例

    11.强大的DataGrid组件[3]_数据交互之Linq to SQL——Silverlight学习笔记 12-13.强大的DataGrid组件[4]_实现CURD 14.强大的DataGrid组件[6]_调用存储过程服务端分页 15.强大的DataGrid组件[7]_自定义DataGrid ...

    Silverlight 5中的多重绑定

    Silverlight 5的增强型MultiBinding标记扩展实现,支持可绑定的Converter,ConverterParameter和StringFormat

    ASP.NET 3.5 高级程序设计英文第3版:Pro ASP.NET 3.5 in C# 2008: Includes Silverlight 2(part1)

    This new edition is updated with everything you need to integrate Silverlight 2.0 and SQL Server 2008 into your ASP.NET applications. You will learn about Silverlight’s exciting new features so that ...

    DXperienceUniversal-10.1.6+XAF重编译完美版-1

    方法也是一样,删除原来的Silverlight,用新的替换之。 相关链接请在我发布的资源里找。 DXperienceUniversal-10.1.6+XAF重编译完美版 控件及XAF部分完全正常可用,带强名文件及汉化的DLL 是目前有XAF版源码中最高...

    DXperienceUniversal-10.1.6+XAF重编译完美版(补充)

    D:\Program Files\DevExpress 2010.1\Components\Bin\Silverlight 删除原来的,用包里的文件替换之

    Wiley.Microsoft.Expression.Blend.Bible.part05.rar

    目前有关Microsoft.Expression.Blend 及如何开发Silverlight重量及的书箱。由于刚开上传时不知道可传多大,所以分了好几个part,给大家带来不便,抱歉!完整版已经有下载: http://download.csdn.net/source/536528

    Web SCADA 电力接线系统图

    在电力、油田燃气、供水管网等工业自动化领域 Web SCADA 的概念已经提出了多年,早些年的 Web SCADA 前端技术大部分还是基于 Flex、Silverlight 甚至 Applet 这样的重客户端方案,在 HTML5 流行前 VML 和 SVG 算是...

    devexpress重编译需要的dll,DX2011.1版本

    ActiveReports3.DLL ActiveReports.Viewer3.dll ActiveReports.PdfExport.dll ActiveReports.Interop.DLL ...Moq.Silverlight.dll nunit.framework.dll System.Data.SQLite.DLL WebDev.WebHost.dll

    ESFramework简单的即时通讯系统源码

    功能: (1)客户端用户上下线时,通知其他在线用户。 (2)当客户端与服务端网络断开时,进行自动重连,当网络恢复后,重连成功。...(6)WinForm客户端和Silverlight客户端之间公用同一个服务端,并相互通信。

    XamarinFormsMFASample:使用ADAL的Xamarin Forms iOSAndroidUWP App中的多重身份验证-示例和分步指南

    该示例基于,Windows Phone Silverlight实现已替换为UWP。 分步指南 登录到您的或 若要使用Azure Active Directory,您需要注册您的应用程序以进行访问。 转到“ Azure Active Directory”刀片服务器(部分)-您将...

    XGraphics:跨平台UWP启发的图形基元,用于XAML和代码

    这更加简洁,当您绘制的UI看起来恰到好处时,可以使用“热重装”功能立即查看更新。 它还允许用于XAML动画,以获得复杂的视觉效果。 是图形形状元素(椭圆,路径,渐变,变换等)的XAML标准。 今天,UWP,WPF和...

    基于 HTML5 +JavaScript 网页塔防游戏

    调整参数,减小了激光枪的射程,增强了重机枪的威力。(v0.1.12)。  2010-12-18 添加新武器“激光枪”(v0.1.8.0)。  2010-12-12 暂停图片资源版本分支的开发,继续优化、开发圈圈版(v0.1.7.0)。  2010-11...

    工程硕士学位论文 基于Android+HTML5的移动Web项目高效开发探究

    HybridApp 一种可以下载的Native App,其用户界面的全部或者部分元素在嵌入式浏览器组件(WebView之类的)里面运行 优雅降级 一开始就构建站点的完整功能,然后针对浏览器测试和修复。认为应该针对那些最高级、最...

Global site tag (gtag.js) - Google Analytics