Silverlight框架设计(一)
前言
间一直致力于Silverlight技术的学习和研究,经过了这段时间的学习也有许多心得,在此记录下来同时和大家分享一下。本章主要是侧重于Silverlight系统框架设计方面;其核心问题就是Silverlight客户端怎么与服务起交互;基于MSSQL可以通过RIA Serivces来实现,相对来说比较方便,由于我对RIA Services没有过学习,所以没有的发言权,在此不做评价。在Silverlight2.0时,就有一个EasySL框架,公司有其他项目组在用,据同事介绍使用效果还不错;由于本人在实际项目中未曾使用,同样没有发言权,有兴趣的可以学习一下。在此啰嗦了几句介绍了两个比较流行的Silverlight框架。
老版本系统
一、系统介绍
此系统是基于Silverlight4.0 + oracle 9i数据库,Silverlight客户端实现是基于实体类绑定,客户端实体类实现INotifyPropertyChanged接口,并通过PropertyChangedEventHandler事件,生成新增,修改,删除等SQL语句,之后调用WCF服务执行SQL语句,完成系统业务功能。
二、系统结构
三、系统类库介绍
以下仅简单介绍系统核心类库的作用以及相关核心类的作用。
1. ECI.SL.Common
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
ECI.SL.Common系统通用类库
类名
作用
AutoCompleteComboBox
支持Code和Name查询自动完成控件
DataPager.cs
支持真分页分页控件
3. ECI.SL.Converter
此类库用于参数的键值的转换,每个Converter都要实现IValueConverter,完成参数代码和参数名称的转换
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作用。这样就会带来客户端实体类,不能和服务器端实体类公用等一系列问题;接下来我会介绍怎么带来的新问题。
六、结束语
由于第一次写博文,还望大家包容我的书面表达能力;有错误的地方欢迎大家批评指正。
出处:http://ajian.cnblogs.com
本文版权归作者和博客园所有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文链接,否则保留追究法律责任的权利。