C# ネットワーク アプリケーション プログラミングに関する基本的な質問と回答をまとめたもの

目次

1. 分散型、集中型、分散型の通信モデルの特徴を簡単に説明します。

2. C/SとB/Sのメリットとデメリットを簡単に説明します。

3.ソケットとは何ですか? ソケットにはどのような種類がありますか?

4.デジタルインクの用途は何ですか? 一般的な WPF 要素にはデジタル インク関連のイベントがありますか?

5. あなたが見たスマートフォンやカーナビゲーションシステムのどの機能が、PC上でシミュレーションできたり、デジタルインクを使用してプロトタイプとしてデモできたりするかを簡単に説明してください。

6. プロセスとスレッドの違いは何ですか? マルチスレッドを使用する理由 マルチスレッドはどのような状況に適していますか?

7. フォアグラウンド スレッドとバックグラウンド スレッドの違いと関係は何ですか? スレッドがフォアグラウンド スレッドに属するかバックグラウンド スレッドに属するかを判断するにはどうすればよいですか? スレッドをバックグラウンド スレッドとして設定するにはどうすればよいですか?

8. 同期とは何ですか? なぜ同期が必要なのでしょうか? コード同期を簡単に実装するために C# にはどのようなステートメントが用意されていますか?

9. スレッドプールとは何ですか? スレッド プールを使用する利点は何ですか?

10. アプリケーションドメインとプロセス間の違いとつながりは何ですか?

11.エンコードとは何ですか? デコードとは何ですか? 文字がエンコードおよびデコードされるのはなぜですか? .NET Framework は文字エンコードとデコードのためにどのようなクラスを提供しますか?

12. .NET によって提供される、Stream クラスから継承するデータ ストリームとは何ですか?

13. 対称暗号化と非対称暗号化の特徴と実装原理を簡単に説明します。

対称暗号化:

非対称暗号化:

14. デジタル署名とは何ですか? デジタル署名は何に使用されますか?

15. async キーワードと await キーワードのみを含む非同期メソッドは、Task.Run で呼び出される非同期メソッドとどのように異なりますか?

16.通常のメソッドと非同期メソッドをタスクとして実行する場合のメソッド呼び出しの違いは何ですか?

17. Action デリゲートと Func デリゲートの違いは何ですか?

18. タスクを作成する方法は何通りありますか?

19. WPF アプリケーションで使用できるタイマーはいくつありますか?

20. タスクキャンセル機能を実現する仕組みを簡単に説明します。

21。TPL はどのような並列メソッドをサポートしていますか?

22。並列プログラミングにおけるパーティショニングの形式は何ですか?

23。Parallel ヘルパー クラスとは何ですか? 機能は何ですか?

24。一般的に使用される同時コレクション クラスはいくつありますか?

25.Parallel.Invoke メソッドを使用する場合、Action が WPF インターフェイスと対話できるようにするには何に注意する必要がありますか?

26.Web サービスと WCF の違いと関係を簡単に紹介します。

27. WCF サービスのホスティング方法と特徴を簡単に紹介します。

28. サービス コントラクトとは何ですか? データ コントラクトとは何ですか? サービス コントラクトとデータ コントラクトをそれぞれ宣言するためにどのような特性が使用されますか?

29. C/SベースでHTTPアプリケーションを書く場合の実装技術は何ですか?それぞれの特徴は何ですか?

(1)。プラグイン可能なプロトコルを使用して実装

(2)。HttpWebRequest と HttpWebResponse を使用して実装します

(3).WCF で実装

30. WCF クライアントとサーバー間のメッセージ交換モードは何ですか?

41. TCP の主な機能は何ですか?

42.TCP のメッセージレス境界問題を解決する一般的な方法は何ですか?

43. タスクベースの非同期 TCP プログラミングと Thread による直接実装の主な違いを簡単に説明します。

44. WCF を使用して TCP サーバーおよびクライアント プログラムを作成するための一般的な手順を簡単に答えてください。

45. UDP と TCP の主な違いは何ですか?

46.放送とは何ですか? マルチキャストとは何ですか? 両者の違いは何ですか?

