2012-01-10 57 views
3

我使用NServiceBus与一个 JavaScript客户端应用程序的后端供电。因此,我们有很多地方我们的命令 真的要动态列表(对象数组在JS,名单C#)的情况下。例如: -列表<dynamic>上NServiceBus消息

JSON:

{ 
    "listProperty" : [ 
     { 
      "propertyA" : "value", 
      "propertyB" : "valueB" 
     }, 
     { 
      "propertyQ" : "valueQ" 
     } 
    ] 
} 

C#:

class TheCommand : IMessage { 
    public List<dynamic> ListProperty {get; set;} 
} 

有没有办法用NServiceBus做到这一点?

-----实验结果-----

一些实验与NServiceBus XML序列表明, 它不理解动态:

<TheCommand> 
<ListProperty> 
<Object> 
</Object> 
</ListProperty> 
</TheCommand> 

他们只是序列化(和反序列化)作为对象,没有属性。

(这有点交叉后与雅虎组的为好。)

回答

1

随着我们的客户JS,我们使用了一套REST风格的服务,处理序列化和传递消息给NSB。我们一直传递可变长度的数组。

在参照动态结构一起,NSB需要将特定格式的消息以激活其处理程序。实现自己的序列化器可能是个好主意。您必须实施NServiceBus.Serialization.IMessageSerializer。除此之外,您还必须能够告诉NSB使用该序列化程序,并且您可以拥有自己的自定义配置。看看类ConfigureXmlSerializer

我也只是看到,在3.0分支有实现的JSON/BSON序列化。我从来没有使用它,但它可能会满足您的需求。

+0

啊,不是长度,但包含的对象(类型)的结构中,需要是动态的。 – brendanjerwin 2012-01-10 17:01:01

+0

编辑答案以在动态结构中包含更多内容 – 2012-01-10 18:09:07

+0

我们确实有一个定义的结构,这种特殊情况适用于无模式文档数据库。文档的动态部分只是简单地通过并存储。 – brendanjerwin 2012-01-10 19:32:32