标签: data-transfer-objects

Business Objects - 容器还是功能?

在我工作的地方,我们已经多次在这个问题上来回走动,正在寻找一个健全性检查.这是一个问题:Business Objects应该是数据容器(更像是DTO)还是应该包含可以对该对象执行某些功能的逻辑.

示例 - 获取客户对象,它可能包含一些常见属性(Name,Id等),客户对象是否还包含函数(Save,Calc等)?

一行推理说,将对象与功能(单一责任主体)分开,并将功能放在业务逻辑层或对象中.

另一条推理说,不,如果我有一个客户对象,我只想打电话给Customer.Save并完成它.如果我正在使用该对象,为什么我需要知道如何保存客户?

我们的最后两个项目已经将对象与功能分开,但是在新项目中再次提出了争论.哪个更有意义?

编辑

这些结果与我们的辩论非常相似.对一方或另一方的一票完全改变了方向.有没有人想加2美分?

编辑

尽管答案抽样很小,但似乎大多数人认为业务对象中的功能是可接受的,只要它很简单,但持久性最好放在单独的类/层中.我们试一试.感谢大家的投入......

language-agnostic business-objects data-transfer-objects

11
推荐指数
2
解决办法
1492
查看次数

如何使用Javascript将文件添加到现有的dataTransfer对象中

假设:可以访问file://的本地HTML/Javascript网页

在可拖动HTML元素的拖动开始时,在事件处理函数中dragStart(e),如何添加File对象以使其被识别为文件并最终在dataTransfer.files列表中?

例如:

function dragStart(e){
    var file = getSomeFileObjFromSomewhere();
    e.originalEvent.dataTransfer.effectAllowed = "all";
    e.originalEvent.dataTransfer.setData("file", file);

    console.log("\nFiles:");
    i = 0;
    var files = e.originalEvent.dataTransfer.files,
    len = files.length;
    for (; i < len; i++) {
        console.log("\nIndex: " + i + "\nFilename: " + files[i].name);
        console.log("Type: " + files[i].type);
        console.log("Size: " + files[i].size + " bytes");
        console.dir(files[i]);
    }
}
Run Code Online (Sandbox Code Playgroud)

具体来说,它需要在Chrome/Chromium上运行.并且,我们可以假设该文件存在于本地驱动器上.基本上,当文件从Windows资源管理器拖动到可放置元素的HTML页面时,我想要相同的数据.

我知道这存在于Chrome中:

e.originalEvent.dataTransfer.setData("DownloadURL", fileType + ":" + name + ":" + filePath);
Run Code Online (Sandbox Code Playgroud)

下载文件.但这不是我想要的,因为我想假设这是一个现有文件,并且必须访问原始文件.

javascript drag-and-drop data-transfer file data-transfer-objects

11
推荐指数
2
解决办法
3157
查看次数

数据传输对象是否与Value Object相同?

数据传输对象与值对象相同还是不同?如果它们不同,那么我们应该在哪里使用DTO?我们应该在哪里使用VO?

我们谈论的编程语言是Java,上下文是 - 有一个Web应用程序,它从数据库中获取数据然后处理它,最终处理后的信息显示在前端

java design-patterns web-applications data-transfer-objects value-objects

10
推荐指数
3
解决办法
3591
查看次数

9
推荐指数
3
解决办法
2万
查看次数

Javascript DataTransfer 项目不通过异步调用持久化

我使用 Vuejs 和 DataTransfer 异步上传文件,并且我希望允许拖放多个文件一次上传。

我可以进行第一次上传,但是在上传完成时,Javascript 已经垃圾收集或更改了 DataTransfer 项目对象。

我怎样才能重新设计这个(或克隆事件/DataTransfer 对象),以便在整个 ajax 调用过程中我仍然可以使用数据?

