silverlight与数据模型设计模式

合集下载

基于Silverlight技术的本体编辑器的设计与实现

基于Silverlight技术的本体编辑器的设计与实现

基于Silverlight技术的本体编辑器的设计与实现摘要本体的构建离不开工具的支持。

随着本体在人工智能、语义互联网、电子商务、信息检索和抽取等领域的广泛应用,本体已经成为现在的一个研究热点,涌现出了许多本体构建工具。

选择合适的构建工具对于快速、成功地构建一个本体至关重要。

本体编辑工具的多样化和差异化在很大程度上是由知识表示形式与本体描述语言的多样性决定的。

各种不同的本体编辑工具各有优势,也都存在一定的问题,缺乏一种占统治地位的,得到领域专家与本体研究者广泛认可的工具。

当前本体编辑工具的主要问题是不同构建工具适用的本体描述文件无法兼容;大多数工具以文件形式存储本体内容,只有少数支持数据库存储;大多数编辑工具不支持本体的重用,及分布式开发。

本文针对目前本体编辑工具所具有的不足,顺应本体编辑工具的发展趋势介绍了一种基于富客户端的本体编辑器的设计与实现。

此系统主要实现了本体的图形化浏览和编辑功能。

本文的主要工作如下:概括介绍了本体论的相关理论以及本体研究的现状,通过对现有本体编辑工具的分析,论述了构建新的本体编辑工具的必要性。

总结分析了目前一些本体编辑工具所采用的本体描述语言,大多数是基于OWL的具有自己特色的本体描述语言。

这些描述文件只适用于自身的编辑工具,不同的描述语言无法通用。

针对此弊端,概括介绍Web本体描述语言OWL,采用标准本体描述语言来构建本体,具有更为广泛的应用性。

简单介绍了系统开发所需要的技术,包括Silverlight和MVC等。

详细介绍系统整体架构的设计以及本体库的构建。

实现了本体的图形化浏览和编辑功能。

图形表现更加丰富,图形可以拖动,类图可以展开合起,展开显示类的详细信息,包含属性,各种关系和操作,合起则只显示类的名称信息。

实现了多视图地显示,可同时显示图形化的视图和本体源描述文件的视图。

本体的编辑功能则包含本体的新建,详细信息的编辑等。

