silverlight和数据模型设计模式.docVIP

  • 1
  • 0
  • 约5.09千字
  • 约 11页
  • 2018-10-07 发布于福建
  • 举报
silverlight和数据模型设计模式

silverlight和数据模型设计模式   摘 要 本文主要从几个方面论述了silverlight与众不同的设计模式和从其中衍生的程序设计方法,也就是数据模型设计模式。   关键词 设计模式;富用户体验;MVVM模式;数据模型设计模式;事件触发;面向对象;松耦合   中图分类号TP31 文献标识码A 文章编号 1674-6708(2011)55-0172-03   Silverlight 是微软推出的新一代Web前端应用程序解决方案,它使用第三方插件的形式,轻量级的植入到浏览器中,使用与flash相似的机制实现富用户体验的互联网应用,并且提供硬件加速的支持,一级与flash相同的对流媒体的支持,因其与flash的相似性,也被称为Flash杀手。   HTML 5的出现为web带来了冲击,它具有对于各种媒体的支持,具有canvas对象,也可以用于实现游戏,矢量图形等功能,然而开发成本较高,目前缺少成熟的开发工具的支持,因此在短时间内还不能取代flash和silverlight的地位。 ??? 并且,在微软最擅长的标准化,模块化,统一设计模式上,Silverlight给我们带来了很多的启示和可以借鉴的地方。   Silverlight是WCF的轻量级版本,使用XAML的方式来抽象出UI层,使之与逻辑层分离,类似于MVC设计模式,但又是对MVC的进一步优化。XAML是基于XML的一种表达形式,它将图形,媒体,动画和部分触发器逻辑集成在XML文档格式中,并不涉及代码,并且推出了Blend开发工具,用于很方便的简单拖拽,点击就可以实现丰富绚丽的动画。   微软的这种做法实际上是将设计者与程序员的工作进行了彻底的分离,使得二者可以并行工作,互不干扰,设计者做设计者的事,程序员做程序员的事,二者之间只要通过舞台中的变量名进行联系和操作即可。   并且它也因为开发工具blend的支持,极大的降低了开发成本,较HTML和JS控制的页面逻辑有很大的进步。又因为它是基于第三方的运行时环境(Run Time),因此在任何机器和浏览器中都提供一致的表现,使得程序员不必再考虑兼容性问题,极大的降低了开发成本,缩短了开发周期。   它内置了Linq作为数据查询语言,统一了数据的提取,并简化了数据库连接的方式,利用visual studio,通过简单拖拽就可以自动生成数据表结构对应的一系列类,可方便的通过.net framework 4.0提供的数据List泛型来获取数据,进一步简化和统一了开发过程。   Silverlight程序的结构可以大致由以下的图形来表示。   图1表示了层次调用关系,Silverlight的数据来源是基于Wcf网络服务的,由Wcf作为数据提供者,通过HTTP协议将所需的数据提供给Silverlight应用程序,Silverlight则控制如何将数据传送到XAML表示的展示层,WCF下层则通过Linq与数据库进行交互。   这种架构实际上是一整套企业web解决方案。   由此而来的就是微软的MVVM设计模式。   微软在传统的model上又分出了一层model view,也就是数据视图层,并且从view层分出了一层view model,并且将controll层省略去,实际上是将问题简单的划分为数据和展示两部分,但是其中数据与展示逻辑的接合部分由过去的controller变成了model view和view model。如下图:   如图2所示,可将程序架构大体划分为两块,展示层,和数据层,两边的工作都相对单纯和独立,展示层就负责把数据拿到之后怎样展示给用户,包括一系列动画,事件的响应等等,这些均是在客户端完成。   数据层则负责如何将数据通过Linq,以不同的wcf service提供给前端,也就是怎样取数据,取哪些数据的问题。   这也就是model view的任务。而如何将调用WCF方法获取到的数据展示到前端,通过XAML所提供的动画,图形,媒体等元素展现给用户就是view model的任务。   这样,就进一步实现了数据与展示的分离,而将controller的作用分成了两部分,model view和viewmodel,从而增加了前后端的并行性,使得问题可以以前后端对称的方式解决,不会弱化前端设计者所起的作用。然而这在某种程度上也带来了问题,如果数据整理的工作没有分割明确,究竟是有前端去处理还是由后端去整理可能会成为前后端人员发生争议的地方。   那么,如何将获取到的数据通过前端的代码转化成可以给用户使用,或者说,可以友好的与用户进行交互的方式设计,并展现出来,便成了项目的重要的组成部分,用户体验的好坏,整体项目的成功与否,很大程度上决定于前端的实现。   本文作者在经过了反复的实践

文档评论(0)

1亿VIP精品文档

相关文档