47. UdpClient オブジェクトを使用してマルチキャスト グループに参加および脱退する手順を簡単に答えてください。

48. 簡単な答え: WCF と UDP を使用してマルチキャスト プログラムを作成する場合と、UdpClient クラスを使用する場合の主な違いは何ですか? これら 2 つの実装方法のそれぞれの長所と短所は何ですか?

49.トランザクション キューと非トランザクション キューの主な違いを簡単に説明します。

50.MSMQ を使用して二重通信を実現するにはどうすればよいですか?

51. デッドレターキューとウイルスメッセージキューの使用法を簡単に説明します。


1. 分散型、集中型、分散型の通信モデルの特徴を簡単に説明します。

分散型: 独立したシステム間でリソースや情報の交換や共有はありません。データの冗長性が多く、維持コストが高かったため、それは解消されました。

集中型:データと管理機能が 1 台のコンピュータに集中されており、ユーザーは端末からのみ操作できます。利点はハードウェアコストが低いこと、冗長性や不整合の問題がないこと、欠点は信頼性と柔軟性が低いこと、応答が遅いことです。

分散型: 分散型システムと集中型システムが混合されたもので、現在は比較的完全なソリューションです。

2. C/SとB/Sのメリットとデメリットを簡単に説明します。

C/S はシック クライアント アプリケーション プログラミング アーキテクチャであり、その主な作業はクライアント上で実行されます。ローカル コンピュータのパフォーマンス上の利点を最大限に活用できることが利点ですが、ローカル コンピュータにクライアント ソフトウェアをインストールする必要があることが欠点です。

B/S は通信に HTTP を使用します。利点は、1 台のコンピュータで任意の Web サーバーにアクセスできることですが、欠点は、B/S モードにはサンドボックス制限があることです。

3.ソケットとは何ですか? ソケットにはどのような種類がありますか?

ソケットは、TCP/IP ネットワーク通信をサポートする基本的なオペレーティング ユニットであり、異なるホスト間のプロセスが通信するためのエンドポイントです。ソケットインスタンスには、自マシンのIPアドレスやポートだけでなく、相手のIPアドレスやポート、双方間の通信に使用したネットワークプロトコルなどの情報も保存されます。

ソケットには、ストリーミング ソケット、データグラム ソケット、および raw ソケットの 3 種類があります。

4.デジタルインクの用途は何ですか? 一般的な WPF 要素にはデジタル インク関連のイベントがありますか?

デジタルインクは、パソコン、携帯電話、タブレット、カーナビなどのさまざまなデバイス上でインクの形状を描画したり、タッチスクリーンや手書きアプリケーションに関する機能を実装したりするために使用できます。

すべての WPF 要素はデジタル インク機能をサポートしています。

5. あなたが見たスマートフォンやカーナビゲーションシステムのどの機能が、PC上でシミュレーションできたり、デジタルインクを使用してプロトタイプとしてデモできたりするかを簡単に説明してください。

デジタル インク テクノロジーは、スマートフォンのロックを解除するためのボタンのスライド、プログラムを閉じるためのアプリのスライド、手描きタブレット、手書き入力などの機能にスマートフォンで使用されています。

デジタルインク技術はカーナビゲーションシステムにも活用されており、地図のドラッグ&ドロップ移動や出発地・目的地の設定、手書き入力などを実現しています。

上記の機能はすべて PC 上でシミュレートできます。

6. プロセスとスレッドの違いは何ですか? マルチスレッドを使用する理由 マルチスレッドはどのような状況に適していますか?

プロセスは実行中のプログラムであり、スレッドはプロセス内の 1 つ以上の実行ストリームです。マルチスレッドにより、複数のタスクを同時に実行できます。マルチスレッド テクノロジは、完了までに時間がかかる連続操作を実行する場合、またはネットワークまたは他の I/O デバイスからの応答を待つ場合に使用できます。

7. フォアグラウンド スレッドとバックグラウンド スレッドの違いと関係は何ですか? スレッドがフォアグラウンド スレッドに属するかバックグラウンド スレッドに属するかを判断するにはどうすればよいですか? スレッドをバックグラウンド スレッドとして設定するにはどうすればよいですか?

スレッドはフォアグラウンド スレッドまたはバックグラウンド スレッドのいずれかです。2 つの違いは、バックグラウンド スレッドはプロセスの終了に影響を与えないのに対し、フォアグラウンド スレッドはプロセスの終了に影響を与えることです。

8. 同期とは何ですか? なぜ同期が必要なのでしょうか? コード同期を簡単に実装するために C# にはどのようなステートメントが用意されていますか?

ステートメントを実行すると、そのステートメントが完了するまで後続のコードは実行されません。この実行方法を同期実行と呼びます。並行して実行される複数のスレッドが特定のリソースに同時にアクセスする場合、複数のスレッドの同期を維持する方法を検討する必要があります。同期の目的は、複数のスレッドが特定のリソースに同時にアクセスするときにデッドロックや競合の状況を防ぐことです。C# が提供する lock ステートメントを使用すると、コードの同期を簡単に実装できます。

9. スレッドプールとは何ですか? スレッド プールを使用する利点は何ですか?

スレッド プールは、バックグラウンドでタスクを実行するスレッドのコレクションです。利点は次のとおりです。たとえば、スレッドが実行のためにスレッド プールに入ることができない場合、そのスレッドはまず待機キューに入れられ、実行に使用するプロセッサが自動的に決定されます。スレッド プール内のスレッドであり、これらのスレッドの実行時に負荷分散の問題を自動的に調整します。さらに、スレッド プールは、メイン スレッドを占有したり、メイン スレッドでの後続の要求の処理を遅らせたりすることなく、要求されたタスクを常にバックグラウンドで非同期に処理します。

10. アプリケーションドメインとプロセス間の違いとつながりは何ですか?

プロセスには、アプリケーション ドメインを 1 つだけ含めることも、複数の分離されたアプリケーション ドメインを同時に含めることもできます。マルチプロセスはオペレーティングシステムレベルで使用される機能で、大量のリソースを消費し、詳細な制御が複雑になります。アプリケーションドメインは、アプリケーションレベルで使用される機能で、マルチプロセスを直接使用するよりも高速で、消費リソースが少なく、安全性が高くなります。プロセス管理を実現する、軽量なプロセス管理です。

11.エンコードとは何ですか? デコードとは何ですか? 文字がエンコードおよびデコードされるのはなぜですか? .NET Framework は文字エンコードとデコードのためにどのようなクラスを提供しますか?

文字列をバイト列に変換するプロセスはエンコードと呼ばれ、これらのバイトがネットワークの受信側に送信されると、受信側はバイト列を文字列に変換します。このプロセスはデコードと呼ばれます。

ネットワーク通信では、多くの場合、通信する双方が文字情報を伝達します。ただし、文字情報をネットワークの一方の端からもう一方の端に直接渡すことはできず、文字情報をネットワーク上で送信するには、まずバイト列に変換する必要があります。したがって、送信者はエンコードを実行する必要があり、対応する受信者はデコードを実行する必要があります。

Encoding クラスは通常、.NET Framework でエンコードとデコードを実装するために使用されます。Encoding クラスは System.Text 名前空間の下にあり、主に文字セットのエンコードとデコード、およびあるエンコード形式から別のエンコード形式への変換に使用されます。より詳細な要件がある場合は、エンコードとデコードに Encoding クラスと同じ名前空間にある Encoder クラスと Decoder クラスを使用することもできます。

12. .NET によって提供される、Stream クラスから継承するデータ ストリームとは何ですか?

ファイルストリーム(FileStream)、メモリストリーム(MemoryStream)、ネットワークストリーム(NetworkStream)、暗号化ストリーム(CryptoStream)。

13. 対称暗号化と非対称暗号化の特徴と実装原理を簡単に説明します。

対称暗号化:

(1) データの暗号化と復号化に同じキーを使用します。

(2) 秘密キー アルゴリズムは、一度に 1 データ ブロックずつブロック単位でデータを暗号化するため、データ ストリーミングをサポートします。

対称暗号化アルゴリズムの利点: 高い機密性、高速な暗号化および復号化速度、大量のデータの暗号化に適しています。

