随笔-19  评论-319  文章-0  trackbacks-7

基于Silverlight的精简框架之介绍

Silverlight的数据请求需要架设wcf、webservice或者webclient,而且中间数据需要序列化和反序列化,或者自己用linq解析,易用性不是很强,且比较麻烦,基于目前还没有统一和规范的silverlight开发模式,所以从五六个自己做过的基于Silverlight的中型项目,抽出核型代码形成一套精简框架,方便调用,扩充和分布式部署。

项目文件说明:
无标题-1.jpg

EasySL.Controls 封装了一些基于Silverlight的自定义控件,目前还没加进来
EasySL.Core   请求数据,返回数据的json序列化和反序列化机制,较之webservice xml性能好些
EasySL.Core.SL 和上面一样,Silverlight项目用
EasySL.Data 数据访问层实现
EasySL.Data.Interface 数据访问层接口
EasySL.Entity 实体层
EasySL.Service 业务逻辑,数据加工,缓存处理
EasySL.Share 一些常用helper
EasySL.Server Remoting server
EasySL.UI Silverlight主控件
EasySL.Web asp.net主页面

部署方式:
1.web.config里设置ServerEnable为false,将不需要开启remoting server,由web层直接请求业务逻辑层(EasySL.Service)
2.web.config里设置ServerEnable为true,然后启动remoting server(EasySL.Server),
将由remoting server代理访问业务逻辑层,易于分布式部署

简单使用:

//UI层page.xmal.cs
        
//初始化一个task
        this.getProductListTask = new Task();
        
//初始化请求数据
        getProductListTask.BeforeStart += new EventHandler<EventArgs>(getProductListTask_BeforeStart);
        
//回调时更新界面
        getProductListTask.Callback += new GetDataAsyncCompleted(GetProductListCallBack);

        
void getProductListTask_BeforeStart(object sender, EventArgs e)
        {           
            Task task 
= sender as Task;
            task.MethodName 
= "GetProductList";  //对应于数据层的方法名
            task.ReturnType = typeof(List<Product>); //对应于数据层的返回类型
            task.SetParameter("count"int.Parse(this.count.Text)); //对应于数据层的方法的参数
        }
        
        
public void GetProductListCallBack(Response response)
        {
             List
<Product> product = reponse.data as List<Product>;
             
//update UI.
        }
        
//所以你需要在数据访问层增加对应的方法:
        public List<Product> GetProductList(int count)
        {
             
//get data from xml or database
        }



  一些实现方法还不是很好,后面将完善代码,增加注释,发布新的版本,欢迎大家讨论
 附上此框架的一个应用:click
 且源代码:http://files.cnblogs.com/guozili/EasySL.zip
posted on 2008-11-06 16:24 guozili@163.com 阅读(3825) 评论(16) 编辑 收藏

评论:
#1楼 2008-11-06 16:35 | nasa      
期待发布!!
 回复 引用 查看   
#2楼 2008-11-06 16:40 | 木野狐(Neil Chen)      
界面很好看,但是太花了,导致没有看出这个框架体现在哪些方面。。
我感觉似乎是一个通用的数据访问解决方案?

 回复 引用 查看   
#3楼 2008-11-06 16:40 | 木野狐(Neil Chen)      
UI 的控件是第三方的吧?
 回复 引用 查看   
#4楼[楼主] 2008-11-06 16:47 | guozili      
@木野狐(Neil Chen)

是的,基本上是一个通用的数据访问解决方案,至于数据层你可以自己去设计。
而界面层你只需要通过task发送一个请求,然后在数据层增加相应方法就行,你无需关注中间层的序列化和反序列化,由框架自动帮你解析。

 回复 引用 查看   
#5楼 2008-11-06 17:08 | 木野狐(Neil Chen)      
@guozili
跟我做了一点雏形的东西想法类似,但是我才做了一点点。
我是用 DataSet 序列化/反序列化做通用的数据访问的。
我想如果用 json 也许性能会好的多,不知道你用什么思路实现的?

 回复 引用 查看   
#6楼 2008-11-06 18:14 | Windie Chai(笑煞天)      
偶觉得但看项目列表就很强大。。。支持。
 回复 引用 查看   
#7楼 2008-11-06 18:21 | lwens[未注册用户]
楼主给的例子不错。
要是提供源码就好了。可惜好好研究下在GIS的应用

另外源码下载不了。郁闷

 回复 引用   
#8楼 2008-11-06 18:25 | lwens[未注册用户]
另外楼主的GIS应用可以参考下这个
http://silverlight.idvsolutions.com/

 回复 引用   
#9楼 2008-11-06 18:39 | 阿布      
源代码下载不了。提示”系统禁止了使用下载工具下载或不允许外部链接“
这个源码是例子源码还是框架源码

 回复 引用 查看   
#10楼[楼主] 2008-11-06 18:42 | guozili      
@lwens
下载链接已更新

 回复 引用 查看   
#11楼 2008-11-07 08:21 | 高海东      
谢谢分享
 回复 引用 查看   
#12楼 2008-11-07 11:45 | gui[未注册用户]
请问以下楼主,两个项目内共享同一个文件是如何添加的?就是CS文件的图标上带个箭头,像快捷方式一样
 回复 引用   
#13楼[楼主] 2008-11-07 12:25 | guozili      
@gui
你需要手动用记事本打开如:EasySL.Core.SL.csproj
<Compile Include="..\EasySL.Core\Request.cs" /> 加上相对路径

 回复 引用 查看   
#14楼 2008-11-07 12:32 | gui[未注册用户]
谢谢:)
 回复 引用   
#15楼 2009-07-10 13:34 | 扬帆メ风中香      
谢谢
分享

 回复 引用 查看   
#16楼 2011-11-20 21:24 | 银光照钒粉      
能给份源码吗?506750072@qq.com
 回复 引用 查看   
昵称:guozili@163.com
园龄:5年9个月
粉丝:58
关注:0
<2008年11月>
2627282930311
2345678
9101112131415
16171819202122
23242526272829
30123456

搜索

 
 

常用链接

我的标签

随笔档案

相册

我的收藏

最新评论

阅读排行榜

评论排行榜

推荐排行榜