关键词:本体,富客户端,OWL,图形化浏览, SilverlightDesign and Implementation of Ontology Editor Based on Silverlight TechnologyAbstractThe ontology building can’t do without the support of tools. The ontology has been a hot research point as the widespread use in many fields, such as artificial intelligence (AI), semantic web, electronic commerce, information retrial and extraction and so on. And a lot of ontology build out tools appear. It’s very important to choose a suitable tool for quickly and succeed building ontology.For the most part, the diversification and differentiation of ontology edit tools are decided by the diversification of knowledge representation and ontology description languages. All kinds of ontology edit tools have their own strengths and certain shortages as well. We are lacking in a predominantly tool which is widely approved by the domain experts and ontology researchers.The main problems of current ontology edit tools are including those the owl description languages used by different tools are not compatible, and most of the tools store the ontology contents using documents, only few supports database storage and most of the tools don’t support ontology reuse and distributed development.On account of the shortages of the present ontology edit tools and conforming to the development tendency of the tools, this paper is introducing the design and implementation of an ontology editor based on rich client. This system mainly implements the ontology graphic browsing and edits functions. The main work of this paper contains:Summarize the related theories of ontology and the current ontology research situation. Then the paper discusses the necessity of creating new ontology edit tool by analyzing the current ontology edit tools.Summarize and analyze the ontology description languages adopted by the current ontology edit tools. Most are ontology description languages having their own feature based the web ontology language (OWL). These are suitable only to their own ontology edit tools. They aren’t compatible. On account ofthis shortage, the paper summarizes the web ontology language. It has wide applicability using standard ontology description language to create ontology.Simple introduce the necessary technology for developing the system, including Silverlight and MVC and so on. Then introduce the whole structure of the system and the ontology database building in detail.Realize the functions of graphic browsing and editing. The graphic expression is richer. Users can drag the graphics, unfold and fold the class graphics.When you unfold the class graphic, it shows the details of the class, including properties, kinds of relationships and operations. And when you fold the class graphic, it only shows the class name. We also realize the multi-view browsing. It can show the graphics view and the ontology description document view at the same time. The ontology edit function includes creating and details editing and so on.Keywords: Ontology, Rich client, OWL, Graphic browse, Silverlight目录1绪论 (1)1.1研究背景 (1)1.2本体编辑工具的发展 (1)1.3本文研究意义 (2)1.4本文的组织结构 (3)2本体理论技术概述 (4)2.1本体定义 (4)2.1.1本体在哲学中的定义 (4)2.1.2本体在信息科学中的定义 (4)2.2本体构成 (5)2.3本体分类 (6)2.4本体的作用与应用 (8)2.4.1本体的作用 (8)2.4.2本体的应用 (9)3本体描述语言及本体开发工具 (11)3.1传统的本体描述语言 (11)3.2网络本体描述语言 (12)3.2.1 XML&XML Schema (12)3.2.2 RDF&RDF Schema (14)3.2.3 OWL (15)3.2.4几种本体描述语言的比较 (18)3.3本体编辑工具 (18)3.3.1 Protégé (19)3.3.2 Hozo (20)4系统总体设计 (22)4.1系统的设计目标 (22)4.2系统的总体架构 (23)4.2.1 Model的设计 (23)4.2.2解析器与视图的设计 (25)4.2.3数据库的设计 (26)4.3系统的功能分析与设计 (26)4.4开发平台与核心技术 (28)4.4.1 Microsoft Visual Studio 2008 (28)4.4.2 Silverlight技术 (28)4.4.3 MVC设计模式 (30)4.4.4 Web Service (31)5系统的实现 (32)5.1系统总体模块的设计与实现 (32)5.1.1服务器端组成 (32)5.1.2客户端组成 (33)5.1.3系统各层次间的关系 (34)5.2系统基础模块的设计与实现 (35)5.2.1本体对象模型的实现 (35)5.2.2数据库的设计与实现 (38)5.2.3数据访问层的实现 (40)5.3本体浏览模块的实现 (446)5.3.1本体概念导航的实现 (46)5.3.2本体概念图形化显示的实现 (47)5.3.3本体源文件视图的实现 (53)5.4本体编辑模块的实现 (54)6总结与展望 (58)参考文献 (60)致谢 (61)个人简历 (61)在校期间研究成果 (61)1绪论1.1研究背景随着语义互联网的观念慢慢演化,作为其核心的本体,价值也逐步得到了体现。

基于Silverlight4.0的用户管理系统设计与实现

基于Silverlight4.0的用户管理系统设计与实现

基于Silverlight4.0的用户管理系统设计与实现摘要:以Visual Studio 2010和SQL Server 2005为平台搭建Silverlight 4.0三层架构解决方案,采用WCF RIA Services的方式操作后台数据库,以构建用户管理系统说明Silverlight 4.0平台下数据的操作使用方法。

关键词:银光;C#;WCF RIA Services;实体数据模型1 概述1.1 Silverlight概述Silverlight(中文名译为银光或银光技术)是微软公司开发的跨浏览器、跨平台的富互联网应用(RIA,Rich Internet Application)策略的设计、开发、发布平台。

Silverlight是一种全新的Web呈现技术,可以为用户提供内容丰富、界面炫美的交互体验,具有高效开发、高艺术性的特点。

至今微软已正式发布了Silverlight4.0,作为下一代Web技术的原型,这一技术正在得到不断的提升,越来越多的用户开始关注它的进一步发展,并已在实践中得到应用。

1.2 Silverlight项目的架构Silverlight项目可以搭建三层架构甚至多层架构,但这与通常的三层架构有不同之处。

