XmlMessageFormatterとは? わかりやすく解説

XmlMessageFormatter クラス

XSD スキーマ定義の XML 書式使用してメッセージ本文との間でオブジェクトシリアル化および逆シリアル化ます。

名前空間: System.Messaging
アセンブリ: System.Messaging (system.messaging.dll 内)
構文構文

Public Class XmlMessageFormatter
    Implements IMessageFormatter, ICloneable
Dim instance As XmlMessageFormatter
public class XmlMessageFormatter : IMessageFormatter,
 ICloneable
public ref class XmlMessageFormatter : IMessageFormatter,
 ICloneable
public class XmlMessageFormatter implements
 IMessageFormatter, ICloneable
public class XmlMessageFormatter implements
 IMessageFormatter, ICloneable
解説解説

XmlMessageFormatter は、キュー書き込まれメッセージシリアル化するために MessageQueueインスタンス使用する既定フォーマッタです。MessageQueueインスタンス作成するときに、XmlMessageFormatterインスタンス作成されMessageQueue関連付けられます。別のフォーマッタ指定するには、コード内でそのフォーマッタ作成して MessageQueueFormatter プロパティ割り当てます

キュー既定XmlMessageFormatter インスタンス使用してキュー書き込むことができますが、これを使用してキューから読み取るには、フォーマッタで TargetTypes プロパティまたは TargetTypeNames プロパティ設定する必要があります既定フォーマッタインスタンスで、これらの値の一方または両方設定できます。または、フォーマッタ新しインスタンス作成し、値を適切な XmlMessageFormatter コンストラクタ引数として渡すことによって、自動的に設定できます

TargetTypeNames ではなく TargetTypes指定する場合は、読み取りではなくコンパイル時に型の存在確認することで、エラー可能性抑制されます。TargetTypeNames では、すべてのエントリが完全に限定されアセンブリ名指定されている必要があります。さらに、複数のバージョン同時に操作する場合は、対象型名バージョン番号追加する必要があります

TargetTypeNames プロパティおよび TargetTypes プロパティを使うと、メッセージの逆シリアル化時にフォーマッタがどのスキーマ一致させるかを指示できます。これにより、フォーマッタメッセージ本文解釈できます

メッセージ本文シリアル化されるインスタンスは、型配列表されスキーマ1 つに従っている必要がありますReceive メソッド使用してメッセージ読み取る場合は、識別されスキーマ対応する型のオブジェクトがこのメソッドによって作成され、そこにメッセージ本文読み込まれます。

キューから読み取るときに設定する必要があるのは、2 つプロパティのうちの 1 つだけですが、両方設定することもできます。型のセットとは、2 つプロパティの型を結合したものです。どのプロパティ使用するかは、アプリケーションによって異なりますメッセージ本文に、両方プロパティ配列内のどの型ともスキーマ一致しない型が含まれている場合は、メッセージ読み取り時に例外スローさます。

XmlMessageFormatter は、疎結合された重要な XML ベースメッセージ処理コンポーネントです。XSD.exe ユーティリティは、ユーティリティ使用してアプリケーション使用するクラスシリアル化するときなどに、XML 書式使用して XML スキーマ生成します。このクラスには既定コンストラクタが必要です。

この書式は、クラス データ記述するために配布するスキーマ基づいてユーティリティクラス生成するときに、逆のプロセスで再び使用されます。ユーティリティユーティリティ生成する XML スキーマ使用すると、クラス実装変更された後、クラスを再コンパイルするたびに .dll ファイル再配布する必要がなくなりますクライアントまたはサーバースキーマ変更され場合除きどちらか一方でその他の変更が行われても、もう一方影響与えることはありません。

使用例使用例

サーバー コンポーネントorder クラス、およびクライアント コード3 つのコード含まれているコード例次に示します。XSD.exe ユーティリティorder クラス使用すると、受信メッセージ内でサーバー認識するスキーマ生成できますスキーマは、XML 形式ファイルで、クラスの "形" を記述します次にクライアント側でこのスキーマ使用してサーバー クラスと同じスキーマ共有するクライアント固有の order クラス生成できます

メッセージ キュー通じてオーダー受信するサーバー コンポーネントを表すコード例次に示しますメッセージ本文は、スキーマが下の Order.cs クラス一致するオーダー オブジェクトです。サーバー プロセスまたはサーバー アプリケーションが、オーダーを逆シリアル化ます。

Imports System
Imports System.Messaging



