c# windows azure -排队实体,模型或POCO

本文关键字:模型 POCO 实体 排队 windows azure | 更新日期: 2023-09-27 18:15:34

我的程序中有这个

string message = string.Empty;                
queue.AddMessage(new CloudQueueMessage(message));

我可以队列字符串,它的工作,但如果我有我自己的模型,我怎么能把它推到我的队列?有没有办法将这个模型转换成字节?因为我看到我也可以推入字节

我说的模型是这样的:

public class Region
{
    public string countryCode { get; set; }
    public string countryName { get; set; }
    public string region { get; set; }
}

我怎么能有一个模型被推到队列?

c# windows azure -排队实体,模型或POCO

Azure Queue存储上的传输单元是CloudQueueMessage

云消息以序列化字符串(例如xmljson)或序列化二进制表示(byte[])携带消息的有效载荷(即您的对象或实体图)。您有以下序列化选项:

    Json,例如Newtonsoft JsonSerializer
  • 一个XmlSerializer
  • Google Protobuf for a compact binary format

有效负载序列化格式的选择将取决于您需要的数据的"紧凑性"级别,以及下游客户端将使用的技术所需的兼容性。

除非带宽和反序列化时间是绝对关键的,否则我建议使用Json作为一般的起点,因为它被广泛采用,并且易于读取序列化的消息有效负载。

然后使用AddMessageAsync等方法发布消息,并由GetMessageAsync使用

对于发布,你需要序列化你的类/实体图,有CloudQueueMessage构造函数重载,它接受代表消息负载的byte[]string参数。

CloudQueueMessage(byte[])
CloudQueueMessage(string)

同样,使用者需要对接收到的有效负载进行反序列化,可以通过以下两种方式检索:

  • AsBytes
  • AsString结尾

也看到:XmlSerialization示例:在Azure队列存储中传递对象消息

如果你在每个应用程序中读取和编写相同的模型,那么你可以共享序列化/反序列化函数来将你的对象转换为字符串或字节[]。