Silverlight 4.0引入了WCF RIA Services,可以快速搭建多层架构,如同传统的B/S项目一般。

Silverlight项目在建立时就已经为用户搭建了清晰的三层架构轮廓,由于是以浏览器为依托的客户/服务器项目,因此客户端项目定义为表现层,表现层基于Silverlight技术;服务器端项目定义为中间层,中间层基于.Net技术;底层为数据层,数据层即物理数据库。

架构图如图1。

1.3 Silverlight项目的面向对象及数据库操作原理C#是面向对象的编程语言,但在Silverlight项目中,面向对象又有了新的诠释。

类可以是抽象、继承来的,也可以是用户控件、子窗体,为什么不可以是数据表呢?数据表完全合乎作为类的条件,因此作为项目的核心来考虑也不为过。

Silverlight应用程序设计

Silverlight应用程序设计
Silverlight 应用程序开发
课程内容
Silverlight简介 Silverlight结构与
CoreCLR
运行 开发工具 XAP、XAML与
Silverlight编程 布局 控件 Silverlight、HTML与
Javascript三者交互
Silverlight简介
1. Silverlight (银光)微软全力打造的一种跨平台、 跨浏览器的RIA( Rich Internet Application 富互联网应用程序)技术。
Application类。
开发工具
Microsoft Visual Studio 2010 Ultimate
Silverlight 4 Tools
用于开发 Silverlight 4 和 RIA Services 应用 程序的 Visual Studio 2010 外接程序和必备文 件
下载地址
在PAL层上定义了跟Win32相同的API接口,在 Mac操作系统上会被重新定向。
运行
Silverlight运行环境
Silverlight应用程序被托管在浏览器中,通 过Silverlight插件加载CoreCLR,然后 CoreCLR为应用程序创建AppDomian,最后初始 化SilverlightApplication类。
- agcore.dll - coreclr.dll - mscorlib.dll - system.*.dll
下图S是ilvSielvrelrilgighhtt结arc构hitecture的图例,可以把
之前的DLL对号入座:
Silverlight 结构
Silverlight 平台作为一个整体,由两个主要部 分以及一个安装程序和更新组件组成

Silverlight入门系列]使用MVVM模式(6):使用Behavior

Silverlight入门系列]使用MVVM模式(6):使用Behavior

Behavior把一些常用的行为封装成可重复使用的组件(Component),在理想状况下,Designer(设计师)或domain expert(特定领域的专家,例如财会人员、HR人员、或MIS)甚至可以完全不需要具备程序设计的观念,只需要了解基础的事件(Event)观念,就可以顺利的开发出一套系统,若需要实现特定的功能时,可商请developere为他们开发所需要的Behavior,designer只需要取得这些Behavior并使用即可。

例如,界面设计人员可以使用Expression Blend把一个Behavior拖到一个界面元素上,比如右键点击以后启动一段动画这个行为,这个界面元素就会自动执行,岂不是很清爽!(当然,执行函数还是要编程人员编写),来个例子:界面xaml:1<UserControl2xmlns="/winfx/2006/xaml/presentation"3xmlns:x="/winfx/2006/xaml"4xmlns:d="/expression/blend/2008"5 xmlns:mc="/markup-compatibility/2006"6xmlns:wm="clr-namespace:AsycValidation"7 xmlns:i="/expression/2010/interactivity" xm lns:ei="/expression/2010/interactions" x:Class="A sycValidation.MainPage"8mc:Ignorable="d"9 x:Name="MyUserControl"10 d:DesignHeight="300" d:DesignWidth="400">1112<Grid x:Name="Layout">13<TextBlock Height="32"HorizontalAlignment="Left" Margin="41,53,0,0" x:Name=" textBlock1" Text="Company:"VerticalAlignment="Top" Width="66"/>14<TextBox Height="31"HorizontalAlignment="Left" Margin="120,45,0,0" x:Name="t extBox1" Text="{Binding CompanyName, Mode=TwoWay, NotifyOnValidationError=Tru e}"VerticalAlignment="Top" Width="119"/>15<TextBox Height="30"HorizontalAlignment="Left" Margin="120,104,0,0" x:Name=" textBox2" Text="{Binding CompanyID, Mode=TwoWay, NotifyOnValidationError=True} "VerticalAlignment="Top" Width="119"/>16<Button Content="Button" Height="36"HorizontalAlignment="Left" Margin="120,156,0,0" x:Name="button1"VerticalAlignment="Top" Width="81">17<i:Interaction.Triggers>18<i:EventTrigger EventName="Click">19<ei:CallMethodAction MethodName="button1_Click"TargetObject="{Binding Elemen tName=MyUserControl}"/>20</i:EventTrigger>21<i:EventTrigger>22<ei:CallMethodAction MethodName="button1_loaded"TargetObject="{Binding Eleme ntName=MyUserControl}"/>23</i:EventTrigger>24</i:Interaction.Triggers>25</Button>26</Grid>27</UserControl>界面xaml.cs:1using System;2using System.Collections.Generic;3using System.Linq;4using ;5using System.Windows;6using System.Windows.Controls;7using System.Windows.Documents;8using System.Windows.Input;9using System.Windows.Media;10using System.Windows.Media.Animation;11using System.Windows.Shapes;1213namespace AsycValidation14{15publicpartialclass MainPage : UserControl16 {17public MainPage()18 {19InitializeComponent();2021CompanyModel m1 = new CompanyModel() { CompanyID = 1, CompanyName = "abc" }; 2223companyViewModel = new CompanyViewModel(m1);24this.DataContext = companyViewModel;2526 }2728publicvoid button1_Click()29 {30MessageBox.Show("ok");31 }3233publicvoid button1_loaded()34 {35MessageBox.Show("loaded");3637 }3839public CompanyViewModelcompanyViewModel { get; set; }4041 }42}注意给这个button定义了两个CallMethodAction的behavior:一个是点击事件,一个是加载Loaded事件。

基于Silverlight的轻量级MVC模式探讨

基于Silverlight的轻量级MVC模式探讨
绍 了 实现 这种 轻 量 级 MV C模 式 的 方 法 , 明 M C模 式 不仅 适 用 于服 务 器 端 的 开 发 。 过使 用 第 三 方 控 件 也 能 在 客 户 端 发 表 V 通
挥作 用 。
【 关键词】 VC Sl rg tA PN T; jx e :M ;iel ,;S .E Aa. t v ih n
O、 述 概
有 其 它依 赖 于这 些 数 据 的视 图 都应 反 映 到 这些 变 化 。 因此 。 无论
在 各 种 基 于 We b的开 发 中 . C模 式 在 服 务 器 端 技 术 如 何 时 发 生 了何种 数 据 变 化 , 制器 都 会 将 变 化通 知 所 有 的视 图 . MV 控 A PN T JP P P的应 用 越 来越 广 泛 , 是 在 纯 粹 的 客户 端 技 导 致 显示 的 更新 。 实 际上 是 一种 模 型 的 变化 一 S .E 、S 、H 但 这 传播 机制 。 型 、 模 术 如 Fe I x和 S vrg t i elh 中却 使 用 得非 常 少 在 下 一 代 We l i b技 术 视 图 、 制器 三 者之 间 的 关 系和 各 自的主 要 功 能 。 图 l 控 如 所示 。
中, 客户 端 技 术又 是 满 足用 户不 断 增 长 的体 验 需 求 的关 键 . 因此 对 如 何 在 客 户 端 采 用 MV 开发 模 式 的探 讨 与 研 究 就 显 得 尤 为 C 重要 。
1 MV C模 式
自上 世 纪 8 O年 代 在 S all O中提 出后 . C模 式 在 软 m la 8 tk MV 件 开 发 中 越 来 越得 到 程 序 员 们 的青 睬 . 目前 的两 大平 台0 E 在 2E