我已经遵循了关于如何使用 DataTransfer 的 MDN 文档,但我很难将它应用于我的特定案例。我也试过复制事件对象,正如你在我的代码中看到的那样,但它显然没有做深复制,只是传递了引用,这没有帮助。

    methods: {
        dropHandler: function (event) {
            if (event.dataTransfer.items) {
                let i = 0;
                let self = this;
                let ev = event;

                function uploadHandler() {
                    let items = ev.dataTransfer.items;
                    let len = items.length;

                    // len NOW EQUALS 4

                    console.log("LEN: ", len);
                    if (items[i].kind === 'file') {
                        var file = items[i].getAsFile();
                        $('#id_file_name').val(file.name);
                        var file_form = $('#fileform2').get(0);
                        var form_data = new FormData(file_form); 

                        if (form_data) { …
Run Code Online (Sandbox Code Playgroud)

html javascript drag-and-drop data-transfer-objects vuejs2

9
推荐指数
2
解决办法
1297
查看次数

DTO可以嵌套DTO吗?

我有以下域模型:

public class Playlist
{
    public long Id { get; set; }
    public string Title { get; set; }
    public virtual ICollection<Song> Songs { get; set; }
}

public class Song
{
    public long Id { get; set; }
    public string Name { get; set; }
    public virtual Playlist Playlist { get; set; }
    public virtual ICollection<Catalog> Matches { get; set; }
}

public class Catalog
{
    public long Id { get; set; }
    public string Title { get; set; …
Run Code Online (Sandbox Code Playgroud)

design-patterns domain-driven-design data-transfer-objects ddd-repositories asp.net-mvc-3

8
推荐指数
1
解决办法
2893
查看次数

NestJS 中数据传输对象的目的是什么?

我正在努力解决一个问题。我正在关注 NestJS 的文档。NodeJS 的后端框架。该文档提到了 DTO(数据传输对象)。我创建了一个用于创建用户的 DTO:

export class CreateUserDto {
    readonly email: string;
    readonly password: string;
}
Run Code Online (Sandbox Code Playgroud)

与此结合:

@Post('create')
createUser(@Body() userData: CreateUserDto): User {
    return this.usersService.createUser(userData);
}
Run Code Online (Sandbox Code Playgroud)

出于某种原因,我可以使用任何类型的主体向这条路线发出 post 请求。我可以在正文中放置任何类型的信息而不会出错。这种 DTO 的全部意义在于只允许身体中的某些信息,对吗?我还尝试了导出接口 CreateUserDTO,而不是使用导出类 CreateUserDTO,但这也不起作用。我也是 typescript 和 NestJS 的新手。有没有人能够解释为什么它没有按我预期的方式工作,或者这种数据传输对象的目的是什么?

data-transfer-objects dto typescript nestjs

8
推荐指数
2
解决办法
4673
查看次数

WCF服务应该返回EntityObject还是POCO/DTO类?

我一直在使用EntityFramework查看很多WCF示例,其中大多数似乎都会向客户端返回某种POCO或DTO类.

我想知道为什么这是因为默认EntityObject包括[DataContract]属性和实现INotifyPropertyChanged.返回DTO或POCO课程比EntityObject(或反之亦然)更好吗?是否有特定的情况,最好使用一个返回值而不是另一个?

wcf entity-framework data-transfer-objects dto

7
推荐指数
1
解决办法
2823
查看次数

我应该在DTO中使用构建器模式吗?

这可能是一个非常主观的问题,但我想知道一些更多的意见.我用Spring MVC构建了一个Rest API服务,并实现了DTO-Domain-Entity模式.我想知道你对在DTO中实现Builder模式有什么看法,比如说

public class UserResponseDTO
    extends AbstractResponseDTO {

    private String username;
    private Boolean enabled;

    public UserResponseDTO(String username, Boolean enabled) {
        this.username = username;
        this.enabled = enabled;
    }

    public String getUsername() {
        return this.username;
    }

    public Boolean getEnabled() {
        return this.enabled;
    }

    public static class Builder {

        private String username;
        private Boolean enabled;

        public void setUsername(String username) {
            this.username = username;
        }

        public void setEnabled(Boolean enabled) {
            this.enabled = enabled;
        }

        public UserResponseDTO build(){
            return new UserResponseDTO(username, enabled); …
Run Code Online (Sandbox Code Playgroud)

java design-patterns data-transfer-objects dto builder-pattern

7
推荐指数
1
解决办法
9864
查看次数

DDD:数据应转换,格式化,加密等在哪里?

对于未来的项目,我决定使用dto将数据传递到域层.这也是我进行大部分数据验证的地方.

我应该在哪里放置数据格式?

1)在DTO中,当它准备好发送到域层时,
或者
2)在它被持久化之前的基础设施层中?

3)其他地方:)

ie:需要在持久化之前加密的密码,或者在存储之前需要转换,重新调整等的图像.

我希望将所有数据格式保存在一个层中,不要喜欢它在整个地方进行编码.

换句话说:数据是否应该为域准备处理它,或者域应该获取原始数据并在域处理后更改它?

domain-driven-design data-transfer-objects

6
推荐指数
1
解决办法
1364
查看次数