対称暗号化の欠点: 通信する双方の当事者が暗号化と復号化に同じキーと IV を使用するため、送信者は最初にキーと IV を受信者に渡す必要があります。攻撃者がキーと IV を傍受した場合、攻撃者はデータを復号化する方法を知っています。

非対称暗号化:

(1) 秘密にしておく必要がある秘密鍵と誰にでも公開できる公開鍵を使用します。公開キーで暗号化されたデータは秘密キーでのみ復号化でき、逆に、秘密キーで暗号化されたデータは公開キーでのみ復号化できます。

(2) 秘密鍵暗号アルゴリズムは可変長バッファを使用するため、ストリームは使用できません。

非対称暗号化の利点: 攻撃に対する脆弱性が低くなります。

非対称暗号化のデメリット: ストリームが使用できないため、大量のデータの暗号化には適していません。

14. デジタル署名とは何ですか? デジタル署名は何に使用されますか?

アプリケーションでは、デジタル署名を使用してデータ認証とデータ整合性検証を実装できます。データ認証は、データが秘密キーを保持している人物によって送信されたかどうかを検証することです。データ完全性検証は、データが送信中に変更されているかどうかを検証するために使用されます。

デジタル署名の目的: インターネット経由でファイルをダウンロードした後、ダウンロードしたファイルが元のファイルとまったく同じであるかどうかを検証します。つまり、通信する 2 つの当事者が、情報が第三者からのものではなく、相手方からのものであることを確認したい場合は、認証にデジタル署名を使用する必要があります。さらに、デジタル署名により、特定の当事者がメッセージが送信されたことを拒否することができなくなります。

15. async キーワードと await キーワードのみを含む非同期メソッドは、Task.Run で呼び出される非同期メソッドとどのように異なりますか?

async および await キーワードは、C# 5.0 によって提供される機能です。async および await キーワードのみを含む非同期メソッドは、新しいスレッドを作成せず、指定されたタスクを現在のスレッドで非同期的に実行することを意味します。Task.Run メソッドは、.NET Framework 4.5 によって提供される関数であり、別のスレッドを使用してスレッド プール内のタスクを実行します。

16.通常のメソッドと非同期メソッドをタスクとして実行する場合のメソッド呼び出しの違いは何ですか?

通常のメソッドは、Task.Run メソッドを使用して呼び出すか、Task クラスまたは Task<TResult> クラスのコンストラクターを使用して、Task インスタンスを明示的に作成して開始する必要があります。非同期メソッドは、Task.Run メソッドで呼び出す必要はありません。

17. Action デリゲートと Func デリゲートの違いは何ですか?

Action デリゲートは戻り値のないメソッド (0 ~ 16 の入力パラメーター、戻り値の型は void) をカプセル化し、Func デリゲートは戻り値のあるメソッド (0 ~ 16 の入力パラメーター、戻り値の型は TResult) をカプセル化します。 。

18. タスクを作成する方法は何通りありますか?

方法は4つあります。

(1) Task.Run メソッドを使用して暗黙的にタスクを作成および実行します。

(2) async および await キーワードを使用して、暗黙的に非同期タスクを作成します。

(3) WPF コントロールのスケジューラを使用して、暗黙的にタスクを作成および実行します。

(4) Task または Task<TResult> のコンストラクタを明示的に呼び出してタスクを作成します。

19. WPF アプリケーションで使用できるタイマーはいくつありますか?

3種類あります。

(1) System.Timers.Timer クラス。

(2)System.Windows.Threading.DispatcherTimer;

(3) System.Threading.Timer クラス。

20. タスクキャンセル機能を実現する仕組みを簡単に説明します。

System.Threading.paymentTokenSource は、キャンセル ソースと呼ばれるキャンセル通知を作成するために使用されます。

System.Threading.paymentToken 構造は、キャンセル トークンと呼ばれる、操作をキャンセルする必要があるという通知を伝達するために使用されます。

