検索

MSMQ (Microsoft Message Queue) を利用すると、アプリケーション開発者はメッセージを送受信することで、アプリケーションと簡単かつ迅速かつ確実に通信できます。メッセージ処理は、保証されたメッセージ配信と、多くのビジネス プロセスを実行するための信頼性の高いフェールセーフな方法を提供します。

MSMQ は、XML Web サービスや .Net Remoting と同様、分散開発テクノロジです。ただし、XML Web サービスまたは .Net Remoting コンポーネントを使用する場合、クライアントはサーバーとリアルタイムで情報を交換する必要があり、サーバーはオンラインを維持する必要があります。 MSMQ はサーバーがオフラインのときにも動作し、メッセージをクライアントのメッセージ キューに一時的に保存し、後でオンラインになったときに処理するためにサーバーに送信します。

明らかに、MSMQ は、クライアントがサーバーからのタイムリーな応答を必要とする状況には適していません。MSMQ は非同期でサーバーと対話するため、サーバーの処理を長時間待つことを心配する必要はありません。

XML Web サービスと .Net Remoting は両方とも、非同期呼び出しを処理するための [OneWay] 属性を提供します。これは、クライアント側で長時間妨げられるサーバー側での長いメソッド呼び出しの問題を解決するために使用されます。ただし、現時点では、サーバーはリクエストを処理するよりも早くリクエストを受け入れるため、大量のクライアント負荷の問題を解決できません。

通常、[OneWay] 属性は特殊なメッセージング サービスでは使用されません。

1. 基本的な用語と概念

「メッセージ」は、2 台のコンピューター間で送信されるデータの単位です。メッセージは、テキスト文字列のみを含む非常に単純な場合もあれば、埋め込みオブジェクトを含むより複雑な場合もあります。

メッセージはキューに送信されます。 「メッセージ キュー」は、送信中のメッセージを保存するコンテナです。メッセージ キュー マネージャーは、メッセージを送信元から宛先に中継するときに仲介者として機能します。キューの主な目的は、ルーティングを提供し、メッセージの配信を保証することです。メッセージの送信時に受信者が不在の場合、メッセージ キューはメッセージが正常に配信されるまでメッセージを保持します。

「メッセージ キュー」は、Microsoft Windows がインストールされているコンピュータの任意の組み合わせ上のアプリケーションに、コンピュータが同じネットワーク上にあるか、オンラインでないかに関係なく、メッセージ処理およびメッセージ キュー機能を提供する Microsoft のメッセージング テクノロジです。時間。

「メッセージ キュー ネットワーク」とは、メッセージを相互に送信できるコンピューターのグループです。ネットワーク内のさまざまなコンピュータは、メッセージがスムーズに処理されるようにするためにさまざまな役割を果たします。それらの中には、メッセージの送信方法を決定するためのルーティング情報を提供するもの、ネットワーク全体に関する重要な情報を保持するもの、および単にメッセージを送受信するだけのものもあります。

メッセージ キューのインストール中に、管理者はどのサーバーが相互に通信できるかを決定し、特定のサーバーに特別な役割を設定します。このメッセージ キュー ネットワークを構成するコンピュータはサイトと呼ばれ、サイト リンクを通じて相互に接続されます。各サイト リンクには関連する「コスト」があり、管理者によって決定され、サイト リンクを通じてメッセージが配信される頻度が示されます。

また、「メッセージ キュー」管理者は、ネットワーク内で 1 台以上のコンピュータを「ルーティング サーバー」として設定します。ルーティング サーバーは、各サイト リンクのコストを調べてメッセージを配信する方法を決定し、複数のサイトを通じてメッセージを配信するための最速かつ最も効率的な方法を決定します。

2. キューの種類

ネットワーク上のユーザーまたは他のユーザーによって作成されたキューとシステム キューの 2 つの主なキュー タイプがあります。

ユーザーが作成したキューは、次のいずれかになります。

「パブリック キュー」は、メッセージ キュー ネットワーク全体にレプリケートされ、ネットワークに接続されているすべてのサイトからアクセスできる可能性があります。

「プライベートキュー」はネットワーク全体に公開されません。代わりに、それらが存在するローカル コンピュータ上でのみ使用できます。プライベート キューには、キューの完全なパス名またはラベルを知っているアプリケーションのみがアクセスできます。

「管理キュー」には、特定の「メッセージ キュー」ネットワークで送信されたメッセージの受信を確認するメッセージが含まれます。 MessageQueue コンポーネントで使用する管理キュー (存在する場合) を指定します。

「応答キュー」には、ターゲットアプリケーションがメッセージを受信したときに送信アプリケーションに返される応答メッセージが含まれます。 MessageQueue コンポーネントで使用する応答キュー (存在する場合) を指定します。