Silverlight入门系列]使用MVVM模式(9) 想在ViewModel中控制Storyboard动画?

Silverlight入门系列]使用MVVM模式(9) 想在ViewModel中控制Storyboard动画?

实现 Treeview 的展开状态持久化和自动恢复,配合 MVVM 实现不容易。

所以,MVVM 的 核心概念理解不难,在具体使用上则问题多多。

今天要讲的话题就是一个 MVVM 使用上的 具体问题: Silverlight 中的 Storyboard 动画是否可以在 ViewModel 中来控制? 为什么想在 ViewModel 中控制 Storyboard?假设我的业务逻辑在 ViewModel 中, 业务操作好了保存 Save 成功了就需要启动一个动画: Stobyboard.begin()。

而这个动画在视图中,怎么去控制它?这个需求很普遍吧。

确实很 普遍,但实现就不那么简单了,不像下面这样的 Storyboard 启动那么简单:1:<Imagex:Name="myImage" 2:Source="/man.png"> 3:<Image.Triggers> 4:<EventTriggerRoutedEvent="Image.Loaded"> 5:<BeginStoryboard> 6:<Storyboardx:Name="myStoryboard"> 7:<DoubleAnimationDuration="0:0:2" 8:Storyboard.TargetName="myImage" 9:Storyboard.TargetProperty="Opacity" 10:From="0"To="1"/> 11:</Storyboard> 12:</BeginStoryboard> 13:</EventTrigger> 14:</Image.Triggers> 15:</Image>解决方法一: 解决方法一:ViewModel 中用事件 Event 通知 View 启动 Storyboard 动画ViewModel 是对界面逻辑、业务逻辑、和模型数据的封装和抽象,ViewModel 不依赖于 具体的 View 视图,所以 ViewModel 根本不知道具体的某个 Storyboard,怎么去启动这 个动画呢? 解决问题思路有好多:第一种方法就是很自然的想到在 ViewModel 中用事件 Event 通知 View 启动动画。

开源项目Silverlight工作流设计器

开源项目Silverlight工作流设计器

【开源项目】Silverlight工作流设计器Silverlight工作流设计器是一款开源项目,支持用户在线设计工作流程,或者项目流程,支持在线拖拽,以及鼠标右键支持。

具体来说,这样的流程设计器应该具有以下的特点:图形化的方式显示流程支持拖拽创建和修改流程导出图形对应的xml描述文件根据流程xml描述文件Silverlight工作流设计器是一款开源项目,支持用户在线设计工作流程,或者项目流程,支持在线拖拽,以及鼠标右键支持。

具体来说,这样的流程设计器应该具有以下的特点:∙图形化的方式显示∙支持拖拽创建和修改流程∙导出图形对应的xml描述文件∙根据流程xml描述文件显示流程图Silverlight构建图形化工作流程设计器(一)前言 Silverlight发布已经很久了,具体是什么就不多说,大家一定很清楚。

最关心的就是其中的跨浏览器能力,以及强大的用户界面表现能力。

于是决定使用它来实现一个流程设计工具,以替代以前的流程设计器(原来是用vml实现,只能在IE浏览器上工作),因为第一次接触silverlight,在学习、工作的过程中肯定会遇到很多的问题前言Silverlight发布已经很久了,具体是什么就不多说,大家一定很清楚。

最关心的就是其中的跨浏览器能力,以及强大的用户界面表现能力。

于是决定使用它来实现一个流程设计工具,以替代以前的流程设计器(原来是用vml实现,只能在IE浏览器上工作),因为第一次接触silverlight,在学习、工作的过程中肯定会遇到很多的问题,将这个学习新知识、解决问题的过程记录下来,肯定能找到许多志同道合的朋友,也请大家抱着这种态度阅读本文。

本文主要讲述使用2008开发一个基于silverlight的流程设计器。

在进入正文之前,先说一下开发环境的配置。