Public Class Server
    
    
    Public Shared Sub Main()
        
        Console.WriteLine("Processing Orders")
        
        Dim queuePath As String
 = ".\orders"
        EnsureQueueExists(queuePath)
        Dim queue As New
 MessageQueue(queuePath)
        CType(queue.Formatter, XmlMessageFormatter).TargetTypeNames = New
 String() {"Order"}
        
        While True
            Dim newOrder As Order = CType(queue.Receive().Body,
 Order)
            newOrder.ShipItems()
        End While
    End Sub 'Main
    
    
    ' Creates the queue if it does not already exist.
    Public Shared Sub EnsureQueueExists(path
 As String)
        If Not MessageQueue.Exists(path) Then
            MessageQueue.Create(path)
        End If
    End Sub 'EnsureQueueExists
End Class 'Server
using System;
using System.Messaging;
 
 public class Server{
 
     public static void
 Main(){
 
         Console.WriteLine("Processing Orders");
 
         string queuePath = ".\\orders";
         EnsureQueueExists(queuePath);
         MessageQueue queue = new MessageQueue(queuePath);
         ((XmlMessageFormatter)queue.Formatter).TargetTypeNames = new
 string[]{"Order"};
 
         while(true){
             Order newOrder = (Order)queue.Receive().Body;
             newOrder.ShipItems();
         }
     }
 
     // Creates the queue if it does not already exist.
     public static void
 EnsureQueueExists(string path){
         if(!MessageQueue.Exists(path)){
             MessageQueue.Create(path);
         }
     }
 }
#using <System.dll>
#using <System.Messaging.dll>

using namespace System;
using namespace System::Messaging;

// placeholder; see complete definition elsewhere in this section
public ref class Order
{
public:
   void ShipItems(){}

};


// Creates the queue if it does not already exist.
void EnsureQueueExists( String^ path )
{
   if (  !MessageQueue::Exists( path ) )
   {
      MessageQueue::Create( path );
   }
}

int main()
{
   Console::WriteLine( "Processing Orders" );
   String^ queuePath = ".\\orders";
   EnsureQueueExists( queuePath );
   MessageQueue^ queue = gcnew MessageQueue( queuePath );
   array<String^>^temp0 = {"Order"};
   (dynamic_cast<XmlMessageFormatter^>(queue->Formatter))->TargetTypeNames
 = temp0;
   while ( true )
   {
      Order^ newOrder = dynamic_cast<Order^>(queue->Receive()->Body);
      newOrder->ShipItems();
   }
}

import System.*;
import System.Messaging.*;

public class Server
{
    public static void main(String[]
 args)
    {
        Console.WriteLine("Processing Orders");

        String queuePath = ".\\orders";
        EnsureQueueExists(queuePath);
        MessageQueue queue = new MessageQueue(queuePath);
        ((XmlMessageFormatter)queue.get_Formatter()).
            set_TargetTypeNames(new String[] { "Order"
 });

        while (true) {
            Order newOrder = (Order)queue.Receive().get_Body();
            newOrder.ShipItems();
        }
    } //main

    // Creates the queue if it does not already exist.
    public static void EnsureQueueExists(String
 path)
    {
        if (!(MessageQueue.Exists(path))) {
            MessageQueue.Create(path);
        }
    } //EnsureQueueExists
} //Server

サーバーアプリケーション受信してシリアル化するオーダー オブジェクト対すスキーマ提供する order クラスを表すコード例次に示します

Imports System
Imports Microsoft.VisualBasic

Public Class Order
    
    Public itemId As Integer
    Public quantity As Integer
    Public address As String
    
    
    Public Sub ShipItems()
        
        Console.WriteLine("Order Placed:")
        Console.WriteLine(ControlChars.Tab & "Item ID  : {0}",
 itemId)
        Console.WriteLine(ControlChars.Tab & "Quantity : {0}",
 quantity)
        Console.WriteLine(ControlChars.Tab & "Ship To  : {0}",
 address)

        ' Add order to the database.
        ' Insert code here.
 
    End Sub 'ShipItems 
End Class 'Order 
using System;
 
 public class Order{
 
     public int itemId;
     public int quantity;
     public string address;
 
     public void ShipItems(){
 
         Console.WriteLine("Order Placed:");
         Console.WriteLine("\tItem ID  : {0}",itemId);
         Console.WriteLine("\tQuantity : {0}",quantity);
         Console.WriteLine("\tShip To  : {0}",address);
 
         // Add order to the database.
         /* Insert code here. */
 
     }
 }
using namespace System;
public ref class Order
{
public:
   int itemId;
   int quantity;
   String^ address;
   void ShipItems()
   {
      Console::WriteLine( "Order Placed:" );
      Console::WriteLine( "\tItem ID  : {0}", itemId );
      Console::WriteLine( "\tQuantity : {0}", quantity );
      Console::WriteLine( "\tShip To  : {0}", address );
      
      // Add order to the database.
      /* Insert code here. */
   }

};

import System.*;

public class Order
{
    public int itemId;
    public int quantity;
    public String address;

    public void ShipItems()
    {
        Console.WriteLine("Order Placed:");
        Console.WriteLine("\tItem ID  : {0}", System.Convert.ToString(itemId));
        Console.WriteLine("\tQuantity : {0}", System.Convert.ToString(quantity));
        Console.WriteLine("\tShip To  : {0}", System.Convert.ToString(address));
        // Add order to the database.
        /* Insert code here. */
    } //ShipItems 
} //Order 

サーバーアプリケーションやり取りするすべてのクライアント アプリケーションは、ローカル定義されorder クラス情報メッセージ本文シリアル化して、メッセージサーバー送信する必要がありますローカル定義されorder クラスには、サーバーアプリケーションメッセージ本文を逆シリアル化するサーバー定義の order クラスと同じスキーマが必要です。XSD.exe ユーティリティ使用すると、サーバーアプリケーション マネージャは、サーバー送信するメッセージシリアル化クライアント使用するスキーマ作成および配布できます

クライアント アプリケーション マネージャorder クラススキーマ受信すると、XSD.exe ユーティリティを再び使用してスキーマからクライアント固有の order クラス生成します。下のクライアント コード例では、サーバーorder クラスではなく、このクラス使用します。XSD.exe ユーティリティは、スキーマ生成クラスに元のクラスと同じ名前を付けます。この新しorder クラス使用してオーダーメッセージ本文シリアル化ます。

オーダーシリアル化し、オーダー関連付けられた情報キュー送信するクライアント側の処理を行うコード例次に示します。このコードは、XSD.exe ユーティリティで Order.cs クラス用に生成されスキーマ要素品目数量住所情報関連付けます。オーダーは、ローカル コンピュータOrders キュー送信されます。

Imports System
Imports System.Messaging

Class Client
    
    
    Public Shared Sub Main()
        
        Dim queuePath As String
 = ".\orders"
        EnsureQueueExists(queuePath)
        Dim queue As New
 MessageQueue(queuePath)
        
        Dim orderRequest As New
 Order()
        orderRequest.itemId = 1025
        orderRequest.quantity = 5
        orderRequest.address = "One Microsoft Way"
        
        queue.Send(orderRequest)
        ' This line uses a new method you define on the Order class:
        ' orderRequest.PrintReceipt()

    End Sub 'Main
    
    ' Creates the queue if it does not already exist.
    Public Shared Sub EnsureQueueExists(path
 As String)
        If Not MessageQueue.Exists(path) Then
            MessageQueue.Create(path)
        End If
    End Sub 'EnsureQueueExists
End Class 'Client 
using System;
using System.Messaging;
 
 class Client{
 
     public static void
 Main(){
 
         string queuePath = ".\\orders";
         EnsureQueueExists(queuePath);
         MessageQueue queue = new MessageQueue(queuePath);
 
         Order orderRequest = new Order();
         orderRequest.itemId = 1025;
         orderRequest.quantity = 5;
         orderRequest.address = "One Microsoft Way";
 
         queue.Send(orderRequest);
         // This line uses a new method you define on the Order class:
         // orderRequest.PrintReceipt();
     }
 
     // Creates the queue if it does not already exist.
     public static void
 EnsureQueueExists(string path){
         if(!MessageQueue.Exists(path)){
             MessageQueue.Create(path);
         }
     }
 
 }
#using <System.dll>
#using <System.Messaging.dll>

using namespace System;
using namespace System::Messaging;

// placeholder; see complete definition elsewhere in this section
public ref class Order
{
public:
   int itemId;
   int quantity;
   String^ address;
   void ShipItems(){}

};


// Creates the queue if it does not already exist.
void EnsureQueueExists( String^ path )
{
   if (  !MessageQueue::Exists( path ) )
   {
      MessageQueue::Create( path );
   }
}

int main()
{
   String^ queuePath = ".\\orders";
   EnsureQueueExists( queuePath );
   MessageQueue^ queue = gcnew MessageQueue( queuePath );
   Order^ orderRequest = gcnew Order;
   orderRequest->itemId = 1025;
   orderRequest->quantity = 5;
   orderRequest->address = "One Microsoft Way";
   queue->Send( orderRequest );
   
   // This line uses a new method you define on the Order class:
   // orderRequest.PrintReceipt();
}

import System.*;
import System.Messaging.*;