システム生成のキューは、通常、次のカテゴリに分類されます。

「ジャーナル キュー」は、送信されたメッセージのコピーとキューから削除されたメッセージをオプションで保存します。各メッセージ キュー クライアント上の 1 つのジャーナル キューには、そのコンピュータから送信されたメッセージのコピーが保存されます。キューごとに個別のジャーナル キューがサーバー上に作成されます。このジャーナルは、このキューから削除されたメッセージを追跡します。

「デッドレターキュー」には、配信できないメッセージや期限切れのメッセージのコピーが保存されます。期限切れのメッセージまたは配信不能なメッセージがトランザクション メッセージの場合、そのメッセージは「トランザクション配信不能キュー」と呼ばれる特別な配信不能キューに保存されます。デッドレターは、期限切れのメッセージと同じコンピュータに保存されます。タイムアウト期間と期限切れメッセージの詳細については、「デフォルトのメッセージ プロパティ」を参照してください。

「レポートキュー」には、メッセージが宛先に到達するまでにたどったルートを示すメッセージが含まれており、テストメッセージを含むこともできます。コンピュータごとに存在できるレポート キューは 1 つだけです。

「プライベート システム キュー」は、システムがメッセージ処理操作を実行するために必要な管理メッセージと通知メッセージを保存する一連の専用キューです。

アプリケーションで行われる作業のほとんどには、パブリック キューとそのメッセージへのアクセスが含まれます。ただし、アプリケーションのロギング、確認応答、その他の特別な処理のニーズに応じて、日常の操作でいくつかの異なるシステム キューを使用する可能性があります。

3. 同期通信と非同期通信

キューへのメッセージの送信とキューからのメッセージの受信は別のプロセスで完了するため、キューの通信は本質的に非同期です。さらに、メッセージを受信したい人は任意のキューで BeginReceive メソッドを呼び出し、応答を待たずにすぐに他のタスクを続行できるため、受信操作を非同期で実行できます。これは、人々が知っている「同期通信」とは大きく異なります。

同期通信では、リクエストの送信者は、他のタスクを実行する前に、目的の受信者からの応答を待つ必要があります。送信者が待機する時間は、受信者が要求を処理して応答を送信するのにかかる時間に完全に依存します。

4. メッセージ キューとの対話

メッセージ処理とメッセージングは​​、サーバーベースのアプリケーション コンポーネント間のプロセス間通信のための強力で柔軟なメカニズムを提供します。コンポーネント間の直接呼び出しに比べて、次のようないくつかの利点があります:

安定性 - メッセージはキューに保存され、適切に処理されるまでキューに留まるため、コンポーネントの障害がメッセージに与える影響は、コンポーネント間の直接呼び出しよりもはるかに少ないです。メッセージ処理は、メッセージ処理が保証されているという点でトランザクション処理に似ています。

メッセージの優先順位 – 重要性の低いメッセージよりも緊急性の高いメッセージや重要なメッセージを受信できるため、重要なアプリケーションに対する適切な応答時間が確保されます。

オフライン機能 - メッセージが送信されると、一時キューに送信され、正常に配信されるまでそこに留まります。何らかの理由で必要なキューにアクセスできない場合でも、ユーザーは操作を続行できます。一方、ネットワーク接続が回復するとメッセージの配信が保証されるため、他の操作はメッセージが処理されたかのように続行できます。

トランザクション メッセージ処理 — 複数の関連メッセージを 1 つのトランザクションに結合し、メッセージが順番に配信され、1 回だけ配信され、宛先キューから正常に取得できるようにします。エラーが発生した場合、トランザクション全体がキャンセルされます。

セキュリティ — MessageQueue コンポーネントのベースとなるメッセージ キュー テクノロジは、Windows セキュリティを使用してアクセス制御を保護し、監査を提供し、コンポーネントによって送受信されるメッセージを暗号化および認証します。

5. .Net 環境で簡単なメッセージ キュー プログラムを作成します

(1) 最初にメッセージ キュー サービスをインストールします

コントロール パネルの [プログラムの追加と削除] - [Windows コンポーネントの追加と削除] の手順で MSMQ をインストールします。

MSMQ はワークグループ モードまたはドメイン モードでインストールできます。インストーラがディレクトリ サービスを提供するメッセージ キューを実行しているサーバーを見つけられない場合、このコンピュータにメッセージ キューをインストールできるのは、プライベート キューの作成と、メッセージ キューを直接実行している他のコンピュータとの共有キューの作成だけです。繋がり。

(2) MSMQ を構成します

コンピューターの管理 – メッセージ キューを開き、プライベート キューの下に MSMQDemo キューを作成します

