溫馨提示×

C#如何實現(xiàn)MSMQ的序列化和反序列化

c#
小樊
84
2024-08-12 01:22:43
欄目: 編程語言

在C#中實現(xiàn)MSMQ的序列化和反序列化可以通過使用BinaryFormatter進行序列化和反序列化操作。以下是一個簡單的示例代碼:

using System;
using System.Messaging;
using System.IO;
using System.Runtime.Serialization.Formatters.Binary;

namespace MSMQSerialization
{
    public class MessageObject
    {
        public string Message { get; set; }
    }

    class Program
    {
        static void Main(string[] args)
        {
            MessageObject messageObj = new MessageObject();
            messageObj.Message = "Hello MSMQ!";

            // 序列化消息對象
            BinaryFormatter formatter = new BinaryFormatter();
            MemoryStream stream = new MemoryStream();
            formatter.Serialize(stream, messageObj);

            // 發(fā)送消息到MSMQ隊列
            MessageQueue queue = new MessageQueue(@".\Private$\MyQueue");
            Message message = new Message();
            message.BodyStream = stream;
            queue.Send(message);

            // 從MSMQ隊列接收消息并反序列化
            Message receivedMessage = queue.Receive();
            receivedMessage.BodyStream.Position = 0;
            MessageObject receivedObj = (MessageObject)formatter.Deserialize(receivedMessage.BodyStream);

            Console.WriteLine("Received message: " + receivedObj.Message);

            queue.Close();
        }
    }
}

在這個示例中,我們首先創(chuàng)建了一個MessageObject類來存儲消息內(nèi)容。然后我們使用BinaryFormatter來序列化MessageObject對象,并將序列化后的數(shù)據(jù)發(fā)送到MSMQ隊列。接著從隊列中接收消息,并通過反序列化操作將消息內(nèi)容提取出來并打印出來。

請注意,這里的示例只是一個簡單的示例,實際生產(chǎn)環(huán)境中可能需要更復雜的消息對象和處理邏輯。

0