class Client
{
    public static void main(String
 args[])
    {
        String queuePath = ".\\orders";
        EnsureQueueExists(queuePath);
        MessageQueue queue = new MessageQueue(queuePath);

        Order orderRequest = new Order();
        orderRequest.itemId = 1025;
        orderRequest.quantity = 5;
        orderRequest.address = "One Microsoft Way";

        queue.Send(orderRequest);
        // This line uses a new method you define on the Order class:
        // orderRequest.PrintReceipt();
    } //main

    // Creates the queue if it does not already exist.
    public static void EnsureQueueExists(String
 path)
    {
        if (!(MessageQueue.Exists(path))) {
            MessageQueue.Create(path);
        }
    } //EnsureQueueExists
} //Client

スキーマサーバーorder クラスから生成され後でも、クラス変更できますスキーマ変更した場合除いてスキーマ再配布する必要はありません。スキーマ配布しクライアント側order クラス生成した後は、スキーマそのもの変更されていない場合、そのクライアント クラスサーバーorder クラスから独立して変更できます2 つクラスは、疎結合されています。

継承階層継承階層
System.Object
  System.Messaging.XmlMessageFormatter
スレッド セーフスレッド セーフ
この型の public static (Visual Basic では Shared) メンバはすべて、スレッド セーフです。インスタンス メンバ場合は、スレッド セーフであるとは限りません。
プラットフォームプラットフォーム
バージョン情報バージョン情報
参照参照
関連項目
XmlMessageFormatter メンバ
System.Messaging 名前空間
MessageQueue クラス
ActiveXMessageFormatter クラス
BinaryMessageFormatter クラス
IMessageFormatter インターフェイス

XmlMessageFormatter コンストラクタ ()

対象の型を設定せずに、XmlMessageFormatter クラス新しインスタンス初期化します。

名前空間: System.Messaging
アセンブリ: System.Messaging (system.messaging.dll 内)
構文構文

Dim instance As New XmlMessageFormatter
public XmlMessageFormatter ()
public:
XmlMessageFormatter ()
public XmlMessageFormatter ()
public function XmlMessageFormatter ()
解説解説
.NET Framework のセキュリティ.NET Frameworkセキュリティ
プラットフォームプラットフォーム
バージョン情報バージョン情報
参照参照
関連項目
XmlMessageFormatter クラス
XmlMessageFormatter メンバ
System.Messaging 名前空間

XmlMessageFormatter コンストラクタ (Type[])

XmlMessageFormatter クラス新しインスタンス初期化しオブジェクト型配列として渡され対象の型を設定します

名前空間: System.Messaging
アセンブリ: System.Messaging (system.messaging.dll 内)
構文構文

Public Sub New ( _
    targetTypes As Type() _
)
Dim targetTypes As Type()

Dim instance As New XmlMessageFormatter(targetTypes)
public XmlMessageFormatter (
    Type[] targetTypes
)
public:
XmlMessageFormatter (
    array<Type^>^ targetTypes
)
public XmlMessageFormatter (
    Type[] targetTypes
)
public function XmlMessageFormatter (
    targetTypes : Type[]
)

パラメータ

targetTypes

フォーマッタメッセージから逆シリアル化できる型のセット指定する Type 型の配列

例外例外
例外種類条件

ArgumentNullException

targetTypes パラメータnull 参照 (Visual Basic では Nothing) です。

解説解説

対象型パラメータ使用するコンストラクタは、キューから読み取るときに最も頻繁に使用されます。書き込み時には対象の型を指定する要はありません。

この XmlMessageFormatter コンストラクタオーバーロードは、targetTypes パラメータ渡され配列値を TargetTypes プロパティ設定します。このプロパティ設定すると、MessageQueue は、この XmlMessageFormatter インスタンス使用して指定された型のオブジェクト含まれているメッセージ読み取ることができます

TargetTypeNames プロパティおよび TargetTypes プロパティ設定により、フォーマッタメッセージの逆シリアル化時に一致させようとするスキーマ決まります。これにより、フォーマッタメッセージ本文解釈できます

メッセージ本文シリアル化されるインスタンスは、型配列表されスキーマ1 つに従っている必要がありますReceive メソッド使用してメッセージ読み取る場合は、識別されスキーマ対応する型のオブジェクトがこのメソッドによって作成され、そこにメッセージ本文読み込まれます。

キューから読み取るときに設定する必要があるのは、2 つプロパティのうちの 1 つだけですが、両方設定することもできます。型のセットとは、2 つプロパティの型を結合したものです。どちらを使用するかは、アプリケーションによって異なりますメッセージ本文に、両方プロパティ配列内のどの型ともスキーマ一致しない型が含まれている場合は、読み取り時に例外スローさます。