タスクを呼び出すコードは、CancelTokenSource クラスを使用して、タスクを割り当てる前にキャンセル ソースを作成できます。タスクを呼び出すコードでは、キャンセル ソースの Cancel メソッドを通じてキャンセル通知を発行できます。このメソッドは、キャンセル トークンの各コピーで IspaymentRequested プロパティを true に設定します。

タスクを実行しているメソッドはキャンセル通知を受信すると、実行を終了できます。

21。TPL はどのような並列メソッドをサポートしていますか?

TPL は、データ並列処理、タスク並列処理、および並列クエリ (PLINQ) をサポートします。

22。並列プログラミングにおけるパーティショニングの形式は何ですか?

範囲によるパーティション、ブロックによるパーティション、動的パーティション、カスタム パーティション。

23。Parallel ヘルパー クラスとは何ですか? 機能は何ですか?

ヘルパー クラスには、ParallelOptions、ParallelLoopState、ParallelLoopResult、 cancelToken、および cancelTokenSource が含まれます。

ParallelOptions クラスは、Parallel クラスのメソッドに操作オプションを提供するために使用されます。共通の属性には、 cancelToken、MaxDegreeOfParallelism、および TaskScheduler が含まれます。

ParallelLoopState クラスは、Parallel ループの反復を他の反復とやり取りするために使用されます。一般的に使用されるプロパティとメソッドは、IsExceptional プロパティ、IsStopped プロパティ、Break メソッド、Stop メソッドです。

ParallelLoopResult クラスは、Parallel ループの完了ステータスを提供するために使用されます。共通のプロパティには、IsCompleted、LowestBreakIteration が含まれます。

cancelTokenSource は、キャンセル ソースと呼ばれるキャンセル通知を作成するために使用されます。

CancelToken 構造体は、キャンセル トークンと呼ばれる、操作をキャンセルする必要があるという通知を伝達するために使用されます。

24。一般的に使用される同時コレクション クラスはいくつありますか?

ConcurrentBag<T>;ConcurrentQueue<T>;ConcurrentStack<T>;ConcurrentDictionary<TKey, TValue>。

25.Parallel.Invoke メソッドを使用する場合、Action が WPF インターフェイスと対話できるようにするには何に注意する必要がありますか?

デフォルトのタスク スケジューラを使用することはできませんが、並列オプションを設定してタスク スケジューラを WPF の現在の同期コンテキストに関連付けます。関連するコードは次のとおりです。

ParallelOptions オプション = 新しい ParallelOptions();

options.TaskScheduler = TaskScheduler.FromCurrentSynchronizationContext();

26.Web サービスと WCF の違いと関係を簡単に紹介します。

Webサービスは、データ交換形式としてXMLを使用したWebサーバー上に配置されるアプリケーションサービスであり、さまざまなクライアントプログラムから呼び出すことができるメソッドを公開できます。

WCF は、Microsoft が発表した SOA の考え方に準拠した分散アプリケーション技術フレームワークおよびプログラミング モデルであり、メッセージ通信の概念に基づいたランタイム サービス システムです。

Web サービスは WCF の一部にすぎません。WCF には、Web サービス以外にもさまざまなサービスが含まれています。

27. WCF サービスのホスティング方法と特徴を簡単に紹介します。

WCF サービスのホスティング方法には、IIS または WAS を使用した搬送、Windows サービスを使用した搬送、および自己ホスティングが含まれます。その特徴は以下の通りです。

(1) IIS または WAS を使用した持ち運び: これは最も一般的に使用されるホスティング方法であり、展開が簡単で便利であることが特徴です。

(2) Windows サービスを使用してホストされる: [WCF サービス ライブラリ] テンプレートを使用して作成された WCF サービスは、Windows プロセスを使用してホストされます。

(3) セルフホスティング: 開発者が独自のコードを記述して WCF をホスティングする作業を実装することを指します。利点は、柔軟に実装でき、必要な環境サポートが最小限であることです。欠点は、高度なホスト管理機能を実装するには独自のコードを作成する必要があることです。

28. サービス コントラクトとは何ですか? データ コントラクトとは何ですか? サービス コントラクトとデータ コントラクトをそれぞれ宣言するためにどのような特性が使用されますか?

