Silverlight 框架

Silverlight 框架,第1张

概述Silverlight 框架       刚开始接触Silverlight就有幸看到guozili 关于“基于Silverlight的精简框架”的博文,不但言简意赅,而且实现的效果也是夺目三分。我已经在其基础上开发了自己的Siliverlight作品,当时感觉他的框架数据服务部分稍微麻烦了点,因为直接添加web 引用的方法来访问web services 或者 wcf 实现数据交互已经相当简单了。可 Silverlight 框架

 

    刚开始接触Silverlight就有幸看到guozili 关于“基于Silverlight的精简框架”的博文,不但言简意赅,而且实现的效果也是夺目三分。我已经在其基础上开发了自己的Siliverlight作品,当时感觉他的框架数据服务部分稍微麻烦了点,因为直接添加web 引用的方法来访问web services 或者 wcf 实现数据交互已经相当简单了。可后来发现web services 一旦更新,相应的web引用也要更新一次,而且部署的时候还有修改配置文件的web连接,确实是麻烦多多,也很难把这些web访问的方法common一下。现在回顾这篇文章,顿时茅塞顿开。古语有句话说的非常好:温故而知新。现在我又重新从这篇文章里吸收到其中的精华了。

     废话少说,现在直接贴出作者的博文来让大家认识一下:

 

基于Silverlight的精简框架

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

项目文件说明:



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.Method@R_419_6889@ 
=   " 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
        }

一、框架整体分为5块(界面、服务端、业务逻辑层、数据访问层、通用层),包含15个项目,通过配置web.config,其中的Remoting服务端可以去掉,变为界面层直接访问逻辑层.
可以参考下面此图:

二、下面是数据请求的过程
1.界面层通过Task发送Request请求,最终调用了httpRequest请求一个httpHandle
2.httpHandle会截取到此请求,发送给remotingServer处理,
3.server会把此请求的数据直接发给业务逻辑层处理,
4.业务逻辑层会进行反序列化,提取请求中方法名和参数,通过method.invoke(dalimpl,Paras)动态执行数据层相应的方法
5.把method.invoke返回的实体装载到Response里,Response.ToJson()返回Json结果
6.返回到界面层时会进行反序列化,还原Response,Response.data as entity即是数据层返回的entity

可以参考下面此图:

三、Core里面的核心3个对象:



下一篇


且源代码:http://files.cnblogs.com/guozili/EasySL.zip

总结

以上是内存溢出为你收集整理的Silverlight 框架全部内容,希望文章能够帮你解决Silverlight 框架所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1061975.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-25
下一篇 2022-05-25

发表评论

登录后才能评论

评论列表(0条)

保存