TargetTypeNames ではなく TargetTypes指定する場合は、読み取りではなくコンパイル時に型の存在確認することで、エラー可能性抑制されます。TargetTypeNames では、すべてのエントリが完全に限定されアセンブリ名指定されている必要があります。さらに、複数のバージョン同時に操作する場合は、対象型名バージョン番号追加する必要があります

TargetTypes使用する場合は、次の C# コード示される方法で、各オブジェクト (MyClass など) をリスト追加できます

 TargetTypes = new Type[]{typeof(MyClass)}
.NET Framework のセキュリティ.NET Frameworkセキュリティ
プラットフォームプラットフォーム
バージョン情報バージョン情報
参照参照
関連項目
XmlMessageFormatter クラス
XmlMessageFormatter メンバ
System.Messaging 名前空間

XmlMessageFormatter コンストラクタ (String[])

XmlMessageFormatter クラス新しインスタンス初期化し、完全限定型の文字列値の配列として渡され対象の型を設定します

名前空間: System.Messaging
アセンブリ: System.Messaging (system.messaging.dll 内)
構文構文

Public Sub New ( _
    targetTypeNames As String() _
)
Dim targetTypeNames As String()

Dim instance As New XmlMessageFormatter(targetTypeNames)
public XmlMessageFormatter (
    string[] targetTypeNames
)
public:
XmlMessageFormatter (
    array<String^>^ targetTypeNames
)
public XmlMessageFormatter (
    String[] targetTypeNames
)
public function XmlMessageFormatter (
    targetTypeNames : String[]
)

パラメータ

targetTypeNames

フォーマッタメッセージから逆シリアル化できる型のセット指定する String 型の配列。これらの値は、たとえば "MyNamespace.MyOrders, MyOrdersAssemblyName" のように完全に限定されている必要があります

例外例外
例外種類条件

ArgumentNullException

targetTypeNames パラメータnull 参照 (Visual Basic では Nothing) です。

解説解説

対象型パラメータ使用するコンストラクタは、キューから読み取るときに最も頻繁に使用されます。書き込み時には対象の型を指定する要はありません。

この XmlMessageFormatter コンストラクタオーバーロードは、targetTypeNames パラメータ渡され配列値を TargetTypeNames プロパティ設定します。このプロパティ設定すると、MessageQueue は、この XmlMessageFormatter インスタンス使用して指定された型のオブジェクト含まれているメッセージ読み取ることができます

TargetTypeNames プロパティおよび TargetTypes プロパティ設定により、フォーマッタメッセージの逆シリアル化時に一致させようとするスキーマ決まります。これにより、フォーマッタメッセージ本文解釈できます

メッセージ本文シリアル化されるインスタンスは、型配列表されスキーマ1 つに従っている必要がありますReceive メソッド使用してメッセージ読み取る場合は、識別されスキーマ対応する型のオブジェクトがこのメソッドによって作成され、そこにメッセージ本文読み込まれます。

キューから読み取るときに設定する必要があるのは、2 つプロパティのうちの 1 つだけですが、両方設定することもできます。型のセットとは、2 つプロパティの型を結合したものです。どちらを使用するかは、アプリケーションによって異なりますメッセージ本文に、両方プロパティ配列内のどの型ともスキーマ一致しない型が含まれている場合は、読み取り時に例外スローさます。

使用例使用例
Imports System
Imports System.Messaging
Imports System.Drawing
Imports System.IO



   
' The following example 
' sends to a queue and receives from a queue.
Public Class Order
      Public orderId As Integer
      Public orderTime As DateTime
End Class 'Order

   
  
' Provides a container class for the example.