(3) コードを書く - MSMQ オブジェクトの簡単なデモンストレーション

MessageQueue クラスは "メッセージキュー」パッケージ。 MessageQueue クラスは、Message Queue キューへの参照を提供します。 MessageQueue コンストラクターで既存のリソースへのパスを指定することも、サーバー上に新しいキューを作成することもできます。 Send、Peek、または Receive を呼び出す前に、MessageQueue クラスの新しいインスタンスを既存のキューに関連付ける必要があります。

MessageQueue は、同期と非同期の 2 種類のメッセージ取得をサポートしています。同期 Peek メソッドと Receive メソッドを使用すると、プロセス スレッドは、新しいメッセージがキューに到着するまで、指定された間隔だけ待機します。非同期 BeginPeek メソッドと BeginReceive メソッドを使用すると、メッセージがキューに到着する前に、メイン アプリケーション タスクが別のスレッドで実行を継続できます。これらのメソッドは、コールバック オブジェクトと状態オブジェクトを使用してスレッド間で情報を通信することによって機能します。

// メッセージを送信

private void btnSendMessage_Click(object sender, System.EventArgs e)

{

Queue(" .\Private$ \ MsmqDemo "); トリム (); (

message.Formatter = new System.Messaging.XmlMessageFormatter(new Type[] {typeof(string)});

// メッセージをキューに入れます

queue.Send(message);

}

// メッセージを受信します

private void btnReceiveMessage_Click(object sender, System.EventArgs e)

{

// キューを開く

System.Messaging.MessageQueue queue = new System.Messaging.MessageQueue(".\Private$\ MSMQデモ");

// メッセージを受信します。同步的受信方法を阻止し、現在のメッセージを取得できるまで

System.Messaging.Message message = queue.Receive();

message.Formatter = new System 。 Messaging.XmlMessageFormatter(new Type[] {typeof(string)});

txtReceiveMessage.Text = message.Body.ToString();

}


声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
.NETエコシステム:C#の役割以降.NETエコシステム:C#の役割以降May 03, 2025 am 12:04 AM

C#は、.NETエコシステムで中核的な役割を果たし、開発者にとって好ましい言語です。 1)C#は、C、C、Javaの利点を組み合わせた効率的で使いやすいプログラミング方法を提供します。 2).NETランタイム(CLR)を介して実行して、効率的なクロスプラットフォーム操作を確保します。 3)C#は、LINQや非同期プログラミングなどの基本的な使用から高度な使用をサポートします。 4)最適化とベストプラクティスには、StringBuilderおよび非同期プログラミングを使用して、パフォーマンスと保守性を向上させることが含まれます。

.NET言語としてのC#:エコシステムの基礎.NET言語としてのC#:エコシステムの基礎May 02, 2025 am 12:01 AM

C#は、2000年にMicrosoftがリリースしたプログラミング言語で、CのパワーとJavaのシンプルさを組み合わせることを目指しています。 1.C#は、カプセル化、継承、多型をサポートするタイプセーフ、オブジェクト指向のプログラミング言語です。 2. C#のコンパイルプロセスは、コードを中間言語(IL)に変換し、.NETランタイム環境(CLR)でマシンコード実行にコンパイルします。 3. C#の基本的な使用法には、可変宣言、制御フロー、関数の定義が含まれ、高度な使用法には非同期プログラミング、LINQ、およびデリゲートなどが含まれます。4。一般的なエラーには、デバッガー、例外処理、ロギングを介してデバッグできるタイプミスマッチおよびヌル参照の例外が含まれます。 5.パフォーマンスの最適化の提案には、LINQの使用、非同期プログラミング、およびコードの読み取り可能性の向上が含まれます。

C#対.NET:重要な違​​いと類似点を明確にしますC#対.NET:重要な違​​いと類似点を明確にしますMay 01, 2025 am 12:12 AM

C#はプログラミング言語であり、.NETはソフトウェアフレームワークです。 1.C#はMicrosoftによって開発されており、マルチプラットフォーム開発に適しています。 2..NETは、クラスライブラリとランタイム環境を提供し、多言語をサポートします。 2つは協力して最新のアプリケーションを構築します。

誇大広告を超えて:c#.netの現在の役割を評価する誇大広告を超えて:c#.netの現在の役割を評価するApr 30, 2025 am 12:06 AM

C#.NETは、C#言語と.NETフレームワークの利点を組み合わせた強力な開発プラットフォームです。 1)エンタープライズアプリケーション、Web開発、ゲーム開発、モバイルアプリケーション開発で広く使用されています。 2)C#コードは中間言語にコンパイルされ、.NETランタイム環境によって実行され、ガベージコレクション、タイプの安全性、LINQクエリをサポートします。 3)使用の例には、基本的なコンソール出力と高度なLINQクエリが含まれます。 4)空の参照やタイプ変換エラーなどの一般的なエラーは、デバッガーとロギングを通じて解決できます。 5)パフォーマンスの最適化の提案には、非同期プログラミングとLINQクエリの最適化が含まれます。 6)競争にもかかわらず、C#.NETは継続的なイノベーションを通じて重要な地位を維持しています。

C#.NETの未来:トレンドと機会C#.NETの未来:トレンドと機会Apr 29, 2025 am 12:02 AM

C#.NETの将来の傾向は、主にクラウドコンピューティング、マイクロサービス、AIおよび機械学習統合、およびクロスプラットフォーム開発の3つの側面に焦点を当てています。 1)クラウドコンピューティングとマイクロサービス:C#.NETは、Azureプラットフォームを介してクラウド環境のパフォーマンスを最適化し、効率的なマイクロサービスアーキテクチャの構築をサポートします。 2)AIと機械学習の統合:ML.NETライブラリの助けを借りて、C#開発者はアプリケーションに機械学習モデルを埋め込み、インテリジェントアプリケーションの開発を促進できます。 3)クロスプラットフォーム開発:.NetCoreおよび.Net5を介して、C#アプリケーションはWindows、Linux、およびMacOで実行され、展開範囲が拡大します。

C#.NET開発今日:トレンドとベストプラクティスC#.NET開発今日:トレンドとベストプラクティスApr 28, 2025 am 12:25 AM

C#.NET開発における最新の開発とベストプラクティスには、次のものが含まれます。1。非同期プログラミングは、アプリケーションの応答性を向上させ、Asyncを使用して非ブロッキングコードを簡素化し、キーワードを待ちます。 2。LINQは強力なクエリ関数を提供し、遅延した実行および式ツリーを介してデータを効率的に操作します。 3.パフォーマンスの最適化の提案には、非同期プログラミングの使用、LINQクエリの最適化、メモリの合理的な管理、コードの読みやすさとメンテナンスの改善、単体テストの書き込みが含まれます。

C#.NET:.NETエコシステムを使用したアプリケーションの構築C#.NET:.NETエコシステムを使用したアプリケーションの構築Apr 27, 2025 am 12:12 AM

.NETを使用してアプリケーションを構築する方法は? .NETを使用してアプリケーションを構築することは、次の手順を通じて達成できます。1)C#言語やクロスプラットフォーム開発サポートを含む.NETの基本を理解します。 2)コンポーネントや.NETエコシステムの作業原則などのコア概念を学習します。 3)単純なコンソールアプリケーションから複雑なWebAPISおよびデータベース操作まで、基本的および高度な使用をマスターします。 4)構成やデータベース接続の問題など、一般的なエラーとデバッグ手法に精通している。 5)アプリケーションのパフォーマンスの最適化と非同期プログラミングやキャッシュなどのベストプラクティス。

