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提供非常灵活和简单的途径,在后面的文章中我们会介绍。
即然前端后端是在逻辑上划分的,所以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提供非常灵活和简单的途径,在后面的文章中我们会介绍。
相关文章推荐
- CSLA.NET快速入门系列——DataPortal实现模式(转)
- CSLA.NET快速入门系列——实现DataPortal扩展(二)
- CSLA.NET快速入门系列——实现DataPortal扩展(三)
- CSLA.NET快速入门系列——实现DataPortal扩展(一)
- CSLA.NET快速入门系列——实现子对象在WcfPorxy模式下的懒加载(LazyLoad)
- ActiveMQ 快速入门教程系列 第二章 发布-订阅者模式实现
- CSLA.NET快速入门系列——命令对象(CommandObject)
- ASP.NET 2.0 快速入门系列课程
- 【ASP.NET Core快速入门】(十)Cookie-based认证实现
- [Silverlight入门系列]使用MVVM模式(7):ViewModel的INotifyPropertyChanged接口实现
- Sencha Touch 2 快速入门系列(六)-- 数据(Data)
- [Asp.net 开发系列之SignalR篇]专题一:Asp.net SignalR快速入门
- go语言快速入门:简单工厂模式的实现(23)
- ActiveMQ 快速入门教程系列 第一章 点对点消息实现
- [渣译文] 使用 MVC 5 的 EF6 Code First 入门 系列:为ASP.NET MVC应用程序实现继承
- 微信和支付宝支付模式详解及实现(.Net标准库)- OSS开源系列
- Quartz.NET学习系列(一)--- 快速入门
- [推荐]ASP.NET 2.0 快速入门系列课程(附代码示例)[WMV]
- BlogEngine.Net架构与源代码分析系列part3:数据存储——基于Provider模式的实现
- BlogEngine.Net架构与源代码分析系列part3:数据存储——基于Provider模式的实现