Public Class MyNewQueue
      
      

   ' Provides an entry point into the application.
   '         
   ' This example sends and receives a message from
   ' a queue.

   Public Shared Sub Main()
      ' Create a new instance of the class.
      Dim myNewQueue As New
 MyNewQueue()
        
      ' Create a queue on the local computer.
      CreateQueue(".\myQueue")
         
      ' Send a message to a queue.
      myNewQueue.SendMessage()
       
      ' Receive a message from a queue.
      myNewQueue.ReceiveMessage()
         
      Return
   End Sub 'Main
      
      

      ' Creates a new queue.
   Public Shared Sub CreateQueue(queuePath
 As String)
      Try
         If Not MessageQueue.Exists(queuePath)
 Then
            MessageQueue.Create(queuePath)
         Else
            Console.WriteLine((queuePath + " already exists."))
         End If
      Catch e As MessageQueueException
         Console.WriteLine(e.Message)
      End Try
   End Sub 'CreateQueue
       
      

      ' Sends an Order to a queue.

   Public Sub SendMessage()
      Try
            
            ' Create a new order and set values.
            Dim sentOrder As New
 Order()
            sentOrder.orderId = 3
            sentOrder.orderTime = DateTime.Now
            
            ' Connect to a queue on the local computer.
            Dim myQueue As New
 MessageQueue(".\myQueue")
            
            
            
            ' Create the new order.
            Dim myMessage As New
 Message(sentOrder)
            
            ' Send the order to the queue.
            myQueue.Send(myMessage)
      Catch e As ArgumentException
            Console.WriteLine(e.Message)
      End Try 
         
      Return
   End Sub 'SendMessage
      
      
      
 
      ' Receives a message containing an order.
 
   Public Sub ReceiveMessage()
         ' Connect to the a queue on the local computer.
         Dim myQueue As New
 MessageQueue(".\myQueue")
         
         ' Set the formatter to indicate body contains an Order.
         myQueue.Formatter = New XmlMessageFormatter(New
 Type() {GetType(Order)})
         
         Try
            ' Receive and format the message. 
            Dim myMessage As Message = myQueue.Receive()
            Dim myOrder As Order = CType(myMessage.Body,
 Order)
            
            ' Display message information.
            Console.WriteLine(("Order ID: " + myOrder.orderId.ToString()))
            Console.WriteLine(("Sent: " + myOrder.orderTime.ToString()))
         
  
         ' Handle invalid serialization format.
         Catch e As InvalidOperationException
            Console.WriteLine(e.Message)
         End Try
         
         ' Catch other exceptions as necessary.
         Return
   End Sub 'ReceiveMessage
End Class 'MyNewQueue

using System;
using System.Messaging;
using System.Drawing;
using System.IO;

namespace MyProject
{

    // The following example 
    // sends to a queue and receives from a queue.
    public class Order
    {
        public int orderId;
        public DateTime orderTime;
    };    

    /// <summary>
    /// Provides a container class for the example.
    /// </summary>
    public class MyNewQueue
    {

        //**************************************************
        // Provides an entry point into the application.
        //         
        // This example sends and receives a message from
        // a queue.
        //**************************************************

        public static void
 Main()
        {
            // Create a new instance of the class.
            MyNewQueue myNewQueue = new MyNewQueue();

            // Create a queue on the local computer.
            CreateQueue(".\\myQueue");
            
            // Send a message to a queue.
            myNewQueue.SendMessage();

            // Receive a message from a queue.
            myNewQueue.ReceiveMessage();

            return;
        }

        //**************************************************
        // Creates a new queue.
        //**************************************************

        public static void
 CreateQueue(string queuePath)
        {
            try    
            {
                if(!MessageQueue.Exists(queuePath))
                {
                    MessageQueue.Create(queuePath);
                }
                else
                {
                    Console.WriteLine(queuePath + " already exists.");
                }
            }
            catch (MessageQueueException e)
            {
                Console.WriteLine(e.Message);
            }
            
        }

        //**************************************************
        // Sends an Order to a queue.
        //**************************************************
        
        public void SendMessage()
        {
            try
            {

                // Create a new order and set values.
                Order sentOrder = new Order();
                sentOrder.orderId = 3;
                sentOrder.orderTime = DateTime.Now;

                // Connect to a queue on the local computer.
                MessageQueue myQueue = new MessageQueue(".\\myQueue");


                
                // Create the new order.
                Message myMessage = new Message(sentOrder);

                // Send the order to the queue.
                myQueue.Send(myMessage);
            }
            catch(ArgumentException e)
            {
                Console.WriteLine(e.Message);
            
            }

            return;
        }


        //**************************************************
        // Receives a message containing an order.
        //**************************************************
        
        public  void ReceiveMessage()
        {
            // Connect to the a queue on the local computer.
            MessageQueue myQueue = new MessageQueue(".\\myQueue");

            // Set the formatter to indicate body contains an Order.
            myQueue.Formatter = new XmlMessageFormatter(new
 Type[]
                {typeof(MyProject.Order)});
            
            try
            {
                // Receive and format the message. 
                Message myMessage =    myQueue.Receive(); 
                Order myOrder = (Order)myMessage.Body;

                // Display message information.
                Console.WriteLine("Order ID: " + 
                    myOrder.orderId.ToString());
                Console.WriteLine("Sent: " + 
                    myOrder.orderTime.ToString());
            }
            
            catch (MessageQueueException)
            {
                // Handle Message Queuing exceptions.
            }

                // Handle invalid serialization format.
            catch (InvalidOperationException e)
            {
                Console.WriteLine(e.Message);
            }
            
            // Catch other exceptions as necessary.

            return;
        }
    }
}
#using <system.dll>
#using <system.messaging.dll>
#using <system.drawing.dll>

