DTO是什么?
来源:学生作业帮助网 编辑:作业帮 时间:2024/11/09 04:45:19
DTO是什么?
DTO是什么?
DTO是什么?
远程调用(那些必须跨越网络的调用)速度缓慢.虽然许多远程调用框架可以隐藏进行远程调用的复杂性,但是它们不能消除发生通信所需的步骤.例如,必须先找到远程对象位置,而且建立与远程计算机的连接,然后才能将数据串行化为字节流,然后可能进行加密,最后才能将其传输到远程计算机.
在考虑网络性能时,必须同时考虑滞后时间和吞吐量.简单地说,滞后时间描述了数据的首字节到达目的地之前所经过的时间.吞吐量描述了在某个时间段(例如 1 秒)内通过网络发送的数据字节数.在基于 IP 路由的现代网络(例如 Internet)中,滞后时间可以是比吞吐量更大的因素.这意味着,传输 10 字节数据所用的时间可能几乎等于传输 1,000 字节数据所用的时间.在使用无连接协议(如 HTTP)时,此效果尤其明显.通常,网络速度越快可以使吞吐量得以增加,但是,要减少滞后时间则会更加困难.
在设计对象接口时,好的做法是将大量信息隐藏在对象内,并提供一组细粒度方法来访问和操作该信息.细粒度意味着每个方法都应该负责单个的、相当小的和基本的功能单位.此方法简化了编程,并提供了对对象内部的更佳抽象,从而增加了重用的可能性.必须根据以下事实对此进行平衡取舍:使用较细粒度的方法意味着需要调用更多的方法才能执行高级别的任务.通常,在同一进程内调用方法时,这些额外函数调用的开销是可接受的;但是,在跨进程和网络边界调用这些方法时,开销可能变得难以接受.
避免远程调用中固有的滞后时间问题的最佳方法是进行更少的调用,并让每个调用传递更多的数据.做到这一点的一种方法是,使用长参数列表来声明远程方法.这样,
客户端就可以在单个调用中将更多的信息传递给远程组件.但是,这样做会使针对此接口的编程容易出错,因为程序很可能仅按调用语句中的位置来调用外部方法的参数.例如,如果远程方法接受 10 个字符串参数,则开发人员很容易按错误顺序传递参数.编译器将无法检测到这样的错误.
长参数列表无助于从远程调用向客户端返回更多的信息,因为大多数的编程语言将方法调用的返回类型限制为单个参数.而巧合的是,在传输大多数数据时通常需要返回较多信息.例如,许多用户接口传输少量的信息,却希望返回大量结果数据.
解决方案 创建一个数据传输对象 (DTO),用该对象包含远程调用所需要的所有数据.修改远程方法签名,以便将 DTO 作为单个参数接受,并将单个 DTO 参数返回给客户端.在调用方应用程序收到 DTO 并将其作为本地对象存储之后,应用程序可以分别对 DTO 发出一系列单独的过程调用,而不会引发远程调用开销.