使用2008作为开发工具,需要下载一个Silverlight tools for virsual studio 2008 sp1,地址在/,安装后就可以使用2008来开发 silverlight 应用了。

silverlight与数据模型设计模式

silverlight与数据模型设计模式

silverlight与数据模型设计模式摘要本文主要从几个方面论述了silverlight与众不同的设计模式和从其中衍生的程序设计方法,也就是数据模型设计模式。

关键词设计模式;富用户体验;MVVM模式;数据模型设计模式;事件触发;面向对象;松耦合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),因此在任何机器和浏览器中都提供一致的表现,使得程序员不必再考虑兼容性问题,极大的降低了开发成本,缩短了开发周期。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

silverlight与数据模型设计模式摘要本文主要从几个方面论述了silverlight与众不同的设计模式和从其中衍生的程序设计方法,也就是数据模型设计模式。

关键词设计模式;富用户体验;mvvm模式;数据模型设计模式;事件触发;面向对象;松耦合中图分类号tp31 文献标识码a 文章编号 1674-6708(2011)55-0172-03silverlight 是微软推出的新一代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,从而增加了前后端的并行性,使得问题可以以前后端对称的方式解决,不会弱化前端设计者所起的作用。

然而这在某种程度上也带来了问题,如果数据整理的工作没有分割明确,究竟是有前端去处理还是由后端去整理可能会成为前后端人员发生争议的地方。

那么,如何将获取到的数据通过前端的代码转化成可以给用户使用,或者说,可以友好的与用户进行交互的方式设计,并展现出来,便成了项目的重要的组成部分,用户体验的好坏,整体项目的成功与否,很大程度上决定于前端的实现。

本文作者在经过了反复的实践和总结后发明了一种新的设计模式:数据模型设计模式。

这种设计模式是受启发于微软的code behind技术,它通过将前端页面与代码分离,使得代码可以控制前端展现层的行为来讲问题划分为外在形式和内在逻辑两部分。

xaml所引以为豪的绚丽动画,媒体元素,矢量动画等,由设计师所做作的部分,可以看做后台code所使用,调用的工具,后台的code对于数据的处理,用户操作所作的判断,构成了程序的内在逻辑,这就是微软的code behind技术。

也就是说code behind实际上就是对view和view model的分离,然而它们原本所阐述的是同一个问题。

以人类比较容易理解的方式来说就是,将数据的放进装载并展现数据的容器中的过程,被分成了什么样的容器与怎样放,这两个问题。

实际上,以面向对象的设计思想来看,实际上这两个组成部分所得到的对象只有一个,那就是装载了数据的容器,因此完全可以把它抽象为一个独立的对象。

这就是数据模型设计模式。

该设计模式的基本原理如下图所示:以上3个过程揭示了数据模型(容器的初始化阶段),数据模型在初始化之后,就可以与其他各个数据模型进行交互,包括数据的交互,包含关系,事件响应等等。

而事件响应则是通过微软的delegate对象,微软的事件都是通过委托来实现的,事件既然交由另外一个对象处理,那么就等于发出了一个委托,将如何对事件作出响应的过程委托给了其他对象。

并且事件对象也可以携带数据。

通过这种方式也就简化了实现的逻辑,更加便于人类理解并解决问题。

这种实现方式的唯一缺点就是,因为数据全部存储于展现层,存储于页面,如果数据量太大,有可能引起内存的紧张,导致程序运行缓慢,这时要通过有意识的优化代码,提高内存利用率,尽量避免将图像,视频的大量占用内存的对象始终存储于内存中。

而是只在需要的时候才载入。

这一切的实现都是基于一个事实,那就是silverlight对离线存储的支持,它已经不单纯是一个网页,而是一个可访问内存的应用程序,并且提供了比js更加强大的图形渲染能力。

从而为程序员开拓了开发绚丽复杂用户程序的可能性。

而普通的基于网页的网站,只能通过有限的方式访问session和cookie来解决部分问题,显然无法达到silverlight的效果。