using namespace System;
using namespace System::Messaging;
using namespace System::Drawing;
using namespace System::IO;
ref class Order
{
public:
   int orderId;
   DateTime orderTime;
};

ref class MyNewQueue
{
public:
   static void CreateQueue( String^ queuePath
 )
   {
      try
      {
         if (  !MessageQueue::Exists( queuePath ) )
         {
            MessageQueue::Create( queuePath );
         }
         else
         {
            Console::WriteLine(  "{0} already exists.", queuePath );
         }
      }
      catch ( MessageQueueException^ e ) 
      {
         Console::WriteLine( e->Message );
      }

   }

   void SendMessage()
   {
      try
      {
         // Create a new order and set values.
         Order^ sentOrder = gcnew Order;
         sentOrder->orderId = 3;
         sentOrder->orderTime = DateTime::Now;

         // Connect to a queue on the local computer.
         MessageQueue^ myQueue = gcnew MessageQueue( ".\\myQueue" );

         // Create the new order.
         Message^ myMessage = gcnew Message( sentOrder );

         // Send the order to the queue.
         myQueue->Send( myMessage );
      }
      catch ( ArgumentException^ e ) 
      {
         Console::WriteLine( e->Message );
      }

      return;
   }

   void ReceiveMessage()
   {
      // Connect to the a queue on the local computer.
      MessageQueue^ myQueue = gcnew MessageQueue( ".\\myQueue" );

      // Set the formatter to indicate body contains an Order.
      array<Type^>^p = gcnew array<Type^>(1);
      p[ 0 ] = Order::typeid;
      myQueue->Formatter = gcnew XmlMessageFormatter( p );
      try
      {
         // Receive and format the message. 
         Message^ myMessage = myQueue->Receive();
         Order^ myOrder = dynamic_cast<Order^>(myMessage->Body);

         // Display message information.
         Console::WriteLine( "Order ID: {0}", myOrder->orderId );
         Console::WriteLine( "Sent: {0}", myOrder->orderTime );
      }
      catch ( MessageQueueException^ ) 
      {
         // Handle Message Queuing exceptions.
      }
      // Handle invalid serialization format.
      catch ( InvalidOperationException^ e ) 
      {
         Console::WriteLine( e->Message );
      }

      // Catch other exceptions as necessary.
      return;
   }
};

int main()
{
   // Create a new instance of the class.
   MyNewQueue^ myNewQueue = gcnew MyNewQueue;

   // Create a queue on the local computer.
   MyNewQueue::CreateQueue( ".\\myQueue" );

   // Send a message to a queue.
   myNewQueue->SendMessage();

   // Receive a message from a queue.
   myNewQueue->ReceiveMessage();
   return 0;
}
package MyProject;

import System.*;
import System.Messaging.*;
import System.Drawing.*;
import System.IO.*;

// The following example 
// sends to a queue and receives from a queue.
public class Order
{
    public int orderId;
    public DateTime orderTime;
} //Order

/// <summary>
/// Provides a container class for the example.
/// </summary>
public class MyNewQueue
{
    //**************************************************
    // Provides an entry point into the application.
    //         
    // This example sends and receives a message from
    // a queue.
    //**************************************************
    public static void main(String[]
 args)
    {
        // Create a new instance of the class.
        MyNewQueue myNewQueue = new MyNewQueue();

        // Create a queue on the local computer.
        CreateQueue(".\\myQueue");

        // Send a message to a queue.
        myNewQueue.SendMessage();

        // Receive a message from a queue.
        myNewQueue.ReceiveMessage();

        return;
    } //main

    //**************************************************
    // Creates a new queue.
    //**************************************************
    public static void CreateQueue(String
 queuePath)
    {
        try {
            if (!(MessageQueue.Exists(queuePath))) {
                MessageQueue.Create(queuePath);
            }
            else {
                Console.WriteLine(queuePath + " already exists.");
            }
        }
        catch (MessageQueueException e) {
            Console.WriteLine(e.get_Message());
        }
    } //CreateQueue

    //**************************************************
    // Sends an Order to a queue.
    //**************************************************
    public void SendMessage()
    {
        try {
            // Create a new order and set values.
            Order sentOrder = new Order();
            sentOrder.orderId = 3;
            sentOrder.orderTime = DateTime.get_Now();

            // Connect to a queue on the local computer.
            MessageQueue myQueue = new MessageQueue(".\\myQueue");

            // Create the new order.
            Message myMessage = new Message(sentOrder);

            // Send the order to the queue.
            myQueue.Send(myMessage);
        }
        catch (ArgumentException e) {
            Console.WriteLine(e.get_Message());
        }
        return;
    } //SendMessage

