您的位置:首页 > 其它

CSLA.NET快速入门系列——DataPortal实现模式

2012-08-01 16:56 591 查看
DataPortal是CLSA的一个核心概念,它从逻辑上将代码分为两个部分的代码:一部分为客户端代码(以下简称前端),一部分为服务端代码(以下简称后端),前端代码一般执行一些数据预处理,验证及提供数据实体等,后端代码一般执行数据存取。

即然前端后端是在逻辑上划分的,所以DataPortal可以很方便的通过配置实现前端和后端的物理部署,即既可以前后端部署在一起,也可以前后端部署在不同的地方。

不管实际部署如何,DataPortal中在前端和后端传递的对象应该是移动对象(MobileObject,实现了IMobileObject接口),象我们常见的业务对象和命令对象等都是移动对象。

DataPortal的实际运作有点复杂,为了更直观的理解DataPortal是如何运作的,我们通过业务对象更新(非FactoryObject模式)的时序图来说明:



图中的BusinessObject为业务对象,业务对象分别在第二栏和最后一栏,表示第二栏执行的是前端代码,最后一栏执行的是后端代码。分步骤说明如下:1. 当UI中需要提交一个业务对象到数据源时,调用业务对象的Save方法2. 业务对象调用Csla.DataPortal的Update方法3. Csla.DataPortal根据配置取得相应的Csla.DataPortalClient.IDataPortalProxy(DataPortal代理),并调用其Update方法。4. DataPortal代理将业务对象“移动”到Csla.Server.DataPortal,并调用其Update方法。(此步骤中的“移动”即为由前端转到后端,不同的DataPortal代理的移动方式不同)。5. Csla.Server.DataPortal根据配置取得相应的Csla.Server.IDataPortalServer(DataPortalServer),并调用其Update方法6. DataPortalServer根据业务对象的状态确定调用业务对象相应的DataPortal方法(DataPortal_XYZ),产接收更新后的BusinessObject。7. DataPortalServer将新BusinessObject返回给Csla.Server.DataPortal。8. Csla.Server.DataPortal将新业务对象“移动”到DataPortal代理。(此步骤中的“移动”即为由后端转到前端,不同的DataPortal代理的移动方式不同)。9. DataPortal代理将新BusinessObject返回给Csla.DataPortal。10.Csla.DataPortal将新BusinessObject返回给原BusinessObject。11.原BusinessObject将新BusinessObject返回给UI(调用方)
其中步骤4,8涉及到前后端转移(其实就是对象序列化传送,由于CSLA框架已经提供一系列的基类,我们无需知道和关心其中的复杂性),不同的DataPortal代理有不同的实现方式。同时,Csla框架中的基于抽象(接口)编程,为我们实现自己扩展的DataPortal提供非常灵活和简单的途径,在后面的文章中我们会介绍。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: