我的编程空间,编程开发者的网络收藏夹
学习永远不晚

DTO服务实现中的核心数据是什么

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

DTO服务实现中的核心数据是什么

这篇文章将为大家详细讲解有关DTO服务实现中的核心数据是什么,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。

 在一个Web服务的实现中,我们常常需要访问数据库,并将从数据库中所取得的数据显示在用户页面中。这样做的一个问题是:用于在用户页面上展示的数据和从数据库中取得的数据常常具有较大区别。在这种情况下,我们常常需要向服务端发送多个请求才能将用于在页面中展示的数据凑齐。

  一个解决该问题的方法就是根据不同需求使用不同的数据表现形式。在一个服务实现中较为常见的数据表现形式有MO(Model Object,在有些上下文中也被称为VO,Value Object)和DTO(Data Transfer Object)。MO用来表示从数据库中读取的数据,而DTO则用来表示在网络上所传输的数据。

  我们将讨论如何在一个Web服务的实现中使用DTO及MO,并会对其它一些相关数据表现形式,如View Model等进行简单地介绍。

Why DTO?

  无论是桌面应用还是长沙做网站公司的Web服务,其内部的数据表现都是非常重要的。在一个初学者了解一个系统的时候,其首先需要了解整个系统中的各个组件的作用,然后再了解系统中的Workflow,即在执行业务逻辑时各个组件是如何协同工作的。在了解了这两部分之后,该初学者需要做的事情就是详细地梳理一遍数据是如何在整个系统中流动的,即是整理并理解数据流(Dataflow)的过程。而在真正理解了数据流后,该初学者才具有了在系统中开发的能力。

  整理数据流的过程是一个逐步细化的过程:从鉴别数据结构到该数据结构中的每个属性到底是如何使用的。在整个数据流中,任何一个属性值的改变都可能会导致数据的处理方式发生变化。

  在整理数据流的时候我们要做什么样的事情呢?首先我们需要鉴别出到底哪些数据会在各个组件之间进行传送,在传送过程中进行了什么样的转化,这些数据是如何构建出来的,又由它构建了哪些数据,最终这些数据是否被持久化到了本地存储中等等。

  而在整理数据流的过程中,数据的转化常常是最难理解的部分。一个数据类型的定义常常与其运行环境有关。例如在一个电子商务网站中,一个表示商品的类Product可能包含了该商品的所有信息:商品的名称,品牌,详细介绍,价格等。在用户使用电脑浏览器浏览的时候,这些信息都将被显示在页面上。但是在用户使用手机进行浏览时,我们就需要考虑如何为这些手机用户节省流量的问题。一种节省用户手机流量的方法就是首先显示商品的简略信息,并在用户决定查看商品的详细介绍时再从服务端下载商品的详细信息。在这种情况下,包含商品所有信息的类Product将不再是适合传输的数据结构。

  而问题不仅仅出在需要将数据结构拆分的情况下,更可能出现在数据合并的情况中。例如网页的UE为了提高用户体验,要求在产品页面中直接将该商品品牌的详细信息显示在页面中。在这种情况下,我们就需要在表示商品的类Product中添加一个记录该商品品牌的域brand。但是在数据库中,表示商品的类Product可能仅仅记录了商品品牌的ID。因此在业务逻辑中,我们就需要将Product和其对应的Brand合并在一起。

  甚至说,我们可以将事情弄得更复杂一些:

我们展示了数据在一个系统中可能存在的多种不同表现形式。在图片的中央位置的是一个服务器,多种客户端都将从它那里获得产品信息。就像前面所说,为了节省客户端的流量,服务端向移动客户端所发送的数据将是产品信息在服务端中的简略版本。而在一个浏览器访问该产品的时候,表示商品品牌的信息将内嵌在产品信息之中,以提供更好的用户体验。除了与客户端通讯,服务端之间也可能产生信息的交换。在该交换过程中,表示产品的Product以及表示品牌的Brand则彼此独立地在服务端之间传递。而就一个运行在远端的Agent而言,其可能仅仅需要一个Product的ID来监控产品在生产制作方面的状态。

  而这一切数据都应当从系统的数据库中得到。数据库中的数据不可能同时存储并维护这一系列数据结构,因此在一个复杂的系统中,数据库中的数据表示与系统中所传输的数据之间常常是不同的数据结构。常见的情况则是将其分为两类:一类用来访问数据库,在系统中表现数据库中所记录的数据,叫MO,即Model Object;另一类用来在网络中传输,叫DTO,即Data Transfer Object。

