随笔-12  评论-161  文章-0  trackbacks-7

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 阅读(2107) 评论(14)  编辑 收藏 网摘

评论:
#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[未注册用户]
谢谢:)
  回复  引用    
发表评论

昵称: [登录] [注册]

主页:

邮箱:(仅博主可见)

评论内容:

  登录  注册

[使用Ctrl+Enter键快速提交评论]

0 1328222




相关文章:

相关链接: