首页 | 编程语言 | 网站建设 | 游戏天堂 | 冲浪宝典 | 网络安全 | 操作系统 | 软件时空 | 硬件指南 | 病毒相关 | IT 认证
软讯网络 > 编程语言 > .NET > C#.NET > Open Session in View 、DTO、ForceLoad?????
【标  题】:Open Session in View 、DTO、ForceLoad?????
【关键字】:Open,Session,in,View,DTO,ForceLoad
【来  源】:http://SilenceCliff.cnblogs.com/archive/2006/03/27/360078.html

Open Session in View 、DTO、ForceLoad?????

        

    如果不是在.net下的DataSet(数据源控件)DataGrid(数据绑定控件)下进行企业开发的话,多半会使用分层的机制进行并行开发。

O/R Mapping IoC Container再到Web Framework.逻辑分层深入人心。

     分层,然后对象也细分了,Entityvalue objectpersistence object, 协作对象,业务对象……

    别的不想多说,只说说DTO的历史,以及Web开发中遇到的Open Session in View

    DTO其前身是VO,值对象,其出现环境是作为EJB的补丁模式出现,以求解决多次跨越多个层次的数据传输问题。并且通过粗粒度的数据访问接口减少远程调用的次数,以提高整个基于EJB的分布式应用的性能。

    而今,实践证明,逻辑分层并不适合物理分层,(layer != tier )。Web 应用的并置往往得到更好的性能。这种系统级的重构,大大削弱了DTO这个模式的存在价值。没有性能的提高,反之,需要编写大量的代码。不少人把DTO纳入了后EJB 时代的反模式之列。

捍卫DTO的人自然也有他们的辩护,VO并不总是等于PO,有时POVO小,有时又比VO要大。此外,如果直接把PO放到界面上,会产生两点问题:一、数据存储实际上越过了逻辑层,直接在表现层和持久层之间传递。二、表现层开发依赖于数据库表,并行开发受到影响。

Rod Johson在《J2EE without EJB》中,似乎也是倾向使用PO直接呈现到界面上,我的判断是基于他提到的Open Session in View这样一个界面渲染时解决PO延迟加载的问题。

问题很明显了,如果使用DTO 或者 VO,那么根本不用担心这类延迟加载的问题。代价是必须维护更多的DTO

 

但是如果我两者的负担都不想要呢?

最简单的方案就是——不要延迟加载,这很暴力原始,但显然在多数情况下,这样的简单导致的性能乏善可陈是我们不能接受的。

 

那么还有办法吗?

再回过头去看看DTO DAO

DTO发展自 VO,既而TSS上的人更是精雕细琢,DTO 又产生了若干种类。

EJB Design Pattern》中列举的就包括:Domain DTOCuston DTO Data Transfer HashMapDataTransfer Rowset

而在《Core J2EE Pattern DAO的策略有着类似的分类。

可见,要么是DTO多样话,要么是DAO提供的数据访问接口多样化。

要么是定制几个初始化级别不同的DTO,要么是通过不同的DAO接口返回初始化程度不同的PO(或VO

似乎天下永远没有免费的午餐。利弊权衡永远的由你自己左右。最近公司的一个产品就打算使用定制更多DAO接口通过 Hibernate.Initialize强制加载实体的更个字段。

这样解决延迟加载,以求绕过Open Session in ViewDTO。那么代价呢?

更多的DAO方法。DAO的不可移植?………………

还在权衡中……

 

ESFramework介绍之(17)―― 支持漫游用户和跨区域功能请求:【上一篇】
组件编程(7) Component DesignerAction(智能标记):【下一篇】
【相关文章】
  • How to cross-compile OpenSSL for ARM
  • Readme for the MontaVista* Linux* 3.1 OpenSSL*/OCF and Intel? IXP400 Software v1.4 Integration
  • 蓝点:一家本土Linux企业的跌宕浮沉(上)
  • 蓝点:一家本土Linux企业的跌宕浮沉(中)
  • 蓝点:一家本土Linux企业的跌宕浮沉(下)
  • 交叉编译OpenSSL for IXP425 ARM Platform by MVL 3.0
  • 交叉编译OpenSSH for IXP425 ARM Platform by MVL 3.0
  • OpenSSH的安装和设置
  • 以gpac/Osmo4远程播放Darwin Stream Server流化的媒体(一)
  • Linux引导的恢复
  • 【随机文章】
  • 12.3.3.26 ?: expressions
  • SUNWEN教程之----C#进阶(六)
  • TCPD 与使用 IPFWADM 来设定防火墙
  • BSD系统调用规范
  • VC写的MSN Messenger模仿程序- -
  • 配置文件的读取,纯C代码
  • ClearCase Config_Spec 规则之UCM规则
  • 请问上面的BANNER栏想加一个象官方一样的背景或广告BANNER,如何修改?
  • XP实用技巧:用回收站加密文件夹
  • 你相信吗 五年十五个网站改变世界
  • 【相关评论】
    没有相关评论
    【发表评论】
    姓名:
    邮件:
    随机码*
    评论*
          
    |  首 页  |  版权声明  |  联系我们   |  网站地图  |
    CopyRight © 2004-2007 软讯网络 All Rigths Reserved.