汎用性のある.NET言語としてのC#:アプリケーションと例汎用性のある.NET言語としてのC#:アプリケーションと例Apr 26, 2025 am 12:26 AM

C#は、エンタープライズレベルのアプリケーション、ゲーム開発、モバイルアプリケーション、Web開発で広く使用されています。 1)エンタープライズレベルのアプリケーションでは、C#がasp.netcoreにWebAPIを開発するためによく使用されます。 2)ゲーム開発では、C#がUnityエンジンと組み合わされて、ロールコントロールやその他の機能を実現します。 3)C#は、コードの柔軟性とアプリケーションのパフォーマンスを改善するために、多型と非同期プログラミングをサポートします。

See all articles

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

AtomエディタMac版ダウンロード

AtomエディタMac版ダウンロード

最も人気のあるオープンソースエディター

MinGW - Minimalist GNU for Windows

MinGW - Minimalist GNU for Windows

このプロジェクトは osdn.net/projects/mingw に移行中です。引き続きそこでフォローしていただけます。 MinGW: GNU Compiler Collection (GCC) のネイティブ Windows ポートであり、ネイティブ Windows アプリケーションを構築するための自由に配布可能なインポート ライブラリとヘッダー ファイルであり、C99 機能をサポートする MSVC ランタイムの拡張機能が含まれています。すべての MinGW ソフトウェアは 64 ビット Windows プラットフォームで実行できます。

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

Safe Exam Browser

Safe Exam Browser

Safe Exam Browser は、オンライン試験を安全に受験するための安全なブラウザ環境です。このソフトウェアは、あらゆるコンピュータを安全なワークステーションに変えます。あらゆるユーティリティへのアクセスを制御し、学生が無許可のリソースを使用するのを防ぎます。