服务中的DTOMO

  在了解了我们为什么需要DTO和MO等数据的不同表示之后,就让我们来看看这些数据表示在一个Web服务中是如何工作的。

  先让我们从最简单的Web服务分层开始说起。一个最简单的Web服务主要分为数据访问层(DAL),业务逻辑层以及表现层三个部分。其中表现层是运行在客户端的,而其它两个层次则运行在服务端。当数据从DAL层读取出来的时候,其所记录的数据与数据库中所记录的数据是一致的,因此它们就是我们这篇文章中讨论的MO。而在传输给客户端的时候,这些数据可能会和MO不同,因此其为DTO:

现在就让我们放大一下数据访问层,来看看数据访问层中MO所在的位置:

首先要强调的是,实现数据访问层的方式有很多种,而上图所展示的仅仅是一种基于Repository模式的实现。通过Repository来实现DAL是一种最为常见的数据访问层实现方式。就像上图所展示的那样,在一个基于Repository模式的实现中,数据访问层将拥有一系列Repository实例。这些Repository实例依赖于系统所使用的ORM来将数据库中的数据转化为Java类实例。这些Java类实例实际上就是在该数据访问层所提供给业务逻辑层的MO。

  而DTO则用于在服务与客户之间以及服务和服务之间进行数据的传递。在这些传递过程中,对DTO的需求可能是多种多样的:Product这种类型的DTO在服务端和客户端以及服务端之间进行交互的过程。在该流程中,所需要传递的DTO并不相同:在使用浏览器读取和保存有关Product的信息时,两者的数据表现形式可能会有一些细微的差别。而在保存完毕后,服务可能会将新的Product作为负载来向其它服务器发送请求,而此时所使用的Product的表示又可能与前两种略有差别。如果为这些细微的差别定义很多不同的DTO,那么系统对数据的管理可能会遇到一系列麻烦。例如在一个复杂的系统中,DTO可能会按照下面的方式在系统中流转:

DTO服务实现中的核心数据是什么

  在上图中,我们展示了一个DTO在依次流转过多个服务的情况。如果在DTO依次传递的过程中使用了不同的DTO表示,那么一个服务所需要的DTO可能和另一个服务中所拥有的DTO并不匹配。这便是DTO反过来会影响到架构设计的一个最简单的例子,却也是DTO管理中最常见的问题,那就是DTO的表现形式过多。如果为所有的不同需求都创建一个DTO,那么一个概念所对应的DTO可能多达5,6种,非常难于管理。这种管理上的困难常常存在于如何指定某个服务所需要使用的DTO种类,以及在更改DTO时需要同时修改一系列DTO的情况中。

  为了防止DTO由于不同的需求而衍生出过多的种类,服务实现中常常允许DTO中的数据包含一些冗余。

逐步添加你的DTO

  那么我们该如何向系统中添加DTO呢?答案是,根据情况决定。在项目的一开始,数据库中所存储的数据与页面所需要显示的数据常常是一致的,因此在这种情况下,我们并不需要DTO的帮助。而在所需要的数据和数据库所记录的数据不再一样的时候,我们就需要考虑是否需要在项目中添加DTO了。这时软件开发人员就需要问自己:这种所需要的数据与数据库中的数据不一致的情况是否常常出现?如果答案是“是”,那么我们就需要开始着手准备添加对DTO的支持。

  在系统中添加DTO主要有以下几部分工作需要完成:

  1. 添加DTO类。

  2. 添加从MO到DTO的转化逻辑。

  3. 将原本对MO的使用转换为对DTO的使用。

  相信读者最先注意到的就是第三点。可以想象到的是,如果将整个系统的MO替换成DTO,那么它的影响面将会非常大,而且非常容易出错。因此在一个大型项目中,我们常常需要预先判断DTO的必要性,进而尽早地添加DTO。

  让我们回过头来看看第一个任务应该如何完成。在一个系统中,DTO常常用来传输数据,因此其自身往往不带有任何逻辑。这也便是这些DTO常常被定义成JavaBean的原因。以JavaBean的形式来定义DTO带来了一个巨大的好处,那就是很多第三方类库都提供了生成JavaBean的功能。在这种情况下,软件开发人员只需要通过一系列描述性语言来描述这些DTO即可。这其中最常用的便是JAXB。