因为silverlight的网络特性,在数据需要装载时往往需要访问网络资源,这时为了避免用户无止境的等待,需要异步的读取数据,这时就使用到了silverlight的webclient对象,它封装了一个对资源的请求从发出到结束的所有状态,可以在每个状态上加入侦听。

基于此接合前端动画的设计,可以制作出载入loading等异步反馈的对象。

该异步过程由以下几个部分组成:可以通过以上方式来实现进度条。

以下是对一个幼教系统的实现概述。

该系统分前后两端,前端需要能够展示教学素材和教案,教学素材由电影,音乐媒体,flash游戏,和文字材料组成。

后端负责教案的制作和教学素材的资源管理。

首先前端主要由以下功能部件组成:播放器。

翻页效果展示媒体资源的控件双端可出入的展示台控件。

可共选择电影集数的菜单。

载入资源时的loading控件。

各个页面均可看做由以上几个控件通过各种组合方式拼装在一起的整体。

那么使用数据模型设计模式来解决以上方案的方式如下:抽象出以上几个控件,并提供装载数据的接口,例如,播放器的数据接口为视频/音频文件的url,而播放器的播放停止快进,可拖拽的进度条等功能与所装载的媒体文件并没有关系,可以抽象出来单独实现,如此实现播放器控件。

翻页效果展示媒体资源的控件,数据接口为图片和泛型数据接口,也就是一个必须的用于翻页展示的图片和某一种可以灵活确定的泛型数据类型作为数据接口。

当接收到页面返回的该控件的鼠标点击事件,则将所携带的数据以带有参数的事件的形式触发出来,委托给上层对象处理,上层对象接到事件之后,例如事件参数为一个电影的url,那么就将该url通过播放器的数据接口对播放器进行装载,从而完成了从媒体资源控件到播放器的一次数据交互。

可见,采用数据模型设计模式使得框架清晰化,大大简化了程序的逻辑,并且提高了可复用性。

当多个页面需要使用播放器播放音频,或者其他资源时,或者需要使用媒体资源展示控件来用作其他用途时,就可以很方便的拿来使用。

这是数据模型设计模式结合了泛型与事件触发后,所达到的松耦合性所带来的好处。

以下,以一个页面的实现来解释该设计模式的运行机制:以下是界面功能图。

首先,翻页选择资源控件当接收到点击事件后,将对应点击对象所装载的资源介绍内容以事件的形式抛出,页面接到该事件后就将其所携带的信息装载入资源介绍控件,这时资源介绍控件就显示出了该资源的信息,点击播放就会进入第二个页面,播放器页面。

播放器页面收到资源介绍控件发出的对应资源的信息,其中包含了影片url地址,则对播放器控件进行数据载入,这时采取异步的载入方式,弹出loading对话框,显示载入进度,载入完毕后,进度条关闭,播放器已经可以对该url资源进行正常播放和控制了。

可见,数据模型设计模式所阐述的就是几个模型之间的关系,他们通过外在的页面环境来控制数据的流向,跳转和对应的动作,数据模型本身描述了客观世界所存在的数据与所依附的容器之间的关系,描述了数据的所在,容易被人类理解,也因此容易被实现和复用,没一个控件和模块都是可以单独拿出来使用的,他们之间的关联均是由事件驱动和接收事件的环境所决定的。

因此,这是一种最贴近实际生活的设计模式。

参考文献[1]chong-shan ran; ning li.design and implementation of communication model based on silverlight and wcf in eam system.information and financial engineering, 2010 2nd ieee international conference on digital object identifier.2010:590-593.[2]xiaochun zhou; chenlong shao.the design of virtual meeting system based on silverlight.artificial intelligence and education.2010 international conference on digital object identifier.2010:429-432.[3]li ping; ma li; cai changyu; zhu ling.research on application of ajax and silverlight technology in webgis. artificial intelligence and education.2010 international conference on digital object identifier.2009:2149-2152.。

相关文档
最新文档