« 上一篇下一篇 »

数据传输对象模式

数据传输对象一个为了减少网站建设编码过程中方法调用次数而在进程间传输数据的对象。

网站建设编码中当使用远程接口时,例如使用远程外观模式,那么每一次调用的代价都是非常大的。所以需要减少调用的次数,这就意味着每一次的调用都会传输大量的数据,可通过多种方法达到此目的,例如传人大量的参数,但是这样会使应用很笨拙,而且不灵活。

解决的办法就是传递一个数据传输对象,这个对象将保留调用需要用到的所有数据。它需要被序列化以便能在进程中传输。通常,在服务端有一个转换器,这个转换器负责在DTO与业务对象之间进行数据的转换。

很多时候,数据传输对象存储的数据量会远远大于客户端对象所需要的数据量,以备后用。由于远程调用存在网络延时,我们宁愿每次多传输一些数据以避免错误,也不愿意为了某些错误做多次的调用,例如在订单管理系统中,如果客户端对象发送订单数据相关的请求,那么返回的数据传输对象中将包含订单数据、用户数据、订单项数据、订单项的产品数据和一些额外的附加信息等(当然,是否传输这么多的数据,需要根据需求而定)。

通常我们不会将业务层中的对象传输给客户端。一个很重要的原因就是不想客户端看到业务类,如果把业务类传输给了客户端,那么相当于把整个业务层都告诉了客户端(因为对象在序列化的时候会序列化所有被引用的对象),一旦业务类结构方式变化,就会产生“牵一发而动全身”的效果。

在数据传输对象中,所有的字段都是非常简单的原始类型,例如都是String、DateTime等基础类型,或者包含其他一些数据传递对象。保持数据传输对象的结构简单主要是为了序列化时更方便,并且让传输双方更容易理解。

有一点需要注意的就是,数据传输对象的设计是围绕特定的客户端需求进行的,这也就是我们看到的数据传输对象和Web页面或其他GUI界面相关联的原因。

« 上一篇下一篇 »