サービス コントラクトは、WCF がクライアントにどのサービスを公開するかを示します。WCF サーバーは、サービス契約を通じて、操作方法、メッセージ交換モード、採用される通信プロトコル、およびシリアル化形式のコンテンツをクライアントに公開します。サービス コントラクトは、ServiceContract 属性と OperationContract 属性を使用して共同で宣言されます。

データ コントラクトは、メッセージにどのようなデータが含まれるか、つまり、どのデータが XML にシリアル化されてクライアントに送信できるかを記述します。データ コントラクトは、DataContract 属性と DataMember 属性を使用して共同で宣言されます。

29. C/SベースでHTTPアプリケーションを書く場合の実装技術は何ですか?それぞれの特徴は何ですか?

(1)。プラグイン可能なプロトコルを使用して実装

プラグ可能プロトコルは、WebRequest クラスと WebResponse クラスを使用して実装されます。これら 2 つのクラスは、特定の通信プロトコルに関連するさまざまなクラスの基本クラスであり、アップロードやダウンロードなどの基本的なメソッドを提供します。つまり、どの通信プロトコルが使用されても、これら 2 つのペアを使用して実装できます。

(2)。HttpWebRequest と HttpWebResponse を使用して実装します

HttpWebRequest クラスと HttpWebResponse クラスは HTTP 用に提供されており、それぞれ WebRequest クラスと WebResponse クラスを継承します。

(3).WCF で実装

WCF とタスクベースのプログラミング モデルを使用して HTTP アプリケーションをプログラミングすることは、サービス指向プログラミングで推奨されるアプローチです。

最初の 2 つの方法は従来のプログラミング モデルです。実際のプロジェクトで従来のプログラミング モデルを使用して実装すると、業務処理に加えて、負荷分散、ネットワーク監視、セキュリティなど、多くの詳細をプログラマー自身が完了する必要があります。 . 攻撃の管理、防止等 WCF を使用して実装する場合、プログラマはビジネス ロジックを処理するだけで済み、他の作業は WCF によって内部的に実行できます。

30. WCF クライアントとサーバー間のメッセージ交換モードは何ですか?

要求/応答モード、一方向モード、二重モード。

41. TCP の主な機能は何ですか?

(1) 1対1のコミュニケーション。通信当事者が TCP 接続を確立すると、接続中のどちらの当事者も相手方とデータを送受信できるようになります。各 TCP 接続はエンドポイントを 2 つだけ持つことができ、1 対 1 でのみ通信できます。

(2) 安全なシーケンシャル伝送。TCP 接続を介して送信されるデータは、データがエラー、損失、重複なく正確に受信者に到達することを保証でき、各データの到着順序はデータの送信順序と同じです。

(3) バイトストリームを通じてデータを送信します。TCP を使用してデータを送信する場合、データはバイト ストリームの形式で送信されます。

(4) 送信されるデータにはメッセージ境界がありません。

42.TCP のメッセージレス境界問題を解決する一般的な方法は何ですか?

(1) 固定長メッセージを送信します。

(2) メッセージ長をメッセージと一緒に送信します。

(3) 特殊なマーカーを使用してメッセージを区切ります。

43. タスクベースの非同期 TCP プログラミングと Thread による直接実装の主な違いを簡単に説明します。

Thread を直接使用して TCP プログラミングを実装する場合、マルチスレッドを目標として実装され、開発者自身がマルチスレッドを管理する必要があるため、開発者は実際のコードを作成する前に、マルチスレッド実装のすべての詳細に習熟する必要があります。 TCP アプリケーション。タスクベースの非同期 TCP プログラミングは、タスクを通じて TCP プログラミングを実装します。マルチタスクで実装すると、開発者がマルチスレッド、スレッド プール、リソースの競合、ロード バランシングなどのすべての技術的な実装の詳細に精通していなくても、迅速に実装できます。実際の TCP アプリケーションを作成すると、プログラムの堅牢性はマルチスレッドを直接使用するよりもはるかに高くなります。

44. WCF を使用して TCP サーバーおよびクライアント プログラムを作成するための一般的な手順を簡単に答えてください。

