WebAPI DTO响应-请求消息传递模式

本文关键字:消息传递 模式 请求 DTO 响应 WebAPI | 更新日期: 2023-09-27 18:01:50

我正在阅读一本关于c#中响应消息模式的书中的一章,当我最近遇到一个使用web API的项目时,我注意到了一些相似之处,并想要弄清楚一些东西。

在这本书中,作者的代码将请求(在本例中是CustomerRequest)包装在一个名为CustomerRequestService的类中,该类的工作是处理这些请求(请求只不过是类,这些类具有与查找客户的服务相关的搜索条件或属性等内容,并且不做任何其他事情,非常薄/贫乏(?)我猜你可以说)。该服务返回一个CustomerResponse,其中包装了一个客户类、一个来自服务器的响应和其他相关信息,这些信息将用于服务器端向用户显示结果。

现在,在我正在看的项目中,有使ajax调用web api控制器的网页。控制器处理这些请求并使用自己的响应进行响应。它使用json.net进行反序列化。

你可以说这很相似。在书中,作者调用这些请求-响应,在代码中,它们被命名为CustomerDto, CustomerResponseDto (DTO当然代表数据传输对象)。

当我在网上搜索时,似乎当我搜索webAPI时,命名标准围绕DTO而不是响应/请求。

也许我是在吹毛求疵,或者这是可见的和不相关的,但我很好奇在这样的情况下,别人是如何命名他们的请求/响应类的。我喜欢调用所有请求/响应的想法,即使在web api架构中,但我不确定这样命名是否不正确,我应该称它们为Dtos。

我猜唯一的区别是一个东西被序列化并以JSON的形式发送回网页,而另一个仍然作为一个类。

谢谢,请让我知道我是否解释正确!

WebAPI DTO响应-请求消息传递模式

您可以为它们命名任何您想要的名称(一如既往,保持一致),但对我来说,在这种情况下使用DTO而不是请求/响应更有意义。DTO用于双向传输数据——从客户端到服务器,反之亦然。因此它在请求和响应中都被使用。

如果您不单独创建请求和响应对象,您将最终得到:

1。传输整个DTO,例如包含56列数据的示例。

2。而您的要求只是绑定一个包含键值对的下拉列表,即只有两列。

或者,您可以理解,虽然只需要5-7 kb的数据传输,但您正在传输57 kb的没有任何用途的数据。这样,您只是浪费带宽,对服务器和网络上整个应用程序负载的性能产生不利影响。如果你已经优化了DTO来满足你的需求,你最终会得到一个超级快的应用程序,即使在最坏的情况下,它也可以在2G连接上加载。