Silverlight框架设计(一)

前言

间一直致力于Silverlight技术的学习和研究,经过了这段时间的学习也有许多心得,在此记录下来同时和大家分享一下。本章主要是侧重于Silverlight系统框架设计方面;其核心问题就是Silverlight客户端怎么与服务起交互;基于MSSQL可以通过RIA Serivces来实现,相对来说比较方便,由于我对RIA Services没有过学习,所以没有的发言权,在此不做评价。在Silverlight2.0时,就有一个EasySL框架,公司有其他项目组在用,据同事介绍使用效果还不错;由于本人在实际项目中未曾使用,同样没有发言权,有兴趣的可以学习一下。在此啰嗦了几句介绍了两个比较流行的Silverlight框架。

 

老版本系统

一、系统介绍

此系统是基于Silverlight4.0 + oracle 9i数据库,Silverlight客户端实现是基于实体类绑定,客户端实体类实现INotifyPropertyChanged接口,并通过PropertyChangedEventHandler事件,生成新增,修改,删除等SQL语句,之后调用WCF服务执行SQL语句,完成系统业务功能。

二、系统结构

clip_image001

三、系统类库介绍

以下仅简单介绍系统核心类库的作用以及相关核心类的作用。

1. ECI.SL.Common

clip_image002

ECI.SL.Common系统通用类库

类名

作用

CompressHelper.cs

压缩和解压与WCF交互是传输的数据

EntityDescAttribute.cs

标识客户端实体类对应的数据库表名

FieldDescAttribute.cs

标识客户端实体类属性对应数据库是否为主键、列名及数据类型

MouseClickManager.cs

实现DataGrid双击事件类

PropertyBase.cs

客户端实体类的基类,主要实现INotifyPropertyChanged接口,并为拼接SQL语句做准备。

TabToEnter.cs

将回车转换为Tab

ValidationUtil

页面校验通用类

2. ECI.SL.Controls

clip_image003

ECI.SL.Common系统通用类库

类名

作用

AutoCompleteComboBox

支持Code和Name查询自动完成控件

DataPager.cs

支持真分页分页控件

3. ECI.SL.Converter

此类库用于参数的键值的转换,每个Converter都要实现IValueConverter,完成参数代码和参数名称的转换

clip_image004

4. ECI.SL.DALServices

此类库封装了WCF服务的数据库访问方法,包含了自动拼接SQL语句的功能。

5. ECI.SL.Entities.Client

Silverlight客户端实体类库,用于Silverlight控件绑定。

6. ECI.SL.Params

支持参数的多语言切换功能。

7. ECI.SL.View

Silverlight客户端

8. ECI.SL.WCF.Host

WCF服务站点,数据库访问接口。

9. ECI.SL.WCF.Services

基于Enterprise Library 5.0通用的据库访问方法。

四、系统优缺点

缺点:

WCF仅仅包含了基本的数据库访问的底层方法,这样就会导致一下几个问题:

1. 业务逻辑和UI部分都放在了客户端导致,客户端压力较大;

2. 业务逻辑实现过程中,如有多次与数据库交互,那么需要多次异步交互完成,这样导致WCF服务压力较大,而且要消耗网络资源,并延长了用户等待时间。

3. 系统业务功能不能被其他系统通过WCF服务调用。

优点:

能够满足简单业务逻辑系统开发需求,并且执行效率比较高。

五、解决方案

解决方案很简单,就是将业务逻辑移到WCF,Silverlight仅仅起到UI作用。这样就会带来客户端实体类,不能和服务器端实体类公用等一系列问题;接下来我会介绍怎么带来的新问题。

六、结束语

由于第一次写博文,还望大家包容我的书面表达能力;有错误的地方欢迎大家批评指正。

posted @ 2010-10-29 14:10  D董一点  阅读(3789)  评论(6编辑  收藏  举报