WCF を使用して TCP サーバー側アプリケーションを作成する一般的な手順は次のとおりです。

1) WPF アプリケーションを作成し、WCF サービスをプロジェクトに追加します。

2) WCF サービス インターフェイス ファイルでサーバーとクライアント間の通信用のプロトコルを定義し、サーバーに実装する必要があるプロトコル メソッドを実装します。

3) サーバー構成ファイルを変更し、WCF サービスを開始し、クライアントが呼び出して通信するのを待ちます。

4) 実際の状況に基づいて、WCF サービスを終了するかどうかを決定します。

WCF を使用して TCP クライアント アプリケーションを作成する一般的な手順は次のとおりです。

1) WPF アプリケーションを作成し、サービス参照を追加します。

2) クライアント側で実装する必要がある WCF サービス定義とプロトコル メソッドを実装します。

3) WCF サービスを呼び出してサーバーと通信します。

45. UDP と TCP の主な違いは何ですか?

UDP はシンプルなデータグラム指向のコネクションレス プロトコルで、高速ではありますが必ずしも信頼性の高い伝送サービスを提供するわけではありません。TCP と同様に、UDP も、基礎となる IP プロトコルに基づいて構築されたトランスポート層プロトコルです。UDP は TCP と比較して次のような特徴があります。

(1) UDP は 1 対 1 の通信だけでなく、1 対多の通信もサポートします。

(2) UDP の通信速度は TCP よりも高速です。

(3) UDP にはメッセージ境界があり、UDP を使用する場合はメッセージ境界の問題を考慮する必要はありません。

(4) UDP では、データの送受信の順序が一貫していることは保証されません。

(5) UDP は TCP ほど信頼性がありません。

46.放送とは何ですか? マルチキャストとは何ですか? 両者の違いは何ですか?

ブロードキャストとは、複数のデバイスに同時にメッセージを送信することを意味し、サブネット内のすべてのデバイスが送信者からのメッセージを受信できます。各ブロードキャスト メッセージには特別な IP アドレスが含まれています。ブロードキャスト メッセージ アドレスには、ローカル ブロードキャストとグローバル ブロードキャストの 2 種類があります。ローカル ブロードキャストは、サブネット内のすべてのデバイスにブロードキャスト メッセージを送信でき、他のネットワークはローカル ブロードキャストの影響を受けません。

マルチキャストとは、1 つのデバイスからローカル ネットワークまたはネットワーク全体内の選択されたデバイスのサブセット、つまり指定されたマルチキャスト グループに参加しているデバイスにメッセージを送信することです。

2 つの違い: ブロードキャストは、メッセージが配置されているサブネットにのみ送信でき、サブネット内のすべてのデバイスにメッセージを送信します。目的はなく、ネットワーク負荷が発生するだけでなく、大量のリソースを消費します。マルチキャストは、特定のマルチキャスト グループに参加しているマシンにメッセージを送信することであり、メッセージには目的があり、リソースの消費は多くありません。

47. UdpClient オブジェクトを使用してマルチキャスト グループに参加および脱退する手順を簡単に答えてください。

UDP プロトコルでは、特別な IP アドレスを使用してブロードキャストとマルチキャストが実装されます。特にマルチキャストは特別です。IPv4 の場合、マルチキャストは、224.0.0.0 ~ 239.255.255.255 のクラス D IP アドレス範囲内でのブロードキャストを指します。

マルチキャスト グループに参加するときは、まず UdpClient オブジェクトを作成し、次に JoinMutiCastGroup メソッドを使用してマルチキャスト グループに参加します。マルチキャスト グループを終了する場合は、UdpClient オブジェクトの DropMulticastGroup メソッドを使用してマルチキャスト グループを終了します。このパラメータは、マルチキャスト グループを終了する IPAddress オブジェクトを示します。

48. 簡単な答え: WCF と UDP を使用してマルチキャスト プログラムを作成する場合と、UdpClient クラスを使用する場合の主な違いは何ですか? これら 2 つの実装方法のそれぞれの長所と短所は何ですか?

