采用强类型数据集和hibernate的强类型对象,都有如下的缺陷:
{
缺点
•
可能需要太多的类。如果选择了使用强类型的 DTO,则可能必须为每个远程方法创建一个(如果考虑返回值,则为两个)DTO。即使在粗粒度接口中,这也可能导致大量的类。编写如此数量的类的代码并管理这些类会是很困难的。使用自动代码生成可以在一定程度上缓解此问题。
•
增加计算量。如果将服务器上的一种数据格式转换为可以跨网络传输的字节流,并在客户端应用程序内转换回对象格式,可以带来相当大的开销。通常,需要将来自多个源的数据聚合到服务器上的单个 DTO 中。要提高通过网络进行远程调用的效率,必须在任一端执行其他计算,才能聚合和串行化信息。
•
增加编码工作量。可以用一行代码完成将参数传递到方法的操作。使用 DTO 要求实例化新对象,并为每个参数调用 setters 和 getters。编写此代码可能是很乏味的。
}
上述是MSDN上摘录的。
我的想法是,构建一个通用的持久层,实现非类型化数据集的数据增、删、改、查,可极大提高开发效率,并且可以和数据绑定控件契合使用,这种架构也能符合实际开发项目中需求经常变动大的状况,至少不必重新翻查大堆的代码(即使使用工具也是费心费力的)。
本人已在Delphi上实现过一个通用持久层引擎,正计划在ADO.NET+C#上也如法炮制一个,也想听听大家的意见。