Для работы с очередями сообщений используются классы из пространства имен System.Messaging. Класс System.Messaging.MessageQueue содержит три группы методов.
При применении классов из System.Messaging возможно три варианта работы с очередями сообщений:
Определенной трудностью при использовании MSMQ в .NET Framework являются различия по использованию разных видов очередей. В частности, для очередей без транзакций можно установить обработчик на завершение приема сообщения, а для очередей с транзакциями этот способ неприемлем, поскольку само чтение сообщения должно быть оформлено как часть транзакции. Для обоих видов очередей можно поставить обработчик на появление сообщения в очереди, что и является рекомендованным способом.
Для сериализации и десериализации сообщений MSMQ могут использоваться классы XMLMessageFormatter или BinaryMessageFormatter из пространства имен System.Messaging. Класс XMLMessageFormatter использует класс System.Xml.Serialization.XmlSerializer, описанный ранее в теме о сериализации, поэтому при использовании XMLMessageFormatter должны учитываться все особенности использования класса XmlSerializer. Класс BinaryMessageFormatter аналогичным способом использует для сериализации класс BinaryFormatter.
Поскольку классы BinaryFormatter и XmlSerializer имеют различные ограничения на сериализуемые классы и используют совершенно различные процедуры сериализации, в нетривиальном случае переход BinaryMessageFormatter на XMLMessageFormatter или наоборот может привести к определенным изменениям в исходном коде программных компонент.