    //**************************************************
    // Receives a message containing an order.
    //**************************************************
    public void ReceiveMessage()
    {
        // Connect to the a queue on the local computer.
        MessageQueue myQueue = new MessageQueue(".\\myQueue");

        // Set the formatter to indicate body contains an Order.
        myQueue.set_Formatter(new XmlMessageFormatter(new
 Type[] 
            { MyProject.Order.class.ToType() }));

        try {
            // Receive and format the message. 
            Message myMessage = myQueue.Receive();
            Order myOrder = (Order)myMessage.get_Body();

            // Display message information.
            Console.WriteLine("Order ID: " + Convert.ToString(myOrder.orderId));
            Console.WriteLine("Sent: " + myOrder.orderTime.ToString());
        }
        catch (MessageQueueException exp) {
            // Handle Message Queuing exceptions.
        }
            
        // Handle invalid serialization format.
        catch (InvalidOperationException e) {
            Console.WriteLine(e.get_Message());
        }
        // Catch other exceptions as necessary.
        return;
    } //ReceiveMessage
} //MyNewQueue
.NET Framework のセキュリティ.NET Frameworkセキュリティ
プラットフォームプラットフォーム
バージョン情報バージョン情報
参照参照
関連項目
XmlMessageFormatter クラス
XmlMessageFormatter メンバ
System.Messaging 名前空間

XmlMessageFormatter コンストラクタ

XmlMessageFormatter クラス新しインスタンス初期化します。
オーバーロードの一覧オーバーロードの一覧

名前 説明
XmlMessageFormatter () 対象の型を設定せずに、XmlMessageFormatter クラス新しインスタンス初期化します。

.NET Compact Framework によってサポートされています。

XmlMessageFormatter (String[]) XmlMessageFormatter クラス新しインスタンス初期化し、完全限定型の文字列値の配列として渡され対象の型を設定します

.NET Compact Framework によってサポートされています。

XmlMessageFormatter (Type[]) XmlMessageFormatter クラス新しインスタンス初期化しオブジェクト型配列として渡され対象の型を設定します

.NET Compact Framework によってサポートされています。

参照参照

関連項目

XmlMessageFormatter クラス
XmlMessageFormatter メンバ
System.Messaging 名前空間

XmlMessageFormatter プロパティ


パブリック プロパティパブリック プロパティ

  名前 説明
パブリック プロパティ TargetTypes 提供されメッセージからフォーマッタで逆シリアル化できる型のセット指定します
参照参照

関連項目

XmlMessageFormatter クラス
System.Messaging 名前空間
MessageQueue クラス
ActiveXMessageFormatter クラス
BinaryMessageFormatter クラス
IMessageFormatter インターフェイス

XmlMessageFormatter メソッド


パブリック メソッドパブリック メソッド

プロテクト メソッドプロテクト メソッド
参照参照

関連項目

XmlMessageFormatter クラス
System.Messaging 名前空間
MessageQueue クラス
ActiveXMessageFormatter クラス
BinaryMessageFormatter クラス
IMessageFormatter インターフェイス

XmlMessageFormatter メンバ

XSD スキーマ定義の XML 書式使用してメッセージ本文との間でオブジェクトシリアル化および逆シリアル化ます。

XmlMessageFormatter データ型公開されるメンバを以下の表に示します


パブリック コンストラクタパブリック コンストラクタ
  名前 説明
パブリック メソッド XmlMessageFormatter オーバーロードされます。 XmlMessageFormatter クラス新しインスタンス初期化します。
パブリック プロパティパブリック プロパティ
  名前 説明
パブリック プロパティ TargetTypes 提供されメッセージからフォーマッタで逆シリアル化できる型のセット指定します
パブリック メソッドパブリック メソッド
プロテクト メソッドプロテクト メソッド
参照参照

関連項目

XmlMessageFormatter クラス
System.Messaging 名前空間
MessageQueue クラス
ActiveXMessageFormatter クラス
BinaryMessageFormatter クラス
IMessageFormatter インターフェイス



英和和英テキスト翻訳>> Weblio翻訳
英語⇒日本語日本語⇒英語
  

辞書ショートカット

すべての辞書の索引

「XmlMessageFormatter」の関連用語

XmlMessageFormatterのお隣キーワード
検索ランキング

   

英語⇒日本語
日本語⇒英語
   



XmlMessageFormatterのページの著作権
Weblio 辞書 情報提供元は 参加元一覧 にて確認できます。

   
日本マイクロソフト株式会社日本マイクロソフト株式会社
© 2025 Microsoft.All rights reserved.

©2025 GRAS Group, Inc.RSS