.NET でのネットワーク プログラミング

.NET には、階層化された拡張可能なインターネット サービスのマネージド実装が用意されており、お客様のアプリにすばやく簡単に統合できます。 プラグ可能なプロトコルに基づいてネットワーク アプリを構築し、さまざまなインターネット プロトコルを自動的に活用することも、またはクロスプラットフォーム ソケット インターフェイスのマネージド実装を使って、ソケット レベルでネットワークを操作することもできます。

インターネット アプリ

インターネット アプリは 2 種類に大別することができます。すなわち、情報を要求するクライアント アプリと、クライアントからの情報の要求に応答するサーバー アプリです。 著名なクライアント/サーバー型のインターネット アプリは World Wide Web です。そこでは人々がブラウザーを使って、世界中の Web サーバーに格納されているドキュメントやその他のデータにアクセスします。

アプリは、これらの役割の 1 つだけに限定されるわけではありません。たとえば、使い慣れた中間層アプリ サーバーは、別のサーバーからデータを要求することでクライアントからの要求に応答します。この場合、サーバーとクライアントの両方として機能します。

クライアント アプリは、要求するインターネット リソースと、要求と応答に使用するための通信プロトコルを識別することによって、要求を実行します。 必要に応じて、クライアントは要求を完了するために必要な、プロキシの場所や認証情報 (ユーザー名、パスワードなど) などの追加データも提供します。 要求が作成されると、要求をサーバーに送信できます。

リソースの識別

.NET は、Uniform Resource Identifier (URI) を使って、要求するインターネット リソースと通信プロトコルを識別します。 URI は、少なくとも 3 つ、場合によっては 4 つのフラグメントで構成されています。すなわち、スキーム識別子 (要求と応答の通信プロトコルを識別します)、サーバー識別子 (ドメイン ネーム システム (DNS) ホスト名またはインターネット上のサーバーを一意に識別する TCP アドレスのいずれかで構成されます)、パス識別子 (サーバー上で要求された情報を見つけます)、省略可能なクエリ文字列 (クライアントからサーバーに情報を渡します) です。

System.Uri 型を Uniform Resource Identifier (URI) の表現として使用し、URI の各パーツに簡単にアクセスできます。 Uri インスタンスを作成するには、文字列を渡すことができます。

const string uriString =
    "https://learn.microsoft.com/en-us/dotnet/path?key=value#bookmark";

Uri canonicalUri = new(uriString);
Console.WriteLine(canonicalUri.Host);
Console.WriteLine(canonicalUri.PathAndQuery);
Console.WriteLine(canonicalUri.Fragment);
// Sample output:
//     learn.microsoft.com
//     /en-us/dotnet/path?key=value
//     #bookmark

Uri クラスでは、RCF 3986 に従って検証と正規化を自動的に実行します。 これらの検証と正規化の規則は、URI の形式が適切であり、URI が正規形式であることを確認するために使用されます。

関連項目