【问题标题】:Should nServiceBus messages contain objects or just simple types and strings?nServiceBus 消息应该包含对象还是只包含简单的类型和字符串?
【发布时间】:2011-06-28 11:48:21
【问题描述】:

当使用 nservicebus 发送消息时,消息应该只包含简单的类型和字符串,还是可以包含您自己的对象?如果是这样,这些对象应该是没有任何行为的轻量级数据传输对象吗?

例如发送如下消息:

public class UserAuthenticatedMessage : IMessage {

    public MyUserClass User { get; private set; }

    public UserAuthenticatedMessage(MyUserClass user) {
        User = user;
    }

    public object Value {
        get { return User; }
    }
}

MyUserClass 不仅包含属性,还包含行为:

public class MyUserClass {
    public int Id { get; set; }
    public string Username { get; set; }

    public bool ICheckSomething(string foo) {

    }
}

这可以吗/是个坏主意吗?我们应该使用没有行为的 MyUserDTO 类吗?我们是否应该在消息中显式发送所有字段,然后在另一端变成一个对象?

【问题讨论】:

    标签: messaging nservicebus


    【解决方案1】:

    您可以在消息中发送嵌套数据容器,即数据传输对象,但它们不应该有行为。

    【讨论】:

    • 感谢您的快速回答,这就是我的直觉。你能解释一下为什么使用具有行为的对象是不好的,所以我不只是告诉人们就是这样,因为 Udi 是这样说的。
    • 由于 Udi 没有回答,我将投入我的 2 美分(希望他也会回复)。我不会发布包含任何行为的类,因为它会泄漏不同服务之间的抽象。您想要对对象进行的任何更改都可能需要更改这两个服务,这也是非常不可取的。
    猜你喜欢
    • 1970-01-01
    • 2018-05-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-06
    • 2011-03-14
    • 2019-10-01
    • 1970-01-01
    相关资源
    最近更新 更多