UDP を使用してマルチキャスト プログラムを作成する場合は、特別な IP アドレスにメッセージを送信する必要があります。UdpClient クラスを使用してマルチキャスト プログラムを作成する場合、マルチキャスト送信者から送信されたデータを受信するには、特定のマルチキャスト グループに参加する必要があります。具体的な実装では、主に UdpClient クラスの JoinMutiCastGroup メソッドを使用してマルチキャスト グループに参加し、送信側は UdpClient オブジェクトの Send メソッドを使用してマルチキャスト アドレスにデータを送信し、受信側は UdpClient オブジェクトの Receive メソッドを使用して受信します。データ。マルチキャスト グループを終了するには、DropMulticastGroup メソッドを呼び出すだけです。

WCF と UDP を使用してマルチキャスト プログラムを作成する場合は、WCF サービス定義を使用して通信プロトコルを実装してから、メッセージをマルチキャスト アドレスに送信する必要があります。これにより、WCF サービス定義を実装し、通信プロトコルを実装するクライアントがマルチキャスト アドレスにメッセージを送信できます。メッセージを受け取ります。

UdpClient クラスを使用して実装する場合、主にマルチスレッドとマルチタスクで実装されるため、理解しやすいですが、実装の詳細を考慮する必要があります。WCF モードは、UDP マルチキャスト プログラミングをさらにカプセル化し、プログラミングの複雑さを軽減し、分散環境での UDP 通信プログラムにより適しています。

49.トランザクション キューと非トランザクション キューの主な違いを簡単に説明します。

トランザクションは、データの正確性と整合性を損なうことなく、データの整合性とビジネス ロジックの一貫性を確保することを目的として、単一の論理ジョブに対して実行される一連の分割できない操作です。トランザクションを使用すると、一連の操作をグループ化できます。1 つの操作が失敗すると、すべての操作が失敗します。

非トランザクション キューは一時的なもので、メッセージはメモリに保存され、トランザクションはメッセージに対する操作の保護には使用されません。サーバーに問題が発生したり、呼び出し元に例外が発生したりすると、メッセージは失われます。

トランザクション キューは永続的で、メッセージはディスクに保存されます。サーバーがクラッシュ、再起動、またはクラッシュした場合でも、システムが回復した後にメッセージを読み取ることができます。同時に、メッセージの発行、取得、削除はすべて環境トランザクションの範囲内であるため、メッセージの信頼性が保証されます。

50.MSMQ を使用して二重通信を実現するにはどうすればよいですか?

WCF の既定のキュー バインドはキューを使用した二重通信をサポートしていないため、WCF と MSMQ がバインドされている場合、すべてのサービス操作は一方向である必要があるため、MSMQ は二重通信をサポートしません。MSMQ を使用して二重通信を実現したい場合は、2 つの一方向プロトコルを使用して解決できます。基本的な方法は次のとおりです。

サービス契約もクライアント上で定義および実装され、サーバーはクライアントが提供するサービスをプロキシ経由で呼び出すことができます。このとき、サーバがクライアントとなり、クライアントがサーバとなり、二重通信と同様の機能を実現する。

51. デッドレターキューとウイルスメッセージキューの使用法を簡単に説明します。

デッドレター キューは、配信に失敗したキュー内のメッセージを記録するために使用される特別なキューです。メッセージ配信の失敗の原因としては、ネットワーク障害、キューの削除、キューがいっぱい、認証の失敗、または期限内に配信できなかったことなどが考えられます。メッセージの存続期間 (TTL)。原因は次のとおりです。ターゲットキューに送信するメッセージの失敗を記録するために、失敗したメッセージはデッドレターキューに送信されます。デッドレターキューメッセージングは​​配信失敗を処理し、メッセージが宛先キューに配信されなかった場合に確実に通知されます。

ウイルス メッセージ キューは、アプリケーションへの配信試行の最大数を超えたことを記録するメッセージ キューです。ウイルス メッセージ キューを使用すると、サービスがメッセージの読み取り時に処理できない問題を解決したり、メッセージの読み取り元のトランザクションが終了したときにキューから繰り返し読み取られるメッセージの配信を終了したりすることができます。

おすすめ

転載: blog.csdn.net/wyd_333/article/details/131724737