2011-06-28 35 views
3

當使用nservicebus發送消息時,消息是否只包含簡單類型和字符串,還是可以包含自己的對象?如果是這樣,那麼這些對象應該是輕量級的數據傳輸對象嗎?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類?我們是否應該在消息中明確地發送所有的字段,然後在另一端變成一個對象?

回答

2

您可以在消息中發送嵌套的數據容器,即數據傳輸對象,但它們不應該有行爲。

+1

感謝您的快速回答,這是我的直覺。你能解釋爲什麼使用具有行爲的對象是不好的,所以我不只是告訴人們這是因爲Udi這樣說。 – dang1es

+2

由於Udi沒有回答我會在我的2分錢(希望他也會回覆)。我不會發布包含任何行爲的類,因爲它會泄漏不同服務之間的抽象。您希望對該對象進行的任何更改都可能需要更改這兩個服務,這也是非常不理想的。 – RyanR

相關問題