关于DTO服务实现中的核心数据是什么就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

DTO服务实现中的核心数据是什么

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

DTO服务实现中的核心数据是什么

这篇文章将为大家详细讲解有关DTO服务实现中的核心数据是什么,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。 在一个Web服务的实现中,我们常常需要访问数据库,并将从数据库中所取得的数据显示在
2023-06-04

云服务器数据中心三大核心要素是什么

云服务器数据中心三大核心要素是服务器、存储和网络。服务器:服务器是云服务器中最重要的硬件设备,可以提供高性能、稳定性、可靠性以及灵活性,是整个云服务器数据中心中的核心设备之一。云服务器数据中心通常采用服务器集群技术来提高整体性能和可扩展性。存储:存储是云服务器数据中心的另一个关键因素,它可以提供高容量、高可靠性和高灵活性,可以用于数据备份、数据恢复、数据归档等方面。云服务器数据中心通常会采
2023-10-26

云服务器数据中心三大核心要素是什么意思

云服务器数据中心三大核心要素包括:高可用性:云服务器数据中心具有独特的高可用性架构,能够在故障发生时提供稳定的服务。高可靠性:云服务器数据中心可以提供高可靠性的服务,包括冗余备份、故障转移、故障隔离等功能,可以有效地保护客户的数据和业务连续性。可扩展性:云服务器数据中心具有可扩展性,可以根据业务需求灵活配置服务器数量和大小,以满足不断变化的业务需求。例如,某个客户需要将其数据中心扩展到2
2023-10-26

大数据的核心价值是什么

这篇文章将为大家详细讲解有关大数据的核心价值是什么,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。大数据的核心就是预测。大数据的本质是解决问题,大数据的核心价值就在于预测;大数据是把数学算法运用到海量的数据
2023-06-14

云服务器数据中心三大核心要素是

云服务器数据中心三大核心要素包括:高可用性:云服务器数据中心通常由多个服务器组成,其中一些关键服务器会运行多个服务实例。这种高可用性的设计需要云服务器数据中心具有足够的备份能力和容错能力,以确保关键应用的持续运行。高性能计算能力:云服务器数据中心通常需要支持大规模的高性能计算环境。为了满足这些需求,云服务器数据中心通常需要部署大量的计算机,并配备高性能服务器和存储设备。此外,云服务器还需要
2023-10-26

云服务器数据中心三大核心要素包括什么

云服务器数据中心三大核心要素包括:高可用性:云服务器数据中心三大要素之一是高可用性(HighAvailability,也称为高可扩展性),它是指任何一个节点上的故障不会导致整个系统不可用。这意味着,如果一个节点出现故障,整个系统都不会受到影响,并且可用性不会被降低。这对用户和应用程序来说非常重要,因为他们可以轻松地访问和管理他们的应用程序和数据。可靠性:云服务器数据中心三大要素之一是可靠性
2023-10-26

云服务器数据中心三大核心要素包括什么和什么

云服务器是一种类似VPS主机的虚拟化技术,VPS是采用虚拟软件,VZ或VM在一台主机上虚拟出多个虚拟服务器。云服务器整合了计算、存储与网络资源,为用户提供公用化的互联网基础设施服务。云存储是一种基于云计算技术的数据存储服务,用户可以将数据存储在云服务器上,也可以将数据上传到云服务器上进行存储和备份。云存储提供了高可靠性、可扩展性和灵活性等特点,能够满足用户海量数据存储、管理和备份的需求。云网络是一...
2023-10-27

云服务器数据中心三大核心要素包括什么内容

首先,计算是云服务器数据中心的关键要素之一。云服务器通过虚拟化技术实现计算资源的动态分配和管理,从而能够根据用户的需求动态调整计算资源的使用,提供高效、稳定、安全的云计算服务。云服务器提供的计算资源可以是高性能的、可伸缩的、弹性的,可以按需使用,随时扩展或缩减,能够满足不同用户的需求。其次,网络是云服务器数据中心的另一
2023-10-27

云服务器数据中心三大核心要素是哪三个

云服务器数据中心三大核心要素包括:高可用性:云服务器数据中心通常提供高可用性的服务器和网络服务,以确保在各种环境中的稳定性和连续性。弹性伸缩性:云服务器数据中心可以根据业务需求动态伸缩容量,从而提高资源利用率,减少成本和延迟。高可靠性:云服务器数据中心通常使用多种可靠的技术,如冗余架构、容错技术等,以确保服务的持续运行和安全可靠。因此,选择云服务器数据中心时,需要关注以上三个方面,以
2023-10-26

亚马逊服务器数据中心是什么

亚马逊服务器数据中心是亚马逊公司用于存储和处理数据的设施。这些数据中心位于全球各地,包括美国、欧洲、亚洲和南美洲等地区。亚马逊数据中心提供了云计算服务,包括亚马逊云服务(AWS)和亚马逊弹性计算云(EC2)。这些服务允许用户在亚马逊的服务器上运行应用程序、存储数据和处理计算任务。亚马逊数据中心采用了先进的技术和安全措施,以确保数据的安全性和可靠性。同时,亚马逊数据中心还提供了高度可扩展的架构,以满足...
2023-10-27

IDC数据中心指的是什么

本篇内容主要讲解“IDC数据中心指的是什么”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“IDC数据中心指的是什么”吧!IDC数据中心有两个非常重要的明显特征:在网络中的位置和总的网络带宽容量,它
2023-06-07

怎么选择云服务器配置,服务器当中核心的是什么

怎么选择云服务器配置,服务器当中核心的是什么?在当前数字化时代,云服务器已成为托管网站、应用程序和数据的常见选择。然而,面对不同的云服务器配置选择,很多人可能困惑于如何挑选适合自己需求的配置。下面将介绍一些有关选择云服务器配置的关键要素,并重点探讨服务器中最核心的要素是什么。
怎么选择云服务器配置,服务器当中核心的是什么
2024-01-23

云服务器核数与物理核数的区别是什么

其次,云服务器核数是指云服务器可以支持的虚拟机数。物理核数是指物理服务器上支持的虚拟机数。这意味着云服务器核数与物理核数之间的关系是相反的。因此,在使用云服务器的时候,需要根据实际需求来选择云服务器核数。此外,云服务器核数与物理服务器核数还存在一些其他的区别。首先,云服务器可以支持的虚拟机数是动态的,可以随时增加或减少
云服务器核数与物理核数的区别是什么
2023-10-28

云服务器核数与物理核数的关系是什么

云服务器核数=云服务器中物理核数/云服务器中的物理核数根据题目中所给的信息,云服务器核数=2693,物理核数=533。从这个公式中可以看出,云服务器核数和物理核数之间存在着一种正比关系。也就是说,云服务器核数越高,说明云服务器中的物理核数也就越高。而云服务器中物理核数的高低也可以用来衡量云服务器的性能和可靠性。那么,这
云服务器核数与物理核数的关系是什么
2023-10-28

数据中心是怎么防护根域名服务器的

数据中心防护根域名服务器的方法:1、设计网络流量监控、服务器内核监控模块、解析监控、服务器集群监控等体系;2、匹配技术人员及时收到发送攻击情况概要和受影响的程度,以便用户询问情况时能得到最新信息;3、实行24小时值班制度和自动化运维处理;4
2023-02-11

数据中心idc机房建设的标准是什么

数据中心idc机房建设的标准包括以下方面:1. 硬件设备标准:包括服务器、存储设备、网络设备等硬件设备的选购、配置、布局等标准。2. 机房环境标准:包括温度、湿度、空气流通、防尘等方面的标准。3. 机房安全标准:包括防火、防盗、防雷击等方面
2023-06-07

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录